From 000dea82a2ba5e969006355d5651a08be5882e18 Mon Sep 17 00:00:00 2001 From: dcode Date: Mon, 18 Nov 2019 06:19:40 +0100 Subject: [PATCH 1/2] Try-catch experiment --- package-lock.json | 6 +- package.json | 2 +- src/builtins.ts | 1 + src/common.ts | 1 + src/compiler.ts | 171 +- src/flow.ts | 5 + src/module.ts | 23 +- src/program.ts | 7 +- src/types.ts | 59 +- tests/binaryen/try-catch.js | 39 + tests/compiler/builtins.optimized.wat | 6 +- tests/compiler/builtins.untouched.wat | 8 +- tests/compiler/call-super.optimized.wat | 20 +- tests/compiler/call-super.untouched.wat | 20 +- tests/compiler/constructor.optimized.wat | 18 +- tests/compiler/constructor.untouched.wat | 20 +- tests/compiler/exports.optimized.wat | 8 +- tests/compiler/exports.untouched.wat | 8 +- .../compiler/features/exception-handling.json | 9 + .../features/exception-handling.optimized.wat | 116 ++ tests/compiler/features/exception-handling.ts | 7 + .../features/exception-handling.untouched.wat | 1621 +++++++++++++++++ tests/compiler/getter-call.optimized.wat | 2 +- tests/compiler/getter-call.untouched.wat | 2 +- tests/compiler/infer-generic.optimized.wat | 2 +- tests/compiler/infer-generic.untouched.wat | 2 +- tests/compiler/inlining.optimized.wat | 4 +- tests/compiler/inlining.untouched.wat | 4 +- tests/compiler/number.optimized.wat | 6 +- tests/compiler/number.untouched.wat | 8 +- .../optional-typeparameters.optimized.wat | 4 +- .../optional-typeparameters.untouched.wat | 4 +- tests/compiler/rc/global-init.optimized.wat | 62 +- tests/compiler/rc/global-init.untouched.wat | 45 +- tests/compiler/rc/local-init.optimized.wat | 50 +- tests/compiler/rc/local-init.untouched.wat | 47 +- .../rc/logical-and-mismatch.optimized.wat | 50 +- .../rc/logical-and-mismatch.untouched.wat | 47 +- .../rc/logical-or-mismatch.optimized.wat | 50 +- .../rc/logical-or-mismatch.untouched.wat | 47 +- tests/compiler/rc/rereturn.optimized.wat | 50 +- tests/compiler/rc/rereturn.untouched.wat | 47 +- .../rc/ternary-mismatch.optimized.wat | 50 +- .../rc/ternary-mismatch.untouched.wat | 47 +- tests/compiler/resolve-access.optimized.wat | 4 +- tests/compiler/resolve-access.untouched.wat | 6 +- tests/compiler/resolve-binary.optimized.wat | 10 +- tests/compiler/resolve-binary.untouched.wat | 12 +- .../resolve-elementaccess.optimized.wat | 8 +- .../resolve-elementaccess.untouched.wat | 10 +- .../resolve-function-expression.untouched.wat | 2 +- tests/compiler/resolve-nested.optimized.wat | 4 +- tests/compiler/resolve-nested.untouched.wat | 4 +- tests/compiler/resolve-new.optimized.wat | 2 +- tests/compiler/resolve-new.untouched.wat | 2 +- .../resolve-propertyaccess.optimized.wat | 2 +- .../resolve-propertyaccess.untouched.wat | 4 +- tests/compiler/resolve-ternary.optimized.wat | 66 +- tests/compiler/resolve-ternary.untouched.wat | 63 +- tests/compiler/resolve-unary.optimized.wat | 4 +- tests/compiler/resolve-unary.untouched.wat | 6 +- .../retain-release-sanity.optimized.wat | 74 +- .../retain-release-sanity.untouched.wat | 65 +- tests/compiler/retain-release.optimized.wat | 4 +- tests/compiler/retain-release.untouched.wat | 4 +- tests/compiler/rt/instanceof.optimized.wat | 48 +- tests/compiler/rt/instanceof.untouched.wat | 46 +- tests/compiler/rt/stub-realloc.optimized.wat | 6 +- tests/compiler/rt/stub-realloc.untouched.wat | 4 +- tests/compiler/runtime-full.optimized.wat | 62 +- tests/compiler/runtime-full.untouched.wat | 45 +- tests/compiler/runtime-stub.optimized.wat | 2 +- tests/compiler/runtime-stub.untouched.wat | 4 +- .../compiler/std/array-literal.optimized.wat | 82 +- .../compiler/std/array-literal.untouched.wat | 75 +- tests/compiler/std/array.optimized.wat | 362 ++-- tests/compiler/std/array.untouched.wat | 389 ++-- tests/compiler/std/arraybuffer.optimized.wat | 68 +- tests/compiler/std/arraybuffer.untouched.wat | 59 +- tests/compiler/std/dataview.optimized.wat | 66 +- tests/compiler/std/dataview.untouched.wat | 49 +- tests/compiler/std/date.optimized.wat | 2 +- tests/compiler/std/date.untouched.wat | 2 +- tests/compiler/std/libm.optimized.wat | 4 +- tests/compiler/std/libm.untouched.wat | 4 +- tests/compiler/std/map.optimized.wat | 82 +- tests/compiler/std/map.untouched.wat | 85 +- tests/compiler/std/math.optimized.wat | 4 +- tests/compiler/std/math.untouched.wat | 4 +- tests/compiler/std/new.optimized.wat | 2 +- tests/compiler/std/new.untouched.wat | 2 +- .../compiler/std/object-literal.optimized.wat | 6 +- .../compiler/std/object-literal.untouched.wat | 6 +- .../std/operator-overloading.optimized.wat | 6 +- .../std/operator-overloading.untouched.wat | 6 +- tests/compiler/std/set.optimized.wat | 82 +- tests/compiler/std/set.untouched.wat | 85 +- tests/compiler/std/static-array.optimized.wat | 8 +- tests/compiler/std/static-array.untouched.wat | 8 +- .../std/string-encoding.optimized.wat | 62 +- .../std/string-encoding.untouched.wat | 45 +- tests/compiler/std/string.optimized.wat | 60 +- tests/compiler/std/string.untouched.wat | 85 +- tests/compiler/std/symbol.optimized.wat | 4 +- tests/compiler/std/symbol.untouched.wat | 4 +- tests/compiler/std/typedarray.optimized.wat | 236 +-- tests/compiler/std/typedarray.untouched.wat | 237 +-- tests/compiler/typeof.optimized.wat | 2 +- tests/compiler/typeof.untouched.wat | 2 +- tests/features.json | 8 + 110 files changed, 4334 insertions(+), 1337 deletions(-) create mode 100644 tests/binaryen/try-catch.js create mode 100644 tests/compiler/features/exception-handling.json create mode 100644 tests/compiler/features/exception-handling.optimized.wat create mode 100644 tests/compiler/features/exception-handling.ts create mode 100644 tests/compiler/features/exception-handling.untouched.wat diff --git a/package-lock.json b/package-lock.json index f2ab0bc590..a534c88894 100644 --- a/package-lock.json +++ b/package-lock.json @@ -567,9 +567,9 @@ "dev": true }, "binaryen": { - "version": "89.0.0-nightly.20191113", - "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-89.0.0-nightly.20191113.tgz", - "integrity": "sha512-scODswmj6Xf/Adjy1PRsjf8fHxpIIUYpH7HjKUaZ/RdZYjqB1Zq3X4izpLfcK+hKGNah92DpAJ3i/adEayMe9g==" + "version": "89.0.0-nightly.20191116", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-89.0.0-nightly.20191116.tgz", + "integrity": "sha512-UJ0WGQbRX4yzyXnk0Ti7PU7YTHPsiGoLroGT8qtxw6UATpmJmiNOjLw4tBLjXxGeg3Kl1MWv+Fe6eCGe7gPHkg==" }, "bluebird": { "version": "3.7.1", diff --git a/package.json b/package.json index d519f6ad2f..45cc816f07 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "url": "https://github.com/AssemblyScript/assemblyscript/issues" }, "dependencies": { - "binaryen": "89.0.0-nightly.20191113", + "binaryen": "89.0.0-nightly.20191116", "long": "^4.0.0", "source-map-support": "^0.5.16", "ts-node": "^6.2.0", diff --git a/src/builtins.ts b/src/builtins.ts index 0578325ec5..9a4ad16765 100644 --- a/src/builtins.ts +++ b/src/builtins.ts @@ -905,6 +905,7 @@ export function compileCall( case TypeKind.USIZE: { value = "usize"; break; } case TypeKind.V128: { value = "v128"; break; } case TypeKind.ANYREF: { value = "anyref"; break; } + case TypeKind.EXNREF: { value = "exnref"; break; } default: assert(false); case TypeKind.VOID: { value = "void"; break; } } diff --git a/src/common.ts b/src/common.ts index 4c8106a25a..734e1ad622 100644 --- a/src/common.ts +++ b/src/common.ts @@ -198,6 +198,7 @@ export namespace CommonSymbols { export const Uint64Array = "Uint64Array"; export const Float32Array = "Float32Array"; export const Float64Array = "Float64Array"; + export const Error = "Error"; // runtime export const abort = "abort"; export const pow = "pow"; diff --git a/src/compiler.ts b/src/compiler.ts index 161bd21b8f..8077316221 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -28,6 +28,8 @@ import { ExpressionId, FunctionTypeRef, GlobalRef, + FeatureFlags, + EventRef, getExpressionId, getExpressionType, getConstValueI32, @@ -41,7 +43,6 @@ import { getLocalGetIndex, isLocalTee, getLocalSetIndex, - FeatureFlags, needsExplicitUnreachable, getLocalSetValue } from "./module"; @@ -307,6 +308,8 @@ export class Compiler extends DiagnosticEmitter { runtimeFeatures: RuntimeFeatures = RuntimeFeatures.NONE; /** Expressions known to have skipped an autorelease. Usually function returns. */ skippedAutoreleases: Set = new Set(); + /** Registered event types. */ + events: Map = new Map(); /** Compiles a {@link Program} to a {@link Module} using the specified options. */ static compile(program: Program, options: Options | null = null): Module { @@ -1124,6 +1127,21 @@ export class Compiler extends DiagnosticEmitter { return typeRef; } + /** Either reuses or creates the event type matching the specified name. */ + ensureEventType( + name: string, + parameterTypes: Type[] | null, + returnType: Type = Type.void + ): EventRef { + var events = this.events; + if (events.has(name)) return events.get(name)!; + var module = this.module; + var funcType = this.ensureFunctionType(parameterTypes, returnType); + var eventType = module.addEvent(name, 0, funcType); + events.set(name, eventType); + return eventType; + } + /** Compiles the body of a function within the specified flow. */ compileFunctionBody( /** Function to compile. */ @@ -2428,9 +2446,15 @@ export class Compiler extends DiagnosticEmitter { return currentBlock; } + makeThrow(expr: ExpressionRef): ExpressionRef { + this.ensureEventType("exception", [ this.options.usizeType ]); + return this.module.throw("exception", [ expr ]); + } + compileThrowStatement( statement: ThrowStatement ): ExpressionRef { + var module = this.module; var flow = this.currentFlow; // Remember that this branch throws @@ -2439,28 +2463,151 @@ export class Compiler extends DiagnosticEmitter { var stmts = new Array(); this.finishAutoreleases(flow, stmts); - // TODO: requires exception-handling spec. - var value = statement.value; - var message: Expression | null = null; - if (value.kind == NodeKind.NEW) { - let newArgs = (value).arguments; - if (newArgs.length) message = newArgs[0]; // FIXME: naively assumes type string + if (this.options.hasFeature(Feature.EXCEPTION_HANDLING)) { + let thrown = this.compileExpression(statement.value, Type.auto, Constraints.WILL_RETAIN | Constraints.MUST_WRAP); + let thrownType = this.currentType; + if (!( + thrownType.isManaged && + assert(thrownType.classReference).extends(this.program.errorInstance.prototype)) + ) { + this.error( + DiagnosticCode.Operation_0_cannot_be_applied_to_type_1, + statement.value.range, "throw", thrownType.toString() + ); + stmts.push(module.unreachable()); + } else { + let expr = this.makeThrow(thrown); + if (!this.skippedAutoreleases.has(thrown)) expr = this.makeRetain(expr); + stmts.push(expr); + } + } else { + let value = statement.value; + let message: Expression | null = null; + if (value.kind == NodeKind.NEW) { + let newArgs = (value).arguments; + if (newArgs.length) message = newArgs[0]; // FIXME: naively assumes type string + } + stmts.push(compileAbort(this, message, statement)); } - stmts.push(compileAbort(this, message, statement)); - return flatten(this.module, stmts, NativeType.None); + this.currentType = Type.void; + return flatten(module, stmts, NativeType.None); + } + + makeCatch(): ExpressionRef { + var module = this.module; + this.ensureEventType("exception", [ this.options.usizeType ], Type.void); + this.currentFlow.pushBreakLabel(); + return module.block("l", [ + module.rethrow( + module.br_on_exn("l", "exception", module.pop(NativeType.Exnref)) + ) + ], this.options.nativeSizeType); } compileTryStatement( statement: TryStatement ): ExpressionRef { - // TODO: can't yet support something like: try { return ... } finally { ... } - // worthwhile to investigate lowering returns to block results (here)? + var module = this.module; + + if (this.options.hasFeature(Feature.EXCEPTION_HANDLING)) { + + // TODO: finally has various edge cases, for example when returning from + // a finally block or even executing when throwing/returning in try/catch + let finallyStatements = statement.finallyStatements; + if (finallyStatements) { + this.error( + DiagnosticCode.Not_implemented, + statement.range + ); + return module.unreachable(); + } + + let errorType = this.program.errorInstance.type; + let outerFlow = this.currentFlow; + + let tryFlow = outerFlow.fork(); + this.currentFlow = tryFlow; + let tryStmts = this.compileStatements(statement.statements); + if (!tryFlow.is(FlowFlags.TERMINATES)) { + this.performAutoreleases(tryFlow, tryStmts); + } + tryFlow.freeScopedLocals(); + + let catchFlow = outerFlow.fork(); + this.currentFlow = catchFlow; + let breakLabel = "catch|" + outerFlow.pushBreakLabel(); + let exnTemp = catchFlow.getTempLocal(Type.exnref); + let catchStmts = new Array(); + catchStmts.push( + module.local_set(exnTemp.index, + module.pop(NativeType.Exnref) + ) + ); + let caughtExpr = module.block(breakLabel, [ + module.rethrow( + module.br_on_exn(breakLabel, "exception", + module.local_get(exnTemp.index, NativeType.Exnref) + ) + ), + ], errorType.toNativeType()); + let catchStatements = statement.catchStatements; + if (catchStatements) { + let catchVariable = statement.catchVariable; + if (catchVariable) { + let temp = catchFlow.addScopedLocal(catchVariable.text, errorType); + catchStmts.push( + module.local_set(temp.index, caughtExpr) + ); + catchFlow.setLocalFlag(temp.index, LocalFlags.RETAINED); + } else { + catchStmts.push( + module.drop(caughtExpr) + ); + } + this.compileStatements(catchStatements, false, catchStmts); + if (!catchFlow.is(FlowFlags.TERMINATES)) { + this.performAutoreleases(catchFlow, catchStmts); + } + catchFlow.freeScopedLocals(); + } else { + catchStmts.push( + module.drop(caughtExpr) + ); + } + catchFlow.freeTempLocal(exnTemp); + outerFlow.inheritMutual(tryFlow, catchFlow); + // TODO: breaks? + + // if (!outerFlow.is(FlowFlags.TERMINATES)) { + // let finallyStatements = statement.finallyStatements; + // if (finallyStatements) { + // let finallyFlow = outerFlow.fork(); + // this.currentFlow = finallyFlow; + // this.compileStatements(finallyStatements, false, WRONGcatchStmts); + // if (!finallyFlow.is(FlowFlags.TERMINATES)) { + // this.performAutoreleases(finallyFlow, WRONGcatchStmts); + // } + // finallyFlow.freeScopedLocals(); + // outerFlow.inherit(finallyFlow); + // } + // } + + this.currentFlow = outerFlow; + let ret = module.try( + flatten(module, tryStmts, NativeType.None), + flatten(module, catchStmts, NativeType.None) + ); + outerFlow.popBreakLabel(); + this.currentType = Type.void; + return ret; + } + this.error( DiagnosticCode.Not_implemented, statement.range ); - return this.module.unreachable(); + return module.unreachable(); } /** Compiles a variable statement. Returns `0` if an initializer is not necessary. */ diff --git a/src/flow.ts b/src/flow.ts index df14c84452..ea533f7e9a 100644 --- a/src/flow.ts +++ b/src/flow.ts @@ -325,6 +325,7 @@ export class Flow { case NativeType.F64: { temps = parentFunction.tempF64s; break; } case NativeType.V128: { temps = parentFunction.tempV128s; break; } case NativeType.Anyref: { temps = parentFunction.tempAnyrefs; break; } + case NativeType.Exnref: { temps = parentFunction.tempExnrefs; break; } default: throw new Error("concrete type expected"); } var local: Local; @@ -400,6 +401,10 @@ export class Flow { temps = parentFunction.tempAnyrefs || (parentFunction.tempAnyrefs = []); break; } + case NativeType.Exnref: { + temps = parentFunction.tempExnrefs || (parentFunction.tempExnrefs = []); + break; + } default: throw new Error("concrete type expected"); } assert(local.index >= 0); diff --git a/src/module.ts b/src/module.ts index 00e9e73d56..ec4f0ad991 100644 --- a/src/module.ts +++ b/src/module.ts @@ -493,7 +493,7 @@ export class Module { name: string, result: NativeType, paramTypes: NativeType[] | null - ): FunctionRef { + ): FunctionTypeRef { var cStr = this.allocStringCached(name); var cArr = allocI32Array(paramTypes); try { @@ -1002,6 +1002,13 @@ export class Module { return _BinaryenAddEvent(this.ref, cStr, attribute, type); } + getEvent( + name: string + ): EventRef { + var cStr = this.allocStringCached(name); + return _BinaryenGetEvent(this.ref, cStr); + } + addFunction( name: string, type: FunctionTypeRef, @@ -1700,6 +1707,13 @@ export function getHostName(expr: ExpressionRef): string | null { return readString(_BinaryenHostGetNameOperand(expr)); } +// function types + +export function getFunctionTypeName(ftype: FunctionTypeRef): string { + var cstr = assert(_BinaryenFunctionTypeGetName(ftype)); + return assert(readString(cstr)); +} + // functions export function getFunctionBody(func: FunctionRef): ExpressionRef { @@ -1722,6 +1736,13 @@ export function getFunctionResultType(func: FunctionRef): NativeType { return _BinaryenFunctionGetResult(func); } +// events + +export function getEventName(event: EventRef): string { + var cStr = assert(_BinaryenEventGetName(event)); + return assert(readString(cStr)); +} + export class Relooper { module: Module; diff --git a/src/program.ts b/src/program.ts index 190fd53f04..f0ab190914 100644 --- a/src/program.ts +++ b/src/program.ts @@ -439,6 +439,8 @@ export class Program extends DiagnosticEmitter { f64ArrayPrototype: ClassPrototype; /** String instance reference. */ stringInstance: Class; + /** Error instance reference. */ + errorInstance: Class; /** Abort function reference, if not explicitly disabled. */ abortInstance: Function | null; @@ -856,7 +858,7 @@ export class Program extends DiagnosticEmitter { } } - // register ArrayBuffer (id=0), String (id=1), ArrayBufferView (id=2) + // register ArrayBuffer (id=0), String (id=1), ArrayBufferView (id=2), Error (id=3) assert(this.nextClassId == 0); this.arrayBufferInstance = this.requireClass(CommonSymbols.ArrayBuffer); assert(this.arrayBufferInstance.id == 0); @@ -864,6 +866,8 @@ export class Program extends DiagnosticEmitter { assert(this.stringInstance.id == 1); this.arrayBufferViewInstance = this.requireClass(CommonSymbols.ArrayBufferView); assert(this.arrayBufferViewInstance.id == 2); + this.errorInstance = this.requireClass(CommonSymbols.Error); + assert(this.errorInstance.id == 3); // register classes backing basic types this.registerWrapperClass(Type.i8, CommonSymbols.I8); @@ -2901,6 +2905,7 @@ export class Function extends TypedElement { tempF64s: Local[] | null = null; tempV128s: Local[] | null = null; tempAnyrefs: Local[] | null = null; + tempExnrefs: Local[] | null = null; // used by flows to keep track of break labels nextBreakId: i32 = 0; diff --git a/src/types.ts b/src/types.ts index abf42c8458..72de7e3e08 100644 --- a/src/types.ts +++ b/src/types.ts @@ -63,6 +63,8 @@ export const enum TypeKind { /** A host reference. */ ANYREF, + /** An exception reference. */ + EXNREF, // other @@ -341,15 +343,23 @@ export class Type { /** Converts this type to its respective native type. */ toNativeType(): NativeType { switch (this.kind) { - default: return NativeType.I32; + default: assert(false); + case TypeKind.I8: + case TypeKind.I16: + case TypeKind.I32: + case TypeKind.U8: + case TypeKind.U16: + case TypeKind.U32: + case TypeKind.BOOL: return NativeType.I32; + case TypeKind.ISIZE: + case TypeKind.USIZE: if (this.size != 64) return NativeType.I32; case TypeKind.I64: case TypeKind.U64: return NativeType.I64; - case TypeKind.ISIZE: - case TypeKind.USIZE: return this.size == 64 ? NativeType.I64 : NativeType.I32; case TypeKind.F32: return NativeType.F32; case TypeKind.F64: return NativeType.F64; case TypeKind.V128: return NativeType.V128; case TypeKind.ANYREF: return NativeType.Anyref; + case TypeKind.EXNREF: return NativeType.Exnref; case TypeKind.VOID: return NativeType.None; } } @@ -357,9 +367,14 @@ export class Type { /** Converts this type to its native `0` value. */ toNativeZero(module: Module): ExpressionRef { switch (this.kind) { - case TypeKind.ANYREF: - case TypeKind.VOID: assert(false); - default: return module.i32(0); + default: assert(false); + case TypeKind.I8: + case TypeKind.I16: + case TypeKind.I32: + case TypeKind.U8: + case TypeKind.U16: + case TypeKind.U32: + case TypeKind.BOOL: return module.i32(0); case TypeKind.ISIZE: case TypeKind.USIZE: if (this.size != 64) return module.i32(0); case TypeKind.I64: @@ -373,10 +388,14 @@ export class Type { /** Converts this type to its native `1` value. */ toNativeOne(module: Module): ExpressionRef { switch (this.kind) { - case TypeKind.V128: - case TypeKind.ANYREF: - case TypeKind.VOID: assert(false); - default: return module.i32(1); + default: assert(false); + case TypeKind.I8: + case TypeKind.I16: + case TypeKind.I32: + case TypeKind.U8: + case TypeKind.U16: + case TypeKind.U32: + case TypeKind.BOOL: return module.i32(1); case TypeKind.ISIZE: case TypeKind.USIZE: if (this.size != 64) return module.i32(1); case TypeKind.I64: @@ -389,10 +408,13 @@ export class Type { /** Converts this type to its native `-1` value. */ toNativeNegOne(module: Module): ExpressionRef { switch (this.kind) { - case TypeKind.V128: - case TypeKind.ANYREF: - case TypeKind.VOID: assert(false); - default: return module.i32(-1); + default: assert(false); + case TypeKind.I8: + case TypeKind.I16: + case TypeKind.I32: + case TypeKind.U8: + case TypeKind.U16: + case TypeKind.U32: return module.i32(-1); case TypeKind.ISIZE: case TypeKind.USIZE: if (this.size != 64) return module.i32(-1); case TypeKind.I64: @@ -405,6 +427,7 @@ export class Type { /** Converts this type to its signature string. */ toSignatureString(): string { switch (this.kind) { + default: assert(false); // same naming scheme as Binaryen case TypeKind.I8: case TypeKind.U8: @@ -421,10 +444,9 @@ export class Type { case TypeKind.F64: return "d"; case TypeKind.V128: return "V"; case TypeKind.ANYREF: return "a"; + case TypeKind.EXNREF: return "e"; case TypeKind.VOID: return "v"; - default: assert(false); } - return "i"; } // Types @@ -559,6 +581,11 @@ export class Type { TypeFlags.REFERENCE, 0 ); + /** An internal expression reference. */ + static readonly exnref: Type = new Type(TypeKind.EXNREF, + TypeFlags.REFERENCE, 0 + ); + /** No return type. */ static readonly void: Type = new Type(TypeKind.VOID, TypeFlags.NONE, 0); diff --git a/tests/binaryen/try-catch.js b/tests/binaryen/try-catch.js new file mode 100644 index 0000000000..cc49f73fb6 --- /dev/null +++ b/tests/binaryen/try-catch.js @@ -0,0 +1,39 @@ +var binaryen = require("binaryen"); +var mod = binaryen.parseText(` +(module + (event $exception (attr 0) (param i32)) + (func $test + (local $0 exnref) + (try + (throw $exception + (i32.const 1) + ) + (catch + (local.set $0 + (exnref.pop) + ) + (drop + (block $catch|0 (result i32) + (rethrow + (br_on_exn $catch|0 $exception + (local.get $0) + ) + ) + ) + ) + ) + ) + ) + (export $test $test) +) +`); +mod.setFeatures(binaryen.Features.ExceptionHandling); +if (!mod.validate()) console.log(":-("); +else console.log(mod.emitText()); + +binaryen.setOptimizeLevel(3); // assertion hit if > 2, different one if == 4 +binaryen.setShrinkLevel(0); +mod.optimize(); + +if (!mod.validate()) console.log(":-("); +else console.log(mod.emitText()); diff --git a/tests/compiler/builtins.optimized.wat b/tests/compiler/builtins.optimized.wat index 12067737ed..bfbee10782 100644 --- a/tests/compiler/builtins.optimized.wat +++ b/tests/compiler/builtins.optimized.wat @@ -631,9 +631,9 @@ i32.const 5 f64.const 0 f64.const 0 - f64.const 12 - f64.const 23 - f64.const 23 + f64.const 13 + f64.const 24 + f64.const 24 call $~lib/builtins/trace i32.const 176 i32.const 176 diff --git a/tests/compiler/builtins.untouched.wat b/tests/compiler/builtins.untouched.wat index 969e412e64..02dbc8518f 100644 --- a/tests/compiler/builtins.untouched.wat +++ b/tests/compiler/builtins.untouched.wat @@ -1568,11 +1568,11 @@ local.set $0 i32.const 0 local.set $1 - i32.const 12 + i32.const 13 local.set $6 - i32.const 23 + i32.const 24 local.set $7 - i32.const 23 + i32.const 24 local.set $8 i32.const 104 i32.const 5 @@ -1612,7 +1612,7 @@ unreachable end local.get $6 - i32.const 12 + i32.const 13 i32.eq i32.eqz if diff --git a/tests/compiler/call-super.optimized.wat b/tests/compiler/call-super.optimized.wat index ad00d717d7..77dc8e5a28 100644 --- a/tests/compiler/call-super.optimized.wat +++ b/tests/compiler/call-super.optimized.wat @@ -104,7 +104,7 @@ i32.eqz if i32.const 4 - i32.const 3 + i32.const 4 call $~lib/rt/stub/__alloc local.set $0 end @@ -128,7 +128,7 @@ (func $call-super/B#constructor (; 4 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 8 - i32.const 4 + i32.const 5 call $~lib/rt/stub/__alloc call $call-super/A#constructor local.tee $0 @@ -191,13 +191,13 @@ (func $call-super/D#constructor (; 6 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 8 - i32.const 6 + i32.const 7 call $~lib/rt/stub/__alloc local.tee $0 i32.eqz if i32.const 4 - i32.const 5 + i32.const 6 call $~lib/rt/stub/__alloc local.set $0 end @@ -266,7 +266,7 @@ i32.eqz if i32.const 4 - i32.const 7 + i32.const 8 call $~lib/rt/stub/__alloc local.set $0 end @@ -290,7 +290,7 @@ (func $call-super/test3 (; 9 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 8 - i32.const 8 + i32.const 9 call $~lib/rt/stub/__alloc call $call-super/E#constructor local.tee $0 @@ -324,13 +324,13 @@ (func $call-super/H#constructor (; 10 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 8 - i32.const 10 + i32.const 11 call $~lib/rt/stub/__alloc local.tee $0 i32.eqz if i32.const 4 - i32.const 9 + i32.const 10 call $~lib/rt/stub/__alloc local.set $0 end @@ -373,13 +373,13 @@ (func $call-super/J#constructor (; 12 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 8 - i32.const 12 + i32.const 13 call $~lib/rt/stub/__alloc local.tee $0 i32.eqz if i32.const 4 - i32.const 11 + i32.const 12 call $~lib/rt/stub/__alloc local.set $0 end diff --git a/tests/compiler/call-super.untouched.wat b/tests/compiler/call-super.untouched.wat index 816d5e9442..bac6a9d038 100644 --- a/tests/compiler/call-super.untouched.wat +++ b/tests/compiler/call-super.untouched.wat @@ -129,7 +129,7 @@ i32.eqz if i32.const 4 - i32.const 3 + i32.const 4 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 @@ -158,7 +158,7 @@ local.get $0 else i32.const 8 - i32.const 4 + i32.const 5 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain end @@ -237,7 +237,7 @@ i32.eqz if i32.const 4 - i32.const 5 + i32.const 6 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 @@ -253,7 +253,7 @@ local.get $0 else i32.const 8 - i32.const 6 + i32.const 7 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain end @@ -329,7 +329,7 @@ i32.eqz if i32.const 4 - i32.const 7 + i32.const 8 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 @@ -357,7 +357,7 @@ i32.eqz if i32.const 8 - i32.const 8 + i32.const 9 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 @@ -409,7 +409,7 @@ i32.eqz if i32.const 4 - i32.const 9 + i32.const 10 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 @@ -424,7 +424,7 @@ i32.eqz if i32.const 8 - i32.const 10 + i32.const 11 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 @@ -476,7 +476,7 @@ i32.eqz if i32.const 4 - i32.const 11 + i32.const 12 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 @@ -491,7 +491,7 @@ i32.eqz if i32.const 8 - i32.const 12 + i32.const 13 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 diff --git a/tests/compiler/constructor.optimized.wat b/tests/compiler/constructor.optimized.wat index 0d7b12b95d..2bbfa20517 100644 --- a/tests/compiler/constructor.optimized.wat +++ b/tests/compiler/constructor.optimized.wat @@ -111,11 +111,11 @@ i32.const 16 global.set $~lib/rt/stub/offset i32.const 0 - i32.const 3 + i32.const 4 call $~lib/rt/stub/__alloc global.set $constructor/emptyCtor i32.const 4 - i32.const 4 + i32.const 5 call $~lib/rt/stub/__alloc local.tee $0 i32.const 1 @@ -123,7 +123,7 @@ local.get $0 global.set $constructor/emptyCtorWithFieldInit i32.const 4 - i32.const 5 + i32.const 6 call $~lib/rt/stub/__alloc local.tee $0 i32.const 0 @@ -131,11 +131,11 @@ local.get $0 global.set $constructor/emptyCtorWithFieldNoInit i32.const 0 - i32.const 6 + i32.const 7 call $~lib/rt/stub/__alloc global.set $constructor/none i32.const 4 - i32.const 7 + i32.const 8 call $~lib/rt/stub/__alloc local.tee $0 i32.const 1 @@ -143,7 +143,7 @@ local.get $0 global.set $constructor/justFieldInit i32.const 4 - i32.const 8 + i32.const 9 call $~lib/rt/stub/__alloc local.tee $0 i32.const 0 @@ -155,18 +155,18 @@ i32.const 0 global.set $constructor/ctorConditionallyReturns i32.const 0 - i32.const 11 + i32.const 12 call $~lib/rt/stub/__alloc global.set $constructor/ctorAllocates i32.const 0 - i32.const 12 + i32.const 13 call $~lib/rt/stub/__alloc local.tee $0 if (result i32) local.get $0 else i32.const 0 - i32.const 12 + i32.const 13 call $~lib/rt/stub/__alloc end global.set $constructor/ctorConditionallyAllocates diff --git a/tests/compiler/constructor.untouched.wat b/tests/compiler/constructor.untouched.wat index 55e22eb4a9..d615b2aea0 100644 --- a/tests/compiler/constructor.untouched.wat +++ b/tests/compiler/constructor.untouched.wat @@ -137,7 +137,7 @@ i32.eqz if i32.const 0 - i32.const 3 + i32.const 4 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 @@ -149,7 +149,7 @@ i32.eqz if i32.const 4 - i32.const 4 + i32.const 5 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 @@ -164,7 +164,7 @@ i32.eqz if i32.const 4 - i32.const 5 + i32.const 6 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 @@ -179,7 +179,7 @@ i32.eqz if i32.const 0 - i32.const 6 + i32.const 7 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 @@ -191,7 +191,7 @@ i32.eqz if i32.const 4 - i32.const 7 + i32.const 8 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 @@ -206,7 +206,7 @@ i32.eqz if i32.const 4 - i32.const 8 + i32.const 9 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 @@ -231,7 +231,7 @@ i32.eqz if i32.const 0 - i32.const 10 + i32.const 11 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 @@ -243,7 +243,7 @@ i32.eqz if i32.const 0 - i32.const 11 + i32.const 12 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 @@ -259,7 +259,7 @@ i32.eqz if i32.const 0 - i32.const 12 + i32.const 13 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 @@ -271,7 +271,7 @@ i32.eqz if i32.const 0 - i32.const 12 + i32.const 13 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 diff --git a/tests/compiler/exports.optimized.wat b/tests/compiler/exports.optimized.wat index 3befaaa6b6..281e18d5ac 100644 --- a/tests/compiler/exports.optimized.wat +++ b/tests/compiler/exports.optimized.wat @@ -16,8 +16,8 @@ (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $~lib/argc (mut i32) (i32.const 0)) - (global $exports/Car i32 (i32.const 3)) - (global $exports/vehicles.Car i32 (i32.const 4)) + (global $exports/Car i32 (i32.const 4)) + (global $exports/vehicles.Car i32 (i32.const 5)) (export "memory" (memory $0)) (export "add" (func $exports/add)) (export "__setargc" (func $~lib/setargc)) @@ -187,7 +187,7 @@ local.get $0 i32.eqz if - i32.const 3 + i32.const 4 call $~lib/rt/stub/__alloc local.set $0 end @@ -214,7 +214,7 @@ local.get $0 i32.eqz if - i32.const 4 + i32.const 5 call $~lib/rt/stub/__alloc local.set $0 end diff --git a/tests/compiler/exports.untouched.wat b/tests/compiler/exports.untouched.wat index 5ad9605083..2669953226 100644 --- a/tests/compiler/exports.untouched.wat +++ b/tests/compiler/exports.untouched.wat @@ -19,8 +19,8 @@ (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $~lib/heap/__heap_base i32 (i32.const 8)) (global $~lib/argc (mut i32) (i32.const 0)) - (global $exports/Car i32 (i32.const 3)) - (global $exports/vehicles.Car i32 (i32.const 4)) + (global $exports/Car i32 (i32.const 4)) + (global $exports/vehicles.Car i32 (i32.const 5)) (export "memory" (memory $0)) (export "add" (func $exports/add)) (export "__setargc" (func $~lib/setargc)) @@ -183,7 +183,7 @@ i32.eqz if i32.const 4 - i32.const 3 + i32.const 4 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 @@ -216,7 +216,7 @@ i32.eqz if i32.const 4 - i32.const 4 + i32.const 5 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 diff --git a/tests/compiler/features/exception-handling.json b/tests/compiler/features/exception-handling.json new file mode 100644 index 0000000000..9654695bb7 --- /dev/null +++ b/tests/compiler/features/exception-handling.json @@ -0,0 +1,9 @@ +{ + "features": [ + "exception-handling" + ], + "asc_flags": [ + "--runtime none", + "--explicitStart" + ] +} diff --git a/tests/compiler/features/exception-handling.optimized.wat b/tests/compiler/features/exception-handling.optimized.wat new file mode 100644 index 0000000000..45d5335530 --- /dev/null +++ b/tests/compiler/features/exception-handling.optimized.wat @@ -0,0 +1,116 @@ +(module + (type $FUNCSIG$i (func (result i32))) + (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$v (func)) + (memory $0 1) + (data (i32.const 8) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00E\00r\00r\00o\00r") + (data (i32.const 44) "\01\00\00\00\01") + (data (i32.const 56) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00h\00i") + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/started (mut i32) (i32.const 0)) + (event $exception (attr 0) (param i32)) + (export "__start" (func $start)) + (export "memory" (memory $0)) + (export "test2" (func $features/exception-handling/test2)) + (func $~lib/rt/stub/maybeGrowMemory (; 0 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + memory.size + local.tee $2 + i32.const 16 + i32.shl + 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 $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 + end + local.get $0 + global.set $~lib/rt/stub/offset + ) + (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.tee $1 + i32.const 16 + i32.add + call $~lib/rt/stub/maybeGrowMemory + local.get $1 + i32.const 16 + i32.sub + local.tee $0 + i32.const 16 + i32.store + local.get $0 + i32.const -1 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=8 + local.get $0 + i32.const 12 + i32.store offset=12 + local.get $1 + ) + (func $features/exception-handling/test2 (; 2 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + call $~lib/rt/stub/__alloc + local.tee $0 + i32.const 24 + i32.store + local.get $0 + i32.const 56 + i32.store offset=4 + local.get $0 + i32.const 72 + i32.store offset=8 + local.get $0 + throw $exception + ) + (func $start (; 3 ;) (type $FUNCSIG$v) + global.get $~lib/started + if + return + else + i32.const 1 + global.set $~lib/started + end + i32.const 80 + global.set $~lib/rt/stub/startOffset + i32.const 80 + global.set $~lib/rt/stub/offset + ) + (func $null (; 4 ;) (type $FUNCSIG$v) + nop + ) +) diff --git a/tests/compiler/features/exception-handling.ts b/tests/compiler/features/exception-handling.ts new file mode 100644 index 0000000000..73d0f363f3 --- /dev/null +++ b/tests/compiler/features/exception-handling.ts @@ -0,0 +1,7 @@ +export function test(): void { + try { + throw new Error("hi"); + } catch (e) { + trace(e.toString()); + } +} diff --git a/tests/compiler/features/exception-handling.untouched.wat b/tests/compiler/features/exception-handling.untouched.wat new file mode 100644 index 0000000000..8d45478071 --- /dev/null +++ b/tests/compiler/features/exception-handling.untouched.wat @@ -0,0 +1,1621 @@ +(module + (type $FUNCSIG$v (func)) + (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$viiddddd (func (param i32 i32 f64 f64 f64 f64 f64))) + (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) + (memory $0 1) + (data (i32.const 8) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00E\00r\00r\00o\00r\00") + (data (i32.const 40) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 56) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00h\00i\00") + (data (i32.const 80) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00:\00 \00") + (data (i32.const 104) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00") + (table $0 1 funcref) + (elem (i32.const 0) $null) + (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/started (mut i32) (i32.const 0)) + (global $~lib/heap/__heap_base i32 (i32.const 128)) + (event $exception (attr 0) (param i32)) + (export "__start" (func $start)) + (export "memory" (memory $0)) + (export "test" (func $features/exception-handling/test)) + (func $~lib/rt/stub/__retain (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + ) + (func $~lib/rt/stub/maybeGrowMemory (; 2 ;) (type $FUNCSIG$vi) (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 + 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 (; 3 ;) (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.get $0 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 + local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.tee $3 + i32.const 16 + local.tee $4 + local.get $3 + local.get $4 + i32.gt_u + select + local.set $5 + local.get $2 + local.get $5 + i32.add + call $~lib/rt/stub/maybeGrowMemory + local.get $2 + i32.const 16 + i32.sub + local.set $6 + local.get $6 + local.get $5 + i32.store + local.get $6 + i32.const -1 + i32.store offset=4 + local.get $6 + local.get $1 + i32.store offset=8 + local.get $6 + local.get $0 + i32.store offset=12 + local.get $2 + ) + (func $~lib/rt/stub/__release (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $~lib/error/Error#constructor (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 12 + i32.const 3 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 24 + call $~lib/rt/stub/__retain + i32.store + local.get $0 + i32.const 56 + call $~lib/rt/stub/__retain + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/rt/stub/__retain + i32.store offset=8 + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/string/String#get:length (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + ) + (func $~lib/util/memory/memcpy (; 7 ;) (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 + i32.eqz + br_if $break|0 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + 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 + br $continue|0 + end + unreachable + 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 + i32.eqz + br_if $break|1 + 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 + unreachable + 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 + block $break|3 + loop $continue|3 + local.get $2 + i32.const 17 + i32.ge_u + i32.eqz + br_if $break|3 + 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 + unreachable + 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 + block $break|4 + loop $continue|4 + local.get $2 + i32.const 18 + i32.ge_u + i32.eqz + br_if $break|4 + 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 + unreachable + 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 + block $break|5 + loop $continue|5 + local.get $2 + i32.const 19 + i32.ge_u + i32.eqz + br_if $break|5 + 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 + unreachable + 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 (; 8 ;) (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 + i32.eqz + br_if $break|0 + 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 $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + br $continue|0 + end + unreachable + end + block $break|1 + loop $continue|1 + local.get $3 + i32.const 8 + i32.ge_u + i32.eqz + br_if $break|1 + 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 + unreachable + end + end + block $break|2 + loop $continue|2 + local.get $3 + i32.eqz + br_if $break|2 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 + end + unreachable + 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 + i32.eqz + br_if $break|3 + 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 + unreachable + end + block $break|4 + loop $continue|4 + local.get $3 + i32.const 8 + i32.ge_u + i32.eqz + br_if $break|4 + 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 + unreachable + end + end + block $break|5 + loop $continue|5 + local.get $3 + i32.eqz + br_if $break|5 + 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 + unreachable + end + end + end + ) + (func $~lib/string/String#concat (; 9 ;) (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.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 0 + i32.eq + if + i32.const 120 + local.tee $2 + local.get $1 + local.tee $3 + i32.ne + if + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__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 56 + call $~lib/rt/stub/__retain + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + end + local.get $6 + i32.const 1 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__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/stub/__release + local.get $2 + ) + (func $~lib/string/String.__concat (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.const 120 + 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/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/error/Error#toString (; 11 ;) (type $FUNCSIG$ii) (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 + call $~lib/rt/stub/__retain + local.set $1 + local.get $1 + call $~lib/string/String#get:length + if (result i32) + local.get $0 + i32.load + i32.const 96 + call $~lib/string/String.__concat + local.tee $2 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + local.tee $4 + local.set $6 + local.get $2 + call $~lib/rt/stub/__release + local.get $6 + else + local.get $0 + i32.load + call $~lib/rt/stub/__retain + local.tee $5 + end + call $~lib/rt/stub/__retain + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $features/exception-handling/test (; 12 ;) (type $FUNCSIG$v) + (local $0 exnref) + (local $1 i32) + (local $2 i32) + try + i32.const 0 + i32.const 72 + call $~lib/error/Error#constructor + throw $exception + catch + local.set $0 + block $catch|0 (result i32) + local.get $0 + br_on_exn $catch|0 $exception + rethrow + end + local.set $1 + local.get $1 + call $~lib/error/Error#toString + local.tee $2 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + end + ) + (func $start (; 13 ;) (type $FUNCSIG$v) + global.get $~lib/started + if + return + else + i32.const 1 + global.set $~lib/started + end + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset + ) + (func $null (; 14 ;) (type $FUNCSIG$v) + ) +) diff --git a/tests/compiler/getter-call.optimized.wat b/tests/compiler/getter-call.optimized.wat index 9b0b82a4ff..016a8ad3dc 100644 --- a/tests/compiler/getter-call.optimized.wat +++ b/tests/compiler/getter-call.optimized.wat @@ -73,7 +73,7 @@ i32.const -1 i32.store offset=4 local.get $0 - i32.const 3 + i32.const 4 i32.store offset=8 local.get $0 i32.const 0 diff --git a/tests/compiler/getter-call.untouched.wat b/tests/compiler/getter-call.untouched.wat index 9bd7e0e965..61afdb6d69 100644 --- a/tests/compiler/getter-call.untouched.wat +++ b/tests/compiler/getter-call.untouched.wat @@ -129,7 +129,7 @@ i32.eqz if i32.const 0 - i32.const 3 + i32.const 4 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 diff --git a/tests/compiler/infer-generic.optimized.wat b/tests/compiler/infer-generic.optimized.wat index 8da77f7349..d8c3b6cd25 100644 --- a/tests/compiler/infer-generic.optimized.wat +++ b/tests/compiler/infer-generic.optimized.wat @@ -6,7 +6,7 @@ (memory $0 1) (data (i32.const 8) " \00\00\00\01\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 56) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\00\00\80?\00\00\00@\00\00@@") - (data (i32.const 88) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00H\00\00\00H\00\00\00\0c\00\00\00\03") + (data (i32.const 88) "\10\00\00\00\01\00\00\00\04\00\00\00\10\00\00\00H\00\00\00H\00\00\00\0c\00\00\00\03") (table $0 2 funcref) (elem (i32.const 0) $null $start:infer-generic~anonymous|0) (global $~lib/argc (mut i32) (i32.const 0)) diff --git a/tests/compiler/infer-generic.untouched.wat b/tests/compiler/infer-generic.untouched.wat index 296df99d33..d1ddd77c3b 100644 --- a/tests/compiler/infer-generic.untouched.wat +++ b/tests/compiler/infer-generic.untouched.wat @@ -11,7 +11,7 @@ (memory $0 1) (data (i32.const 8) " \00\00\00\01\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") (data (i32.const 56) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\00\00\80?\00\00\00@\00\00@@") - (data (i32.const 88) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00H\00\00\00H\00\00\00\0c\00\00\00\03\00\00\00") + (data (i32.const 88) "\10\00\00\00\01\00\00\00\04\00\00\00\10\00\00\00H\00\00\00H\00\00\00\0c\00\00\00\03\00\00\00") (table $0 2 funcref) (elem (i32.const 0) $null $start:infer-generic~anonymous|0) (global $infer-generic/arr i32 (i32.const 104)) diff --git a/tests/compiler/inlining.optimized.wat b/tests/compiler/inlining.optimized.wat index 833540bcfb..a02441be2e 100644 --- a/tests/compiler/inlining.optimized.wat +++ b/tests/compiler/inlining.optimized.wat @@ -128,13 +128,13 @@ (func $inlining/test_ctor (; 6 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 16 - i32.const 5 + i32.const 6 call $~lib/rt/stub/__alloc local.tee $0 i32.eqz if i32.const 8 - i32.const 4 + i32.const 5 call $~lib/rt/stub/__alloc local.set $0 end diff --git a/tests/compiler/inlining.untouched.wat b/tests/compiler/inlining.untouched.wat index b4ccbd2366..f2932349be 100644 --- a/tests/compiler/inlining.untouched.wat +++ b/tests/compiler/inlining.untouched.wat @@ -397,7 +397,7 @@ local.get $1 else i32.const 16 - i32.const 5 + i32.const 6 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain end @@ -408,7 +408,7 @@ i32.eqz if i32.const 8 - i32.const 4 + i32.const 5 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $3 diff --git a/tests/compiler/number.optimized.wat b/tests/compiler/number.optimized.wat index c64786b514..ded24ed599 100644 --- a/tests/compiler/number.optimized.wat +++ b/tests/compiler/number.optimized.wat @@ -20,11 +20,11 @@ (data (i32.const 144) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") (data (i32.const 184) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") (data (i32.const 216) "\b8\02\00\00\01\00\00\00\00\00\00\00\b8\02\00\00\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\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\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\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#get:length (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) @@ -3134,7 +3134,7 @@ i32.eqz if i32.const 0 - i32.const 5 + i32.const 6 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -3150,7 +3150,7 @@ i32.eqz if i32.const 0 - i32.const 7 + i32.const 8 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -3550,7 +3550,7 @@ end i32.const 3 i32.const 0 - i32.const 3 + i32.const 4 i32.const 0 call $~lib/rt/__allocArray local.set $1 @@ -3636,7 +3636,7 @@ global.set $std/array-literal/i i32.const 3 i32.const 2 - i32.const 4 + i32.const 5 i32.const 0 call $~lib/rt/__allocArray local.set $0 @@ -3720,7 +3720,7 @@ end i32.const 3 i32.const 2 - i32.const 6 + i32.const 7 i32.const 0 call $~lib/rt/__allocArray local.set $1 @@ -3763,7 +3763,7 @@ end i32.const 3 i32.const 2 - i32.const 8 + i32.const 9 i32.const 0 call $~lib/rt/__allocArray local.set $0 @@ -4048,21 +4048,48 @@ (local $2 i32) block $block$4$break block $switch$1$default - block $switch$1$case$10 - block $switch$1$case$8 - block $switch$1$case$6 - block $switch$1$case$5 - 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$case$5 $switch$1$case$6 $switch$1$case$2 $switch$1$case$8 $switch$1$case$2 $switch$1$case$10 $switch$1$default + block $switch$1$case$11 + block $switch$1$case$9 + block $switch$1$case$7 + block $switch$1$case$6 + block $switch$1$case$5 + 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$case$5 $switch$1$case$6 $switch$1$case$7 $switch$1$case$2 $switch$1$case$9 $switch$1$case$2 $switch$1$case$11 $switch$1$default + end + return end - return + br $block$4$break + end + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + local.get $0 + i32.load offset=4 + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + local.get $0 + i32.load offset=8 + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit end - br $block$4$break + return end local.get $0 local.get $1 diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index a528d08d5f..24f38b5062 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -181,11 +181,11 @@ (data (i32.const 5112) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") (data (i32.const 5152) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") (data (i32.const 5184) "\b8\02\00\00\01\00\00\00\00\00\00\00\b8\02\00\00\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~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) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) @@ -1805,7 +1805,7 @@ ) (func $~lib/rt/pure/__retain (; 24 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 7700 + i32.const 7708 i32.gt_u if local.get $0 @@ -2203,7 +2203,7 @@ ) (func $~lib/rt/pure/__release (; 31 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 - i32.const 7700 + i32.const 7708 i32.gt_u if local.get $0 @@ -2281,7 +2281,7 @@ (func $~lib/array/Array#constructor (; 33 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) i32.const 16 - i32.const 3 + i32.const 4 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.get $0 @@ -2308,7 +2308,7 @@ (func $std/array/Ref#constructor (; 35 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) i32.const 4 - i32.const 4 + i32.const 5 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $1 @@ -3017,7 +3017,7 @@ end local.get $2 i32.const 2 - i32.const 3 + i32.const 4 i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -3596,7 +3596,7 @@ select local.tee $2 i32.const 2 - i32.const 3 + i32.const 4 i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -3687,7 +3687,7 @@ select local.tee $2 i32.const 2 - i32.const 8 + i32.const 9 i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -3805,7 +3805,7 @@ select local.tee $1 i32.const 2 - i32.const 11 + i32.const 12 i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -4418,7 +4418,7 @@ i32.load offset=12 local.tee $3 i32.const 2 - i32.const 9 + i32.const 10 i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -4512,7 +4512,7 @@ i32.load offset=12 local.tee $4 i32.const 2 - i32.const 3 + i32.const 4 i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -4605,7 +4605,7 @@ (local $5 i32) i32.const 0 i32.const 2 - i32.const 3 + i32.const 4 i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -6675,7 +6675,7 @@ (local $1 i32) (local $2 i32) i32.const 16 - i32.const 12 + i32.const 13 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain i32.const 2 @@ -6975,7 +6975,7 @@ (local $1 i32) (local $2 i32) i32.const 16 - i32.const 14 + i32.const 15 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain i32.const 512 @@ -6993,7 +6993,7 @@ i32.lt_s if i32.const 4 - i32.const 13 + i32.const 14 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $2 @@ -7618,7 +7618,7 @@ (local $1 i32) (local $2 i32) i32.const 16 - i32.const 16 + i32.const 17 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain i32.const 400 @@ -11795,7 +11795,7 @@ unreachable end i32.const 12 - i32.const 5 + i32.const 6 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain i32.const 1 @@ -11838,7 +11838,7 @@ call $~lib/rt/pure/__release i32.const 5 i32.const 0 - i32.const 6 + i32.const 7 i32.const 440 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -11853,7 +11853,7 @@ local.get $3 i32.const 5 i32.const 0 - i32.const 6 + i32.const 7 i32.const 464 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -11877,7 +11877,7 @@ local.get $3 i32.const 5 i32.const 0 - i32.const 6 + i32.const 7 i32.const 536 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -11901,7 +11901,7 @@ local.get $3 i32.const 5 i32.const 0 - i32.const 6 + i32.const 7 i32.const 560 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -11925,7 +11925,7 @@ local.get $3 i32.const 5 i32.const 0 - i32.const 6 + i32.const 7 i32.const 584 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -11949,7 +11949,7 @@ local.get $3 i32.const 5 i32.const 0 - i32.const 6 + i32.const 7 i32.const 608 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -11980,7 +11980,7 @@ call $~lib/rt/pure/__release i32.const 5 i32.const 2 - i32.const 7 + i32.const 8 i32.const 632 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -11995,7 +11995,7 @@ local.get $3 i32.const 5 i32.const 2 - i32.const 7 + i32.const 8 i32.const 672 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -12020,7 +12020,7 @@ local.get $3 i32.const 5 i32.const 2 - i32.const 7 + i32.const 8 i32.const 712 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -12045,7 +12045,7 @@ local.get $3 i32.const 5 i32.const 2 - i32.const 7 + i32.const 8 i32.const 752 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -12070,7 +12070,7 @@ local.get $3 i32.const 5 i32.const 2 - i32.const 7 + i32.const 8 i32.const 792 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -12095,7 +12095,7 @@ local.get $3 i32.const 5 i32.const 2 - i32.const 7 + i32.const 8 i32.const 832 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -12380,7 +12380,7 @@ end i32.const 2 i32.const 2 - i32.const 8 + i32.const 9 i32.const 0 call $~lib/rt/__allocArray local.tee $2 @@ -12463,7 +12463,7 @@ local.get $0 i32.const 0 i32.const 2 - i32.const 3 + i32.const 4 i32.const 920 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -12651,7 +12651,7 @@ end i32.const 0 i32.const 2 - i32.const 3 + i32.const 4 i32.const 936 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -12707,7 +12707,7 @@ call $~lib/rt/pure/__release i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 952 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -12721,7 +12721,7 @@ local.tee $30 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 992 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -12739,7 +12739,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1032 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -12762,7 +12762,7 @@ local.tee $33 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1072 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -12780,7 +12780,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1112 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -12803,7 +12803,7 @@ local.tee $7 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1152 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -12821,7 +12821,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1192 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -12845,7 +12845,7 @@ local.tee $16 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1232 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -12863,7 +12863,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1272 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -12887,7 +12887,7 @@ local.tee $19 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1312 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -12905,7 +12905,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1352 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -12929,7 +12929,7 @@ local.tee $8 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1392 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -12947,7 +12947,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1432 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -12971,7 +12971,7 @@ local.tee $12 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1472 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -12989,7 +12989,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1512 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -13013,7 +13013,7 @@ local.tee $23 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1552 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -13031,7 +13031,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1592 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -13055,7 +13055,7 @@ local.tee $26 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1632 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -13073,7 +13073,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1672 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -13097,7 +13097,7 @@ local.tee $28 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1712 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -13115,7 +13115,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1752 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -13139,7 +13139,7 @@ local.tee $6 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1792 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -13157,7 +13157,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1832 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -13181,7 +13181,7 @@ local.tee $2 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1872 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -13841,7 +13841,7 @@ end i32.const 1 i32.const 2 - i32.const 9 + i32.const 10 i32.const 1912 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -13859,7 +13859,7 @@ end i32.const 1 i32.const 3 - i32.const 10 + i32.const 11 i32.const 1936 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14017,7 +14017,7 @@ end i32.const 1 i32.const 2 - i32.const 9 + i32.const 10 i32.const 1960 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14034,7 +14034,7 @@ end i32.const 1 i32.const 3 - i32.const 10 + i32.const 11 i32.const 1984 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14110,7 +14110,7 @@ call $~lib/rt/pure/__release i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2008 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14123,7 +14123,7 @@ local.tee $43 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2048 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14142,7 +14142,7 @@ local.get $1 i32.const 0 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2088 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14161,7 +14161,7 @@ local.get $1 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2104 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14183,7 +14183,7 @@ local.tee $47 i32.const 0 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2144 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14202,7 +14202,7 @@ local.get $1 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2160 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14221,7 +14221,7 @@ local.get $1 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2200 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14243,7 +14243,7 @@ local.tee $51 i32.const 3 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2240 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14262,7 +14262,7 @@ local.get $1 i32.const 2 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2272 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14281,7 +14281,7 @@ local.get $1 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2296 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14303,7 +14303,7 @@ local.tee $55 i32.const 2 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2336 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14322,7 +14322,7 @@ local.get $1 i32.const 3 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2360 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14341,7 +14341,7 @@ local.get $1 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2392 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14363,7 +14363,7 @@ local.tee $59 i32.const 1 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2432 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14382,7 +14382,7 @@ local.get $1 i32.const 4 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2456 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14401,7 +14401,7 @@ local.get $1 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2488 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14423,7 +14423,7 @@ local.tee $63 i32.const 1 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2528 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14442,7 +14442,7 @@ local.get $1 i32.const 4 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2552 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14461,7 +14461,7 @@ local.get $1 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2584 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14483,7 +14483,7 @@ local.tee $67 i32.const 2 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2624 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14502,7 +14502,7 @@ local.get $1 i32.const 3 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2648 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14521,7 +14521,7 @@ local.get $1 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2680 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14543,7 +14543,7 @@ local.tee $71 i32.const 1 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2720 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14562,7 +14562,7 @@ local.get $1 i32.const 4 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2744 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14581,7 +14581,7 @@ local.get $1 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2776 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14603,7 +14603,7 @@ local.tee $75 i32.const 1 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2816 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14622,7 +14622,7 @@ local.get $1 i32.const 4 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2840 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14640,7 +14640,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2872 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14663,7 +14663,7 @@ local.tee $30 i32.const 0 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2912 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14682,7 +14682,7 @@ local.get $1 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2928 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14700,7 +14700,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2968 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14723,7 +14723,7 @@ local.tee $35 i32.const 0 i32.const 2 - i32.const 3 + i32.const 4 i32.const 3008 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14742,7 +14742,7 @@ local.get $1 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 3024 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14760,7 +14760,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 3064 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14782,7 +14782,7 @@ local.tee $15 i32.const 0 i32.const 2 - i32.const 3 + i32.const 4 i32.const 3104 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14801,7 +14801,7 @@ local.get $0 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 3120 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14819,7 +14819,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 3160 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14841,7 +14841,7 @@ local.tee $19 i32.const 0 i32.const 2 - i32.const 3 + i32.const 4 i32.const 3200 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14860,7 +14860,7 @@ local.get $1 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 3216 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14879,7 +14879,7 @@ local.get $1 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 3256 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14900,7 +14900,7 @@ local.tee $9 i32.const 0 i32.const 2 - i32.const 3 + i32.const 4 i32.const 3296 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14919,7 +14919,7 @@ local.get $38 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 3312 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14937,7 +14937,7 @@ end i32.const 0 i32.const 2 - i32.const 8 + i32.const 9 i32.const 3352 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -14968,7 +14968,7 @@ end i32.const 5 i32.const 2 - i32.const 8 + i32.const 9 i32.const 0 call $~lib/rt/__allocArray local.tee $0 @@ -15121,7 +15121,7 @@ end i32.const 3 i32.const 2 - i32.const 11 + i32.const 12 i32.const 0 call $~lib/rt/__allocArray local.tee $0 @@ -16402,7 +16402,7 @@ call $~lib/math/NativeMath.seedRandom i32.const 8 i32.const 2 - i32.const 9 + i32.const 10 i32.const 3712 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -16418,7 +16418,7 @@ local.get $13 i32.const 8 i32.const 2 - i32.const 9 + i32.const 10 i32.const 3760 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -16435,7 +16435,7 @@ end i32.const 8 i32.const 3 - i32.const 10 + i32.const 11 i32.const 3808 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -16451,7 +16451,7 @@ local.get $15 i32.const 8 i32.const 3 - i32.const 10 + i32.const 11 i32.const 3888 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -16468,7 +16468,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 3968 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -16484,7 +16484,7 @@ local.get $16 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 4008 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -16502,7 +16502,7 @@ end i32.const 5 i32.const 2 - i32.const 7 + i32.const 8 i32.const 4048 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -16518,7 +16518,7 @@ local.get $17 i32.const 5 i32.const 2 - i32.const 7 + i32.const 8 i32.const 4088 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -16536,7 +16536,7 @@ end i32.const 0 i32.const 2 - i32.const 3 + i32.const 4 i32.const 4128 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -16545,7 +16545,7 @@ local.set $12 i32.const 1 i32.const 2 - i32.const 3 + i32.const 4 i32.const 4144 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -16554,7 +16554,7 @@ local.set $18 i32.const 2 i32.const 2 - i32.const 3 + i32.const 4 i32.const 4168 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -16563,7 +16563,7 @@ local.set $19 i32.const 4 i32.const 2 - i32.const 3 + i32.const 4 i32.const 4192 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -16572,7 +16572,7 @@ local.set $20 i32.const 4 i32.const 2 - i32.const 3 + i32.const 4 i32.const 4224 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -16601,7 +16601,7 @@ local.get $18 i32.const 1 i32.const 2 - i32.const 3 + i32.const 4 i32.const 4312 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -16622,7 +16622,7 @@ local.get $19 i32.const 2 i32.const 2 - i32.const 3 + i32.const 4 i32.const 4336 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -16809,7 +16809,7 @@ call $~lib/rt/pure/__release i32.const 7 i32.const 2 - i32.const 15 + i32.const 16 i32.const 4472 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -16818,7 +16818,7 @@ local.set $5 i32.const 7 i32.const 2 - i32.const 15 + i32.const 16 i32.const 4520 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -16861,7 +16861,7 @@ call $~lib/rt/pure/__release i32.const 2 i32.const 0 - i32.const 17 + i32.const 18 i32.const 4592 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -16891,7 +16891,7 @@ end i32.const 3 i32.const 2 - i32.const 3 + i32.const 4 i32.const 4736 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -16912,7 +16912,7 @@ end i32.const 3 i32.const 2 - i32.const 7 + i32.const 8 i32.const 4824 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -16933,7 +16933,7 @@ end i32.const 2 i32.const 2 - i32.const 3 + i32.const 4 i32.const 4880 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -16954,7 +16954,7 @@ end i32.const 6 i32.const 3 - i32.const 10 + i32.const 11 i32.const 4992 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -16984,7 +16984,7 @@ end i32.const 3 i32.const 2 - i32.const 15 + i32.const 16 i32.const 6376 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -17005,7 +17005,7 @@ end i32.const 3 i32.const 2 - i32.const 11 + i32.const 12 i32.const 0 call $~lib/rt/__allocArray local.tee $0 @@ -17044,7 +17044,7 @@ end i32.const 2 i32.const 2 - i32.const 8 + i32.const 9 i32.const 0 call $~lib/rt/__allocArray local.tee $1 @@ -17119,7 +17119,7 @@ call $~lib/rt/pure/__release i32.const 0 i32.const 2 - i32.const 3 + i32.const 4 i32.const 6616 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -17128,7 +17128,7 @@ local.set $35 i32.const 1 i32.const 2 - i32.const 3 + i32.const 4 i32.const 6632 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -17137,7 +17137,7 @@ local.set $36 i32.const 2 i32.const 2 - i32.const 3 + i32.const 4 i32.const 6656 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -17146,7 +17146,7 @@ local.set $7 i32.const 4 i32.const 2 - i32.const 3 + i32.const 4 i32.const 6680 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -17211,7 +17211,7 @@ end i32.const 3 i32.const 0 - i32.const 20 + i32.const 21 i32.const 6768 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -17241,7 +17241,7 @@ end i32.const 3 i32.const 1 - i32.const 21 + i32.const 22 i32.const 6824 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -17271,7 +17271,7 @@ end i32.const 3 i32.const 3 - i32.const 18 + i32.const 19 i32.const 6888 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -17301,7 +17301,7 @@ end i32.const 4 i32.const 3 - i32.const 22 + i32.const 23 i32.const 6992 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -17331,7 +17331,7 @@ end i32.const 7 i32.const 2 - i32.const 15 + i32.const 16 i32.const 7144 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -17353,7 +17353,7 @@ end i32.const 4 i32.const 2 - i32.const 15 + i32.const 16 i32.const 7288 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -17373,7 +17373,7 @@ end i32.const 2 i32.const 2 - i32.const 12 + i32.const 13 i32.const 0 call $~lib/rt/__allocArray local.tee $1 @@ -17381,7 +17381,7 @@ local.tee $0 i32.const 2 i32.const 2 - i32.const 3 + i32.const 4 i32.const 7352 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -17391,7 +17391,7 @@ local.get $0 i32.const 2 i32.const 2 - i32.const 3 + i32.const 4 i32.const 7376 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -17426,7 +17426,7 @@ end i32.const 2 i32.const 2 - i32.const 23 + i32.const 24 i32.const 0 call $~lib/rt/__allocArray local.tee $1 @@ -17434,7 +17434,7 @@ local.tee $0 i32.const 2 i32.const 0 - i32.const 6 + i32.const 7 i32.const 7432 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -17444,7 +17444,7 @@ local.get $0 i32.const 2 i32.const 0 - i32.const 6 + i32.const 7 i32.const 7456 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -17479,21 +17479,21 @@ end i32.const 1 i32.const 2 - i32.const 25 + i32.const 26 i32.const 0 call $~lib/rt/__allocArray local.tee $27 i32.load offset=4 i32.const 1 i32.const 2 - i32.const 24 + i32.const 25 i32.const 0 call $~lib/rt/__allocArray local.tee $0 i32.load offset=4 i32.const 1 i32.const 2 - i32.const 7 + i32.const 8 i32.const 7480 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -17624,7 +17624,7 @@ ) (func $~lib/rt/pure/__visit (; 207 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 - i32.const 7700 + i32.const 7708 i32.lt_u if return @@ -17766,23 +17766,51 @@ end ) (func $~lib/rt/__visit_members (; 209 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) block $block$4$break block $switch$1$default - block $switch$1$case$27 - block $switch$1$case$26 - block $switch$1$case$25 - block $switch$1$case$18 - block $switch$1$case$17 - block $switch$1$case$16 - block $switch$1$case$14 - block $switch$1$case$13 - block $switch$1$case$10 - block $switch$1$case$2 + block $switch$1$case$28 + block $switch$1$case$27 + block $switch$1$case$26 + block $switch$1$case$19 + block $switch$1$case$18 + block $switch$1$case$17 + block $switch$1$case$15 + block $switch$1$case$14 + block $switch$1$case$11 + block $switch$1$case$5 + 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 $block$4$break $switch$1$case$5 $block$4$break $switch$1$case$2 $block$4$break $block$4$break $block$4$break $switch$1$case$11 $block$4$break $block$4$break $switch$1$case$14 $switch$1$case$15 $switch$1$case$2 $switch$1$case$17 $switch$1$case$18 $switch$1$case$19 $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $switch$1$case$26 $switch$1$case$27 $switch$1$case$28 $switch$1$default + 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 $0 + i32.load offset=4 + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + local.get $0 + i32.load offset=8 + local.tee $0 + if local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $block$4$break $block$4$break $switch$1$case$2 $block$4$break $block$4$break $block$4$break $switch$1$case$10 $block$4$break $block$4$break $switch$1$case$13 $switch$1$case$14 $switch$1$case$2 $switch$1$case$16 $switch$1$case$17 $switch$1$case$18 $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $switch$1$case$25 $switch$1$case$26 $switch$1$case$27 $switch$1$default + local.get $1 + call $~lib/rt/pure/__visit end return end diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index 6fd67ce299..5e1357180d 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -165,7 +165,7 @@ (data (i32.const 4720) "\0c\00\00\00\01\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 4752) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000\00") (data (i32.const 4776) "\90\01\00\00\01\00\00\00\00\00\00\00\90\01\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\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 5192) "\10\00\00\00\01\00\00\00\07\00\00\00\10\00\00\00\b8\12\00\00\b8\12\00\00\90\01\00\00d\00\00\00") + (data (i32.const 5192) "\10\00\00\00\01\00\00\00\08\00\00\00\10\00\00\00\b8\12\00\00\b8\12\00\00\90\01\00\00d\00\00\00") (data (i32.const 5224) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00-\002\00-\003\00") (data (i32.const 5256) "\0c\00\00\00\01\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 5288) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00-\00") @@ -179,11 +179,11 @@ (data (i32.const 5560) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00") (data (i32.const 5600) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00") (data (i32.const 5632) "\b8\02\00\00\01\00\00\00\00\00\00\00\b8\02\00\00\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~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) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) @@ -247,7 +247,7 @@ (global $~lib/builtins/i64.MAX_VALUE i64 (i64.const 9223372036854775807)) (global $~lib/started (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 7936)) - (global $~lib/heap/__heap_base i32 (i32.const 8148)) + (global $~lib/heap/__heap_base i32 (i32.const 8156)) (export "__start" (func $start)) (export "memory" (memory $0)) (func $~lib/rt/tlsf/removeBlock (; 6 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) @@ -3822,7 +3822,7 @@ local.get $0 else i32.const 16 - i32.const 3 + i32.const 4 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain end @@ -3861,7 +3861,7 @@ i32.eqz if i32.const 4 - i32.const 4 + i32.const 5 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -3895,7 +3895,7 @@ local.get $0 else i32.const 12 - i32.const 5 + i32.const 6 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain end @@ -4861,7 +4861,7 @@ end local.get $4 i32.const 2 - i32.const 3 + i32.const 4 i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -5688,7 +5688,7 @@ local.set $2 local.get $2 i32.const 2 - i32.const 3 + i32.const 4 i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -5796,7 +5796,7 @@ local.set $2 local.get $2 i32.const 2 - i32.const 8 + i32.const 9 i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -5946,7 +5946,7 @@ local.set $2 local.get $2 i32.const 2 - i32.const 11 + i32.const 12 i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -6700,7 +6700,7 @@ local.set $2 local.get $2 i32.const 2 - i32.const 9 + i32.const 10 i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -6820,7 +6820,7 @@ local.set $2 local.get $2 i32.const 2 - i32.const 3 + i32.const 4 i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -6930,7 +6930,7 @@ (local $6 i32) i32.const 0 i32.const 2 - i32.const 3 + i32.const 4 i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -10032,7 +10032,7 @@ local.get $0 else i32.const 16 - i32.const 12 + i32.const 13 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain end @@ -10497,7 +10497,7 @@ local.get $0 else i32.const 16 - i32.const 14 + i32.const 15 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain end @@ -10518,7 +10518,7 @@ i32.eqz if i32.const 4 - i32.const 13 + i32.const 14 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -11707,7 +11707,7 @@ local.get $0 else i32.const 16 - i32.const 16 + i32.const 17 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain end @@ -18528,7 +18528,7 @@ call $~lib/rt/pure/__release i32.const 5 i32.const 0 - i32.const 6 + i32.const 7 i32.const 440 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -18544,7 +18544,7 @@ local.get $1 i32.const 5 i32.const 0 - i32.const 6 + i32.const 7 i32.const 464 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -18569,7 +18569,7 @@ local.get $1 i32.const 5 i32.const 0 - i32.const 6 + i32.const 7 i32.const 536 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -18594,7 +18594,7 @@ local.get $1 i32.const 5 i32.const 0 - i32.const 6 + i32.const 7 i32.const 560 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -18619,7 +18619,7 @@ local.get $1 i32.const 5 i32.const 0 - i32.const 6 + i32.const 7 i32.const 584 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -18644,7 +18644,7 @@ local.get $1 i32.const 5 i32.const 0 - i32.const 6 + i32.const 7 i32.const 608 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -18676,7 +18676,7 @@ call $~lib/rt/pure/__release i32.const 5 i32.const 2 - i32.const 7 + i32.const 8 i32.const 632 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -18692,7 +18692,7 @@ local.get $7 i32.const 5 i32.const 2 - i32.const 7 + i32.const 8 i32.const 672 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -18717,7 +18717,7 @@ local.get $7 i32.const 5 i32.const 2 - i32.const 7 + i32.const 8 i32.const 712 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -18742,7 +18742,7 @@ local.get $7 i32.const 5 i32.const 2 - i32.const 7 + i32.const 8 i32.const 752 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -18767,7 +18767,7 @@ local.get $7 i32.const 5 i32.const 2 - i32.const 7 + i32.const 8 i32.const 792 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -18792,7 +18792,7 @@ local.get $7 i32.const 5 i32.const 2 - i32.const 7 + i32.const 8 i32.const 832 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -19109,7 +19109,7 @@ end i32.const 2 i32.const 2 - i32.const 8 + i32.const 9 i32.const 0 call $~lib/rt/__allocArray local.set $2 @@ -19205,7 +19205,7 @@ local.get $3 i32.const 0 i32.const 2 - i32.const 3 + i32.const 4 i32.const 920 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -19410,7 +19410,7 @@ end i32.const 0 i32.const 2 - i32.const 3 + i32.const 4 i32.const 936 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -19476,7 +19476,7 @@ call $~lib/rt/pure/__release i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 952 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -19491,7 +19491,7 @@ local.tee $2 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 992 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -19509,7 +19509,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1032 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -19535,7 +19535,7 @@ local.tee $7 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1072 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -19553,7 +19553,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1112 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -19579,7 +19579,7 @@ local.tee $3 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1152 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -19597,7 +19597,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1192 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -19623,7 +19623,7 @@ local.tee $9 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1232 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -19641,7 +19641,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1272 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -19667,7 +19667,7 @@ local.tee $12 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1312 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -19685,7 +19685,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1352 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -19711,7 +19711,7 @@ local.tee $15 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1392 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -19729,7 +19729,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1432 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -19755,7 +19755,7 @@ local.tee $18 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1472 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -19773,7 +19773,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1512 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -19799,7 +19799,7 @@ local.tee $21 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1552 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -19817,7 +19817,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1592 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -19843,7 +19843,7 @@ local.tee $24 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1632 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -19861,7 +19861,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1672 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -19887,7 +19887,7 @@ local.tee $27 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1712 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -19905,7 +19905,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1752 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -19931,7 +19931,7 @@ local.tee $30 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1792 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -19949,7 +19949,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1832 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -19975,7 +19975,7 @@ local.tee $33 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 1872 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -20682,7 +20682,7 @@ end i32.const 1 i32.const 2 - i32.const 9 + i32.const 10 i32.const 1912 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -20703,7 +20703,7 @@ end i32.const 1 i32.const 3 - i32.const 10 + i32.const 11 i32.const 1936 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -20898,7 +20898,7 @@ end i32.const 1 i32.const 2 - i32.const 9 + i32.const 10 i32.const 1960 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -20917,7 +20917,7 @@ end i32.const 1 i32.const 3 - i32.const 10 + i32.const 11 i32.const 1984 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -20999,7 +20999,7 @@ call $~lib/rt/pure/__release i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2008 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21013,7 +21013,7 @@ local.tee $35 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2048 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21032,7 +21032,7 @@ local.get $34 i32.const 0 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2088 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21050,7 +21050,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2104 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21075,7 +21075,7 @@ local.tee $36 i32.const 0 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2144 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21094,7 +21094,7 @@ local.get $34 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2160 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21112,7 +21112,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2200 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21137,7 +21137,7 @@ local.tee $1 i32.const 3 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2240 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21156,7 +21156,7 @@ local.get $34 i32.const 2 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2272 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21174,7 +21174,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2296 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21199,7 +21199,7 @@ local.tee $5 i32.const 2 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2336 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21218,7 +21218,7 @@ local.get $34 i32.const 3 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2360 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21236,7 +21236,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2392 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21261,7 +21261,7 @@ local.tee $2 i32.const 1 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2432 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21280,7 +21280,7 @@ local.get $34 i32.const 4 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2456 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21298,7 +21298,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2488 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21323,7 +21323,7 @@ local.tee $0 i32.const 1 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2528 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21342,7 +21342,7 @@ local.get $34 i32.const 4 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2552 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21360,7 +21360,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2584 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21385,7 +21385,7 @@ local.tee $6 i32.const 2 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2624 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21404,7 +21404,7 @@ local.get $34 i32.const 3 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2648 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21422,7 +21422,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2680 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21447,7 +21447,7 @@ local.tee $7 i32.const 1 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2720 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21466,7 +21466,7 @@ local.get $34 i32.const 4 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2744 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21484,7 +21484,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2776 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21509,7 +21509,7 @@ local.tee $4 i32.const 1 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2816 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21528,7 +21528,7 @@ local.get $34 i32.const 4 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2840 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21546,7 +21546,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2872 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21571,7 +21571,7 @@ local.tee $33 i32.const 0 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2912 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21590,7 +21590,7 @@ local.get $34 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2928 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21608,7 +21608,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 2968 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21633,7 +21633,7 @@ local.tee $39 i32.const 0 i32.const 2 - i32.const 3 + i32.const 4 i32.const 3008 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21652,7 +21652,7 @@ local.get $34 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 3024 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21670,7 +21670,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 3064 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21695,7 +21695,7 @@ local.tee $43 i32.const 0 i32.const 2 - i32.const 3 + i32.const 4 i32.const 3104 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21714,7 +21714,7 @@ local.get $34 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 3120 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21732,7 +21732,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 3160 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21757,7 +21757,7 @@ local.tee $47 i32.const 0 i32.const 2 - i32.const 3 + i32.const 4 i32.const 3200 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21776,7 +21776,7 @@ local.get $34 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 3216 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21794,7 +21794,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 3256 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21819,7 +21819,7 @@ local.tee $51 i32.const 0 i32.const 2 - i32.const 3 + i32.const 4 i32.const 3296 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21838,7 +21838,7 @@ local.get $34 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 3312 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21856,7 +21856,7 @@ end i32.const 0 i32.const 2 - i32.const 8 + i32.const 9 i32.const 3352 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -21896,7 +21896,7 @@ end i32.const 5 i32.const 2 - i32.const 8 + i32.const 9 i32.const 0 call $~lib/rt/__allocArray local.set $55 @@ -22069,7 +22069,7 @@ end i32.const 3 i32.const 2 - i32.const 11 + i32.const 12 i32.const 0 call $~lib/rt/__allocArray local.set $70 @@ -23503,7 +23503,7 @@ call $~lib/math/NativeMath.seedRandom i32.const 8 i32.const 2 - i32.const 9 + i32.const 10 i32.const 3712 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -23519,7 +23519,7 @@ local.get $76 i32.const 8 i32.const 2 - i32.const 9 + i32.const 10 i32.const 3760 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -23537,7 +23537,7 @@ end i32.const 8 i32.const 3 - i32.const 10 + i32.const 11 i32.const 3808 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -23553,7 +23553,7 @@ local.get $71 i32.const 8 i32.const 3 - i32.const 10 + i32.const 11 i32.const 3888 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -23571,7 +23571,7 @@ end i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 3968 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -23587,7 +23587,7 @@ local.get $69 i32.const 5 i32.const 2 - i32.const 3 + i32.const 4 i32.const 4008 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -23605,7 +23605,7 @@ end i32.const 5 i32.const 2 - i32.const 7 + i32.const 8 i32.const 4048 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -23621,7 +23621,7 @@ local.get $55 i32.const 5 i32.const 2 - i32.const 7 + i32.const 8 i32.const 4088 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -23639,7 +23639,7 @@ end i32.const 0 i32.const 2 - i32.const 3 + i32.const 4 i32.const 4128 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -23648,7 +23648,7 @@ local.set $65 i32.const 1 i32.const 2 - i32.const 3 + i32.const 4 i32.const 4144 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -23657,7 +23657,7 @@ local.set $62 i32.const 2 i32.const 2 - i32.const 3 + i32.const 4 i32.const 4168 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -23666,7 +23666,7 @@ local.set $57 i32.const 4 i32.const 2 - i32.const 3 + i32.const 4 i32.const 4192 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -23675,7 +23675,7 @@ local.set $51 i32.const 4 i32.const 2 - i32.const 3 + i32.const 4 i32.const 4224 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -23704,7 +23704,7 @@ local.get $62 i32.const 1 i32.const 2 - i32.const 3 + i32.const 4 i32.const 4312 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -23725,7 +23725,7 @@ local.get $57 i32.const 2 i32.const 2 - i32.const 3 + i32.const 4 i32.const 4336 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -23916,7 +23916,7 @@ call $~lib/rt/pure/__release i32.const 7 i32.const 2 - i32.const 15 + i32.const 16 i32.const 4472 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -23925,7 +23925,7 @@ local.set $45 i32.const 7 i32.const 2 - i32.const 15 + i32.const 16 i32.const 4520 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -23970,7 +23970,7 @@ call $~lib/rt/pure/__release i32.const 2 i32.const 0 - i32.const 17 + i32.const 18 i32.const 4592 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -23991,7 +23991,7 @@ end i32.const 3 i32.const 2 - i32.const 3 + i32.const 4 i32.const 4736 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -24012,7 +24012,7 @@ end i32.const 3 i32.const 2 - i32.const 7 + i32.const 8 i32.const 5272 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -24033,7 +24033,7 @@ end i32.const 2 i32.const 2 - i32.const 3 + i32.const 4 i32.const 5328 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -24054,7 +24054,7 @@ end i32.const 6 i32.const 3 - i32.const 10 + i32.const 11 i32.const 5440 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -24075,7 +24075,7 @@ end i32.const 3 i32.const 2 - i32.const 15 + i32.const 16 i32.const 6824 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -24096,7 +24096,7 @@ end i32.const 3 i32.const 2 - i32.const 11 + i32.const 12 i32.const 0 call $~lib/rt/__allocArray local.set $56 @@ -24141,7 +24141,7 @@ end i32.const 2 i32.const 2 - i32.const 8 + i32.const 9 i32.const 0 call $~lib/rt/__allocArray local.set $63 @@ -24222,7 +24222,7 @@ call $~lib/rt/pure/__release i32.const 0 i32.const 2 - i32.const 3 + i32.const 4 i32.const 7064 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -24231,7 +24231,7 @@ local.set $63 i32.const 1 i32.const 2 - i32.const 3 + i32.const 4 i32.const 7080 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -24240,7 +24240,7 @@ local.set $66 i32.const 2 i32.const 2 - i32.const 3 + i32.const 4 i32.const 7104 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -24249,7 +24249,7 @@ local.set $56 i32.const 4 i32.const 2 - i32.const 3 + i32.const 4 i32.const 7128 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -24314,7 +24314,7 @@ end i32.const 3 i32.const 0 - i32.const 20 + i32.const 21 i32.const 7216 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -24334,7 +24334,7 @@ end i32.const 3 i32.const 1 - i32.const 21 + i32.const 22 i32.const 7272 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -24354,7 +24354,7 @@ end i32.const 3 i32.const 3 - i32.const 18 + i32.const 19 i32.const 7336 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -24374,7 +24374,7 @@ end i32.const 4 i32.const 3 - i32.const 22 + i32.const 23 i32.const 7440 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -24394,7 +24394,7 @@ end i32.const 7 i32.const 2 - i32.const 15 + i32.const 16 i32.const 7592 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -24417,7 +24417,7 @@ end i32.const 4 i32.const 2 - i32.const 15 + i32.const 16 i32.const 7736 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -24437,7 +24437,7 @@ end i32.const 2 i32.const 2 - i32.const 12 + i32.const 13 i32.const 0 call $~lib/rt/__allocArray local.set $72 @@ -24447,7 +24447,7 @@ local.get $73 i32.const 2 i32.const 2 - i32.const 3 + i32.const 4 i32.const 7800 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -24457,7 +24457,7 @@ local.get $73 i32.const 2 i32.const 2 - i32.const 3 + i32.const 4 i32.const 7824 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -24483,7 +24483,7 @@ end i32.const 2 i32.const 2 - i32.const 23 + i32.const 24 i32.const 0 call $~lib/rt/__allocArray local.set $72 @@ -24493,7 +24493,7 @@ local.get $76 i32.const 2 i32.const 0 - i32.const 6 + i32.const 7 i32.const 7880 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -24503,7 +24503,7 @@ local.get $76 i32.const 2 i32.const 0 - i32.const 6 + i32.const 7 i32.const 7904 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -24529,7 +24529,7 @@ end i32.const 1 i32.const 2 - i32.const 25 + i32.const 26 i32.const 0 call $~lib/rt/__allocArray local.set $72 @@ -24539,7 +24539,7 @@ local.get $39 i32.const 1 i32.const 2 - i32.const 24 + i32.const 25 i32.const 0 call $~lib/rt/__allocArray local.set $40 @@ -24549,7 +24549,7 @@ local.get $33 i32.const 1 i32.const 2 - i32.const 7 + i32.const 8 i32.const 7928 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -25187,37 +25187,64 @@ (local $2 i32) block $block$4$break block $switch$1$default - block $switch$1$case$27 - block $switch$1$case$26 - block $switch$1$case$25 - block $switch$1$case$24 - block $switch$1$case$23 - block $switch$1$case$22 - block $switch$1$case$21 - block $switch$1$case$20 - block $switch$1$case$19 - block $switch$1$case$18 - block $switch$1$case$17 - block $switch$1$case$16 - block $switch$1$case$14 - block $switch$1$case$13 - block $switch$1$case$12 - block $switch$1$case$11 - block $switch$1$case$10 - block $switch$1$case$9 - block $switch$1$case$8 - block $switch$1$case$5 - 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$case$5 $switch$1$case$2 $switch$1$case$4 $switch$1$case$8 $switch$1$case$9 $switch$1$case$10 $switch$1$case$11 $switch$1$case$12 $switch$1$case$13 $switch$1$case$14 $switch$1$case$2 $switch$1$case$16 $switch$1$case$17 $switch$1$case$18 $switch$1$case$19 $switch$1$case$20 $switch$1$case$21 $switch$1$case$22 $switch$1$case$23 $switch$1$case$24 $switch$1$case$25 $switch$1$case$26 $switch$1$case$27 $switch$1$default + block $switch$1$case$28 + block $switch$1$case$27 + block $switch$1$case$26 + block $switch$1$case$25 + block $switch$1$case$24 + block $switch$1$case$23 + block $switch$1$case$22 + block $switch$1$case$21 + block $switch$1$case$20 + block $switch$1$case$19 + block $switch$1$case$18 + block $switch$1$case$17 + block $switch$1$case$15 + block $switch$1$case$14 + block $switch$1$case$13 + block $switch$1$case$12 + block $switch$1$case$11 + block $switch$1$case$10 + block $switch$1$case$9 + block $switch$1$case$6 + block $switch$1$case$5 + 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$case$5 $switch$1$case$6 $switch$1$case$2 $switch$1$case$4 $switch$1$case$9 $switch$1$case$10 $switch$1$case$11 $switch$1$case$12 $switch$1$case$13 $switch$1$case$14 $switch$1$case$15 $switch$1$case$2 $switch$1$case$17 $switch$1$case$18 $switch$1$case$19 $switch$1$case$20 $switch$1$case$21 $switch$1$case$22 $switch$1$case$23 $switch$1$case$24 $switch$1$case$25 $switch$1$case$26 $switch$1$case$27 $switch$1$case$28 $switch$1$default + end + return end - return + br $block$4$break + end + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + local.get $0 + i32.load offset=4 + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + local.get $0 + i32.load offset=8 + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit end - br $block$4$break + return end local.get $0 local.get $1 diff --git a/tests/compiler/std/arraybuffer.optimized.wat b/tests/compiler/std/arraybuffer.optimized.wat index 71dd096b53..883e4b68ba 100644 --- a/tests/compiler/std/arraybuffer.optimized.wat +++ b/tests/compiler/std/arraybuffer.optimized.wat @@ -24,7 +24,7 @@ (data (i32.const 376) "\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 416) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02") (data (i32.const 440) " \00\00\00\01\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 488) "\10\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\93\04\00\00\02\00\00\001\04\00\00\02\00\00\001\00\00\00\02\00\00\001\00\00\00\02\00\00\00Q\04\00\00\02\00\00\00Q\00\00\00\02\00\00\00\91\04\00\00\02\00\00\00\91\00\00\00\02\00\00\00\11\05\00\00\02\00\00\00\11\01\00\00\02\00\00\00\91\0c\00\00\02\00\00\00\11\0d\00\00\02\00\00\00\10") + (data (i32.const 488) "\11\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\10\00\00\00\00\00\00\00\93\04\00\00\02\00\00\001\04\00\00\02\00\00\001\00\00\00\02\00\00\001\00\00\00\02\00\00\00Q\04\00\00\02\00\00\00Q\00\00\00\02\00\00\00\91\04\00\00\02\00\00\00\91\00\00\00\02\00\00\00\11\05\00\00\02\00\00\00\11\01\00\00\02\00\00\00\91\0c\00\00\02\00\00\00\11\0d\00\00\02\00\00\00\10") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) @@ -618,10 +618,10 @@ if unreachable end - i32.const 624 + i32.const 640 i32.const 0 i32.store - i32.const 2192 + i32.const 2208 i32.const 0 i32.store i32.const 0 @@ -635,7 +635,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 624 + i32.const 640 i32.add i32.const 0 i32.store offset=4 @@ -654,7 +654,7 @@ i32.add i32.const 2 i32.shl - i32.const 624 + i32.const 640 i32.add i32.const 0 i32.store offset=96 @@ -672,13 +672,13 @@ br $loop|0 end end - i32.const 624 - i32.const 2208 + i32.const 640 + i32.const 2224 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 624 + i32.const 640 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/prepareSize (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) @@ -1579,7 +1579,7 @@ ) (func $~lib/rt/pure/__retain (; 23 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 620 + i32.const 628 i32.gt_u if local.get $0 @@ -2051,7 +2051,7 @@ ) (func $~lib/rt/pure/__release (; 32 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 - i32.const 620 + i32.const 628 i32.gt_u if local.get $0 @@ -2138,7 +2138,7 @@ (local $0 i32) (local $1 i32) i32.const 16 - i32.const 3 + i32.const 4 call $~lib/rt/tlsf/__alloc local.tee $0 i32.const 8 @@ -2195,7 +2195,7 @@ unreachable end i32.const 12 - i32.const 15 + i32.const 16 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $2 @@ -2458,7 +2458,7 @@ unreachable end i32.const 12 - i32.const 5 + i32.const 6 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain i32.const 0 @@ -2483,7 +2483,7 @@ unreachable end i32.const 12 - i32.const 9 + i32.const 10 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain i32.const 2 @@ -2540,7 +2540,7 @@ ) (func $~lib/rt/pure/__visit (; 40 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 - i32.const 620 + i32.const 628 i32.lt_u if return @@ -2649,14 +2649,42 @@ end ) (func $~lib/rt/__visit_members (; 41 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) block $block$4$break block $switch$1$default - block $switch$1$case$2 + block $switch$1$case$5 + 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 $block$4$break $switch$1$case$5 $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $switch$1$default + 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 $0 + i32.load offset=4 + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + local.get $0 + i32.load offset=8 + local.tee $0 + if local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $switch$1$default + local.get $1 + call $~lib/rt/pure/__visit end return end diff --git a/tests/compiler/std/arraybuffer.untouched.wat b/tests/compiler/std/arraybuffer.untouched.wat index 72f4b98018..c57bc82f4b 100644 --- a/tests/compiler/std/arraybuffer.untouched.wat +++ b/tests/compiler/std/arraybuffer.untouched.wat @@ -24,7 +24,7 @@ (data (i32.const 376) "\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 416) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00") (data (i32.const 440) " \00\00\00\01\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") - (data (i32.const 488) "\10\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\93\04\00\00\02\00\00\001\04\00\00\02\00\00\001\00\00\00\02\00\00\001\00\00\00\02\00\00\00Q\04\00\00\02\00\00\00Q\00\00\00\02\00\00\00\91\04\00\00\02\00\00\00\91\00\00\00\02\00\00\00\11\05\00\00\02\00\00\00\11\01\00\00\02\00\00\00\91\0c\00\00\02\00\00\00\11\0d\00\00\02\00\00\00\10\00\00\00\00\00\00\00") + (data (i32.const 488) "\11\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\10\00\00\00\00\00\00\00\93\04\00\00\02\00\00\001\04\00\00\02\00\00\001\00\00\00\02\00\00\001\00\00\00\02\00\00\00Q\04\00\00\02\00\00\00Q\00\00\00\02\00\00\00\91\04\00\00\02\00\00\00\91\00\00\00\02\00\00\00\11\05\00\00\02\00\00\00\11\01\00\00\02\00\00\00\91\0c\00\00\02\00\00\00\11\0d\00\00\02\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)) @@ -36,7 +36,7 @@ (global $~lib/rt/pure/END (mut i32) (i32.const 0)) (global $~lib/argc (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 488)) - (global $~lib/heap/__heap_base i32 (i32.const 620)) + (global $~lib/heap/__heap_base i32 (i32.const 628)) (export "memory" (memory $0)) (start $start) (func $~lib/rt/tlsf/removeBlock (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) @@ -3818,7 +3818,7 @@ local.get $0 else i32.const 12 - i32.const 5 + i32.const 6 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain end @@ -3895,7 +3895,7 @@ local.get $0 else i32.const 12 - i32.const 9 + i32.const 10 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain end @@ -3948,7 +3948,7 @@ i32.eqz if i32.const 12 - i32.const 15 + i32.const 16 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -4328,7 +4328,7 @@ local.set $2 i32.const 2 i32.const 2 - i32.const 3 + i32.const 4 i32.const 432 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -4541,18 +4541,45 @@ (local $2 i32) block $block$4$break block $switch$1$default - block $switch$1$case$5 - 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$case$5 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$default + block $switch$1$case$6 + block $switch$1$case$5 + 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$case$5 $switch$1$case$6 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$default + end + return end - return + br $block$4$break + end + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + local.get $0 + i32.load offset=4 + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + local.get $0 + i32.load offset=8 + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit end - br $block$4$break + return end local.get $0 local.get $1 diff --git a/tests/compiler/std/dataview.optimized.wat b/tests/compiler/std/dataview.optimized.wat index 786ea8b913..f6c55648ad 100644 --- a/tests/compiler/std/dataview.optimized.wat +++ b/tests/compiler/std/dataview.optimized.wat @@ -30,7 +30,7 @@ (data (i32.const 360) "$\00\00\00\01\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 416) " \00\00\00\01\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 464) "\1e\00\00\00\01\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 512) "\05\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\001\00\00\00\02\00\00\00\10") + (data (i32.const 512) "\06\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\10\00\00\00\00\00\00\001\00\00\00\02\00\00\00\10") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) @@ -624,10 +624,10 @@ if unreachable end - i32.const 560 + i32.const 576 i32.const 0 i32.store - i32.const 2128 + i32.const 2144 i32.const 0 i32.store i32.const 0 @@ -641,7 +641,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 560 + i32.const 576 i32.add i32.const 0 i32.store offset=4 @@ -660,7 +660,7 @@ i32.add i32.const 2 i32.shl - i32.const 560 + i32.const 576 i32.add i32.const 0 i32.store offset=96 @@ -678,13 +678,13 @@ br $loop|0 end end - i32.const 560 - i32.const 2144 + i32.const 576 + i32.const 2160 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 560 + i32.const 576 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/prepareSize (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) @@ -1420,7 +1420,7 @@ ) (func $~lib/rt/pure/__retain (; 23 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 556 + i32.const 564 i32.gt_u if local.get $0 @@ -1818,7 +1818,7 @@ ) (func $~lib/rt/pure/__release (; 30 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 - i32.const 556 + i32.const 564 i32.gt_u if local.get $0 @@ -1929,7 +1929,7 @@ unreachable end i32.const 12 - i32.const 4 + i32.const 5 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $3 @@ -2588,7 +2588,7 @@ (local $1 i32) (local $2 i32) i32.const 12 - i32.const 3 + i32.const 4 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain call $~lib/arraybuffer/ArrayBufferView#constructor @@ -4145,7 +4145,7 @@ ) (func $~lib/rt/pure/__visit (; 63 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 - i32.const 556 + i32.const 564 i32.lt_u if return @@ -4254,19 +4254,47 @@ end ) (func $~lib/rt/__visit_members (; 64 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) block $switch$1$default - block $switch$1$case$4 - block $switch$1$case$2 + block $switch$1$case$5 + 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$case$5 $switch$1$case$4 $switch$1$case$4 $switch$1$default + end + return + end + local.get $0 + i32.load + local.tee $0 + if 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$case$4 $switch$1$case$4 $switch$1$default + local.get $1 + call $~lib/rt/pure/__visit 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 $0 + i32.load offset=4 + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + local.get $0 + i32.load offset=8 local.tee $0 if local.get $0 diff --git a/tests/compiler/std/dataview.untouched.wat b/tests/compiler/std/dataview.untouched.wat index d73890ab8b..0ebddf7d07 100644 --- a/tests/compiler/std/dataview.untouched.wat +++ b/tests/compiler/std/dataview.untouched.wat @@ -31,7 +31,7 @@ (data (i32.const 360) "$\00\00\00\01\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") (data (i32.const 416) " \00\00\00\01\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") (data (i32.const 464) "\1e\00\00\00\01\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") - (data (i32.const 512) "\05\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\001\00\00\00\02\00\00\00\10\00\00\00\00\00\00\00") + (data (i32.const 512) "\06\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\10\00\00\00\00\00\00\001\00\00\00\02\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)) @@ -43,7 +43,7 @@ (global $~lib/rt/pure/END (mut i32) (i32.const 0)) (global $~lib/argc (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 512)) - (global $~lib/heap/__heap_base i32 (i32.const 556)) + (global $~lib/heap/__heap_base i32 (i32.const 564)) (export "memory" (memory $0)) (start $start) (func $~lib/rt/tlsf/removeBlock (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) @@ -3618,7 +3618,7 @@ local.get $0 else i32.const 12 - i32.const 3 + i32.const 4 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain end @@ -3685,7 +3685,7 @@ i32.eqz if i32.const 12 - i32.const 4 + i32.const 5 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -6392,13 +6392,24 @@ (func $~lib/rt/__visit_members (; 69 ;) (type $FUNCSIG$vii) (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$case$4 $switch$1$case$4 $switch$1$default + block $switch$1$case$5 + 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$case$5 $switch$1$case$4 $switch$1$case$4 $switch$1$default + end + return + end + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit end return end @@ -6410,6 +6421,22 @@ local.get $1 call $~lib/rt/pure/__visit end + local.get $0 + i32.load offset=4 + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + local.get $0 + i32.load offset=8 + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end return end unreachable diff --git a/tests/compiler/std/date.optimized.wat b/tests/compiler/std/date.optimized.wat index 06c01aa074..07dc8ad777 100644 --- a/tests/compiler/std/date.optimized.wat +++ b/tests/compiler/std/date.optimized.wat @@ -78,7 +78,7 @@ i32.const -1 i32.store offset=4 local.get $0 - i32.const 3 + i32.const 4 i32.store offset=8 local.get $0 i32.const 8 diff --git a/tests/compiler/std/date.untouched.wat b/tests/compiler/std/date.untouched.wat index 5624c16711..8db5d0f646 100644 --- a/tests/compiler/std/date.untouched.wat +++ b/tests/compiler/std/date.untouched.wat @@ -138,7 +138,7 @@ i32.eqz if i32.const 8 - i32.const 3 + i32.const 4 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 diff --git a/tests/compiler/std/libm.optimized.wat b/tests/compiler/std/libm.optimized.wat index 050b99660f..1798c61638 100644 --- a/tests/compiler/std/libm.optimized.wat +++ b/tests/compiler/std/libm.optimized.wat @@ -11,9 +11,9 @@ (type $FUNCSIG$ij (func (param i64) (result i32))) (memory $0 1) (data (i32.const 8) "\c0\00\00\00\01\00\00\00\00\00\00\00\c0\00\00\00n\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 216) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00\18\00\00\00\18\00\00\00\c0\00\00\00\18") + (data (i32.const 216) "\10\00\00\00\01\00\00\00\04\00\00\00\10\00\00\00\18\00\00\00\18\00\00\00\c0\00\00\00\18") (data (i32.const 248) " \00\00\00\01\00\00\00\00\00\00\00 \00\00\00)\15DNn\83\f9\a2\c0\dd4\f5\d1W\'\fcA\90C<\99\95b\dba\c5\bb\de\abcQ\fe") - (data (i32.const 296) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00\08\01\00\00\08\01\00\00 \00\00\00\04") + (data (i32.const 296) "\10\00\00\00\01\00\00\00\04\00\00\00\10\00\00\00\08\01\00\00\08\01\00\00 \00\00\00\04") (global $../../lib/libm/assembly/libm/E f64 (f64.const 2.718281828459045)) (global $../../lib/libm/assembly/libm/LN10 f64 (f64.const 2.302585092994046)) (global $../../lib/libm/assembly/libm/LN2 f64 (f64.const 0.6931471805599453)) diff --git a/tests/compiler/std/libm.untouched.wat b/tests/compiler/std/libm.untouched.wat index 71254be045..607eb0361b 100644 --- a/tests/compiler/std/libm.untouched.wat +++ b/tests/compiler/std/libm.untouched.wat @@ -11,9 +11,9 @@ (type $FUNCSIG$v (func)) (memory $0 1) (data (i32.const 8) "\c0\00\00\00\01\00\00\00\00\00\00\00\c0\00\00\00n\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 216) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00\18\00\00\00\18\00\00\00\c0\00\00\00\18\00\00\00") + (data (i32.const 216) "\10\00\00\00\01\00\00\00\04\00\00\00\10\00\00\00\18\00\00\00\18\00\00\00\c0\00\00\00\18\00\00\00") (data (i32.const 248) " \00\00\00\01\00\00\00\00\00\00\00 \00\00\00)\15DNn\83\f9\a2\c0\dd4\f5\d1W\'\fcA\90C<\99\95b\dba\c5\bb\de\abcQ\fe") - (data (i32.const 296) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00\08\01\00\00\08\01\00\00 \00\00\00\04\00\00\00") + (data (i32.const 296) "\10\00\00\00\01\00\00\00\04\00\00\00\10\00\00\00\08\01\00\00\08\01\00\00 \00\00\00\04\00\00\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $~lib/math/NativeMath.E f64 (f64.const 2.718281828459045)) diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat index 4f476155ae..6728c4b63c 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -37,7 +37,7 @@ (data (i32.const 360) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00m\00a\00p\00.\00t\00s") (data (i32.const 400) "$\00\00\00\01\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 456) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s") - (data (i32.const 496) "\0d\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\98D\08\00\00\00\00\00\98D\00\00\00\00\00\00\98\84\08\00\00\00\00\00\98\84\00\00\00\00\00\00\98\04\t\00\00\00\00\00\98\04\01\00\00\00\00\00\98\04\n\00\00\00\00\00\98\04\02\00\00\00\00\00\98\04\19\00\00\00\00\00\98\04\1a") + (data (i32.const 496) "\0e\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\10\00\00\00\00\00\00\00\98D\08\00\00\00\00\00\98D\00\00\00\00\00\00\98\84\08\00\00\00\00\00\98\84\00\00\00\00\00\00\98\04\t\00\00\00\00\00\98\04\01\00\00\00\00\00\98\04\n\00\00\00\00\00\98\04\02\00\00\00\00\00\98\04\19\00\00\00\00\00\98\04\1a") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) @@ -630,10 +630,10 @@ if unreachable end - i32.const 608 + i32.const 624 i32.const 0 i32.store - i32.const 2176 + i32.const 2192 i32.const 0 i32.store i32.const 0 @@ -647,7 +647,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 608 + i32.const 624 i32.add i32.const 0 i32.store offset=4 @@ -666,7 +666,7 @@ i32.add i32.const 2 i32.shl - i32.const 608 + i32.const 624 i32.add i32.const 0 i32.store offset=96 @@ -684,13 +684,13 @@ br $loop|0 end end - i32.const 608 - i32.const 2192 + i32.const 624 + i32.const 2208 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 608 + i32.const 624 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/prepareSize (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) @@ -1382,7 +1382,7 @@ ) (func $~lib/rt/pure/__retain (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 604 + i32.const 612 i32.gt_u if local.get $0 @@ -2011,7 +2011,7 @@ ) (func $~lib/rt/pure/__release (; 31 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 - i32.const 604 + i32.const 612 i32.gt_u if local.get $0 @@ -2056,7 +2056,7 @@ (func $~lib/map/Map#constructor (; 33 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - i32.const 3 + i32.const 4 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 @@ -2808,7 +2808,7 @@ (func $~lib/map/Map#constructor (; 42 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - i32.const 4 + i32.const 5 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 @@ -3486,7 +3486,7 @@ (func $~lib/map/Map#constructor (; 49 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - i32.const 5 + i32.const 6 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 @@ -4246,7 +4246,7 @@ (func $~lib/map/Map#constructor (; 58 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - i32.const 6 + i32.const 7 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 @@ -4924,7 +4924,7 @@ (func $~lib/map/Map#constructor (; 65 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - i32.const 7 + i32.const 8 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 @@ -5654,7 +5654,7 @@ (func $~lib/map/Map#constructor (; 74 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - i32.const 8 + i32.const 9 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 @@ -6033,7 +6033,7 @@ (func $~lib/map/Map#constructor (; 77 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - i32.const 9 + i32.const 10 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 @@ -6806,7 +6806,7 @@ (func $~lib/map/Map#constructor (; 86 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - i32.const 10 + i32.const 11 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 @@ -7159,7 +7159,7 @@ (func $~lib/map/Map#constructor (; 88 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - i32.const 11 + i32.const 12 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 @@ -7871,7 +7871,7 @@ (func $~lib/map/Map#constructor (; 96 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - i32.const 12 + i32.const 13 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 @@ -8594,7 +8594,7 @@ ) (func $~lib/rt/pure/__visit (; 105 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 - i32.const 604 + i32.const 612 i32.lt_u if return @@ -8703,20 +8703,48 @@ end ) (func $~lib/rt/__visit_members (; 106 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) block $folding-inner0 block $switch$1$default - block $switch$1$case$4 - block $switch$1$case$2 + block $switch$1$case$5 + 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$case$5 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $switch$1$default + end + return + end + local.get $0 + i32.load + local.tee $0 + if local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $switch$1$default + local.get $1 + call $~lib/rt/pure/__visit 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 $0 + i32.load offset=4 + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + local.get $0 + i32.load offset=8 local.tee $0 if local.get $0 diff --git a/tests/compiler/std/map.untouched.wat b/tests/compiler/std/map.untouched.wat index 00239b3a7d..2a68f4b467 100644 --- a/tests/compiler/std/map.untouched.wat +++ b/tests/compiler/std/map.untouched.wat @@ -33,7 +33,7 @@ (data (i32.const 360) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00m\00a\00p\00.\00t\00s\00") (data (i32.const 400) "$\00\00\00\01\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") (data (i32.const 456) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s\00") - (data (i32.const 496) "\0d\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\98D\08\00\00\00\00\00\98D\00\00\00\00\00\00\98\84\08\00\00\00\00\00\98\84\00\00\00\00\00\00\98\04\t\00\00\00\00\00\98\04\01\00\00\00\00\00\98\04\n\00\00\00\00\00\98\04\02\00\00\00\00\00\98\04\19\00\00\00\00\00\98\04\1a\00\00\00\00\00") + (data (i32.const 496) "\0e\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\10\00\00\00\00\00\00\00\98D\08\00\00\00\00\00\98D\00\00\00\00\00\00\98\84\08\00\00\00\00\00\98\84\00\00\00\00\00\00\98\04\t\00\00\00\00\00\98\04\01\00\00\00\00\00\98\04\n\00\00\00\00\00\98\04\02\00\00\00\00\00\98\04\19\00\00\00\00\00\98\04\1a\00\00\00\00\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) @@ -44,7 +44,7 @@ (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 496)) - (global $~lib/heap/__heap_base i32 (i32.const 604)) + (global $~lib/heap/__heap_base i32 (i32.const 612)) (export "memory" (memory $0)) (start $start) (func $~lib/rt/tlsf/removeBlock (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) @@ -3611,7 +3611,7 @@ i32.eqz if i32.const 24 - i32.const 3 + i32.const 4 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -4510,7 +4510,7 @@ i32.eqz if i32.const 24 - i32.const 4 + i32.const 5 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -5378,7 +5378,7 @@ i32.eqz if i32.const 24 - i32.const 5 + i32.const 6 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -6292,7 +6292,7 @@ i32.eqz if i32.const 24 - i32.const 6 + i32.const 7 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -7160,7 +7160,7 @@ i32.eqz if i32.const 24 - i32.const 7 + i32.const 8 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -8046,7 +8046,7 @@ i32.eqz if i32.const 24 - i32.const 8 + i32.const 9 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -8890,7 +8890,7 @@ i32.eqz if i32.const 24 - i32.const 9 + i32.const 10 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -9832,7 +9832,7 @@ i32.eqz if i32.const 24 - i32.const 10 + i32.const 11 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -10686,7 +10686,7 @@ i32.eqz if i32.const 24 - i32.const 11 + i32.const 12 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -11545,7 +11545,7 @@ i32.eqz if i32.const 24 - i32.const 12 + i32.const 13 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -12637,23 +12637,34 @@ (func $~lib/rt/__visit_members (; 150 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block $switch$1$default - block $switch$1$case$14 - block $switch$1$case$13 - block $switch$1$case$12 - block $switch$1$case$11 - block $switch$1$case$10 - block $switch$1$case$9 - block $switch$1$case$8 - block $switch$1$case$7 - block $switch$1$case$6 - block $switch$1$case$5 - 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$case$5 $switch$1$case$6 $switch$1$case$7 $switch$1$case$8 $switch$1$case$9 $switch$1$case$10 $switch$1$case$11 $switch$1$case$12 $switch$1$case$13 $switch$1$case$14 $switch$1$default + block $switch$1$case$15 + block $switch$1$case$14 + block $switch$1$case$13 + block $switch$1$case$12 + block $switch$1$case$11 + block $switch$1$case$10 + block $switch$1$case$9 + block $switch$1$case$8 + block $switch$1$case$7 + block $switch$1$case$6 + block $switch$1$case$5 + 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$case$5 $switch$1$case$6 $switch$1$case$7 $switch$1$case$8 $switch$1$case$9 $switch$1$case$10 $switch$1$case$11 $switch$1$case$12 $switch$1$case$13 $switch$1$case$14 $switch$1$case$15 $switch$1$default + end + return + end + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit end return end @@ -12665,6 +12676,22 @@ local.get $1 call $~lib/rt/pure/__visit end + local.get $0 + i32.load offset=4 + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + local.get $0 + i32.load offset=8 + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end return end local.get $0 diff --git a/tests/compiler/std/math.optimized.wat b/tests/compiler/std/math.optimized.wat index b42056b015..0663340b64 100644 --- a/tests/compiler/std/math.optimized.wat +++ b/tests/compiler/std/math.optimized.wat @@ -70,9 +70,9 @@ (memory $0 1) (data (i32.const 8) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00s\00t\00d\00/\00m\00a\00t\00h\00.\00t\00s") (data (i32.const 48) "\c0\00\00\00\01\00\00\00\00\00\00\00\c0\00\00\00n\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 256) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00@\00\00\00@\00\00\00\c0\00\00\00\18") + (data (i32.const 256) "\10\00\00\00\01\00\00\00\04\00\00\00\10\00\00\00@\00\00\00@\00\00\00\c0\00\00\00\18") (data (i32.const 288) " \00\00\00\01\00\00\00\00\00\00\00 \00\00\00)\15DNn\83\f9\a2\c0\dd4\f5\d1W\'\fcA\90C<\99\95b\dba\c5\bb\de\abcQ\fe") - (data (i32.const 336) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\000\01\00\000\01\00\00 \00\00\00\04") + (data (i32.const 336) "\10\00\00\00\01\00\00\00\04\00\00\00\10\00\00\000\01\00\000\01\00\00 \00\00\00\04") (data (i32.const 368) "\18\00\00\00\01\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 408) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00P\00R\00N\00G\00 \00m\00u\00s\00t\00 \00b\00e\00 \00s\00e\00e\00d\00e\00d\00.") (global $~lib/math/rempio2_y0 (mut f64) (f64.const 0)) diff --git a/tests/compiler/std/math.untouched.wat b/tests/compiler/std/math.untouched.wat index 00c5ddb364..4ecde2548d 100644 --- a/tests/compiler/std/math.untouched.wat +++ b/tests/compiler/std/math.untouched.wat @@ -69,9 +69,9 @@ (memory $0 1) (data (i32.const 8) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00s\00t\00d\00/\00m\00a\00t\00h\00.\00t\00s\00") (data (i32.const 48) "\c0\00\00\00\01\00\00\00\00\00\00\00\c0\00\00\00n\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 256) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00@\00\00\00@\00\00\00\c0\00\00\00\18\00\00\00") + (data (i32.const 256) "\10\00\00\00\01\00\00\00\04\00\00\00\10\00\00\00@\00\00\00@\00\00\00\c0\00\00\00\18\00\00\00") (data (i32.const 288) " \00\00\00\01\00\00\00\00\00\00\00 \00\00\00)\15DNn\83\f9\a2\c0\dd4\f5\d1W\'\fcA\90C<\99\95b\dba\c5\bb\de\abcQ\fe") - (data (i32.const 336) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\000\01\00\000\01\00\00 \00\00\00\04\00\00\00") + (data (i32.const 336) "\10\00\00\00\01\00\00\00\04\00\00\00\10\00\00\000\01\00\000\01\00\00 \00\00\00\04\00\00\00") (data (i32.const 368) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s\00") (data (i32.const 408) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00P\00R\00N\00G\00 \00m\00u\00s\00t\00 \00b\00e\00 \00s\00e\00e\00d\00e\00d\00.\00") (table $0 1 funcref) diff --git a/tests/compiler/std/new.optimized.wat b/tests/compiler/std/new.optimized.wat index d537cbb35b..6e75dfd698 100644 --- a/tests/compiler/std/new.optimized.wat +++ b/tests/compiler/std/new.optimized.wat @@ -70,7 +70,7 @@ i32.const -1 i32.store offset=4 local.get $0 - i32.const 3 + i32.const 4 i32.store offset=8 local.get $0 i32.const 8 diff --git a/tests/compiler/std/new.untouched.wat b/tests/compiler/std/new.untouched.wat index e5cc939cfe..0ca03f9cd2 100644 --- a/tests/compiler/std/new.untouched.wat +++ b/tests/compiler/std/new.untouched.wat @@ -130,7 +130,7 @@ i32.eqz if i32.const 8 - i32.const 3 + i32.const 4 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 diff --git a/tests/compiler/std/object-literal.optimized.wat b/tests/compiler/std/object-literal.optimized.wat index c2c9990265..d54e13e6d1 100644 --- a/tests/compiler/std/object-literal.optimized.wat +++ b/tests/compiler/std/object-literal.optimized.wat @@ -249,7 +249,7 @@ i32.const 112 global.set $~lib/rt/stub/offset i32.const 8 - i32.const 3 + i32.const 4 call $~lib/rt/stub/__alloc local.tee $0 i32.const 1 @@ -260,7 +260,7 @@ local.get $0 call $std/object-literal/bar i32.const 4 - i32.const 4 + i32.const 5 call $~lib/rt/stub/__alloc local.tee $0 i32.const 2 @@ -278,7 +278,7 @@ unreachable end i32.const 4 - i32.const 4 + i32.const 5 call $~lib/rt/stub/__alloc local.tee $0 i32.const 3 diff --git a/tests/compiler/std/object-literal.untouched.wat b/tests/compiler/std/object-literal.untouched.wat index 13ae5e568a..35b7d46bd2 100644 --- a/tests/compiler/std/object-literal.untouched.wat +++ b/tests/compiler/std/object-literal.untouched.wat @@ -414,7 +414,7 @@ global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset i32.const 8 - i32.const 3 + i32.const 4 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 @@ -427,7 +427,7 @@ local.get $0 call $std/object-literal/bar i32.const 4 - i32.const 4 + i32.const 5 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $1 @@ -437,7 +437,7 @@ local.get $1 call $std/object-literal/bar2 i32.const 4 - i32.const 4 + i32.const 5 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $2 diff --git a/tests/compiler/std/operator-overloading.optimized.wat b/tests/compiler/std/operator-overloading.optimized.wat index 6c7927dd2b..78b7fa40ae 100644 --- a/tests/compiler/std/operator-overloading.optimized.wat +++ b/tests/compiler/std/operator-overloading.optimized.wat @@ -150,7 +150,7 @@ ) (func $std/operator-overloading/Tester#constructor (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - i32.const 3 + i32.const 4 call $~lib/rt/stub/__alloc local.tee $2 local.get $0 @@ -1198,7 +1198,7 @@ ) (func $std/operator-overloading/TesterInlineStatic#constructor (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - i32.const 4 + i32.const 5 call $~lib/rt/stub/__alloc local.tee $2 local.get $0 @@ -1210,7 +1210,7 @@ ) (func $std/operator-overloading/TesterInlineInstance#constructor (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - i32.const 5 + i32.const 6 call $~lib/rt/stub/__alloc local.tee $2 local.get $0 diff --git a/tests/compiler/std/operator-overloading.untouched.wat b/tests/compiler/std/operator-overloading.untouched.wat index 4aaba657c5..4cb993d07d 100644 --- a/tests/compiler/std/operator-overloading.untouched.wat +++ b/tests/compiler/std/operator-overloading.untouched.wat @@ -199,7 +199,7 @@ i32.eqz if i32.const 8 - i32.const 3 + i32.const 4 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 @@ -2006,7 +2006,7 @@ i32.eqz if i32.const 8 - i32.const 4 + i32.const 5 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 @@ -2024,7 +2024,7 @@ i32.eqz if i32.const 8 - i32.const 5 + i32.const 6 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 diff --git a/tests/compiler/std/set.optimized.wat b/tests/compiler/std/set.optimized.wat index 1d49e53971..1c4281a516 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.optimized.wat @@ -32,7 +32,7 @@ (data (i32.const 264) "$\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 320) "\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 360) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00s\00e\00t\00.\00t\00s") - (data (i32.const 400) "\0d\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\004\04\00\00\00\00\00\004\00\00\00\00\00\00\00T\04\00\00\00\00\00\00T\00\00\00\00\00\00\00\94\04\00\00\00\00\00\00\94\00\00\00\00\00\00\00\14\05\00\00\00\00\00\00\14\01\00\00\00\00\00\00\94\0c\00\00\00\00\00\00\14\0d") + (data (i32.const 400) "\0e\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\10\00\00\00\00\00\00\004\04\00\00\00\00\00\004\00\00\00\00\00\00\00T\04\00\00\00\00\00\00T\00\00\00\00\00\00\00\94\04\00\00\00\00\00\00\94\00\00\00\00\00\00\00\14\05\00\00\00\00\00\00\14\01\00\00\00\00\00\00\94\0c\00\00\00\00\00\00\14\0d") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) @@ -625,10 +625,10 @@ if unreachable end - i32.const 512 + i32.const 528 i32.const 0 i32.store - i32.const 2080 + i32.const 2096 i32.const 0 i32.store i32.const 0 @@ -642,7 +642,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 512 + i32.const 528 i32.add i32.const 0 i32.store offset=4 @@ -661,7 +661,7 @@ i32.add i32.const 2 i32.shl - i32.const 512 + i32.const 528 i32.add i32.const 0 i32.store offset=96 @@ -679,13 +679,13 @@ br $loop|0 end end - i32.const 512 - i32.const 2096 + i32.const 528 + i32.const 2112 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 512 + i32.const 528 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/prepareSize (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) @@ -1377,7 +1377,7 @@ ) (func $~lib/rt/pure/__retain (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 508 + i32.const 516 i32.gt_u if local.get $0 @@ -2006,7 +2006,7 @@ ) (func $~lib/rt/pure/__release (; 31 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 - i32.const 508 + i32.const 516 i32.gt_u if local.get $0 @@ -2051,7 +2051,7 @@ (func $~lib/set/Set#constructor (; 33 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - i32.const 3 + i32.const 4 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 @@ -2667,7 +2667,7 @@ (func $~lib/set/Set#constructor (; 41 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - i32.const 4 + i32.const 5 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 @@ -3225,7 +3225,7 @@ (func $~lib/set/Set#constructor (; 47 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - i32.const 5 + i32.const 6 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 @@ -3849,7 +3849,7 @@ (func $~lib/set/Set#constructor (; 55 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - i32.const 6 + i32.const 7 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 @@ -4407,7 +4407,7 @@ (func $~lib/set/Set#constructor (; 61 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - i32.const 7 + i32.const 8 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 @@ -5033,7 +5033,7 @@ (func $~lib/set/Set#constructor (; 69 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - i32.const 8 + i32.const 9 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 @@ -5341,7 +5341,7 @@ (func $~lib/set/Set#constructor (; 72 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - i32.const 9 + i32.const 10 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 @@ -6003,7 +6003,7 @@ (func $~lib/set/Set#constructor (; 80 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - i32.const 10 + i32.const 11 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 @@ -6278,7 +6278,7 @@ (func $~lib/set/Set#constructor (; 82 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - i32.const 11 + i32.const 12 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 @@ -6878,7 +6878,7 @@ (func $~lib/set/Set#constructor (; 89 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - i32.const 12 + i32.const 13 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 @@ -7489,7 +7489,7 @@ ) (func $~lib/rt/pure/__visit (; 97 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 - i32.const 508 + i32.const 516 i32.lt_u if return @@ -7598,20 +7598,48 @@ end ) (func $~lib/rt/__visit_members (; 98 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) block $folding-inner0 block $switch$1$default - block $switch$1$case$4 - block $switch$1$case$2 + block $switch$1$case$5 + 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$case$5 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $switch$1$default + end + return + end + local.get $0 + i32.load + local.tee $0 + if local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $switch$1$default + local.get $1 + call $~lib/rt/pure/__visit 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 $0 + i32.load offset=4 + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + local.get $0 + i32.load offset=8 local.tee $0 if local.get $0 diff --git a/tests/compiler/std/set.untouched.wat b/tests/compiler/std/set.untouched.wat index 57a6df6624..35017a43de 100644 --- a/tests/compiler/std/set.untouched.wat +++ b/tests/compiler/std/set.untouched.wat @@ -31,7 +31,7 @@ (data (i32.const 264) "$\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 320) "\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 360) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00s\00e\00t\00.\00t\00s\00") - (data (i32.const 400) "\0d\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\004\04\00\00\00\00\00\004\00\00\00\00\00\00\00T\04\00\00\00\00\00\00T\00\00\00\00\00\00\00\94\04\00\00\00\00\00\00\94\00\00\00\00\00\00\00\14\05\00\00\00\00\00\00\14\01\00\00\00\00\00\00\94\0c\00\00\00\00\00\00\14\0d\00\00\00\00\00\00") + (data (i32.const 400) "\0e\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\10\00\00\00\00\00\00\004\04\00\00\00\00\00\004\00\00\00\00\00\00\00T\04\00\00\00\00\00\00T\00\00\00\00\00\00\00\94\04\00\00\00\00\00\00\94\00\00\00\00\00\00\00\14\05\00\00\00\00\00\00\14\01\00\00\00\00\00\00\94\0c\00\00\00\00\00\00\14\0d\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)) @@ -42,7 +42,7 @@ (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 400)) - (global $~lib/heap/__heap_base i32 (i32.const 508)) + (global $~lib/heap/__heap_base i32 (i32.const 516)) (export "memory" (memory $0)) (start $start) (func $~lib/rt/tlsf/removeBlock (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) @@ -3609,7 +3609,7 @@ i32.eqz if i32.const 24 - i32.const 3 + i32.const 4 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -4360,7 +4360,7 @@ i32.eqz if i32.const 24 - i32.const 4 + i32.const 5 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -5096,7 +5096,7 @@ i32.eqz if i32.const 24 - i32.const 5 + i32.const 6 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -5862,7 +5862,7 @@ i32.eqz if i32.const 24 - i32.const 6 + i32.const 7 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -6598,7 +6598,7 @@ i32.eqz if i32.const 24 - i32.const 7 + i32.const 8 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -7368,7 +7368,7 @@ i32.eqz if i32.const 24 - i32.const 8 + i32.const 9 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -8096,7 +8096,7 @@ i32.eqz if i32.const 24 - i32.const 9 + i32.const 10 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -8915,7 +8915,7 @@ i32.eqz if i32.const 24 - i32.const 10 + i32.const 11 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -9646,7 +9646,7 @@ i32.eqz if i32.const 24 - i32.const 11 + i32.const 12 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -10381,7 +10381,7 @@ i32.eqz if i32.const 24 - i32.const 12 + i32.const 13 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -11349,23 +11349,34 @@ (func $~lib/rt/__visit_members (; 140 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block $switch$1$default - block $switch$1$case$14 - block $switch$1$case$13 - block $switch$1$case$12 - block $switch$1$case$11 - block $switch$1$case$10 - block $switch$1$case$9 - block $switch$1$case$8 - block $switch$1$case$7 - block $switch$1$case$6 - block $switch$1$case$5 - 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$case$5 $switch$1$case$6 $switch$1$case$7 $switch$1$case$8 $switch$1$case$9 $switch$1$case$10 $switch$1$case$11 $switch$1$case$12 $switch$1$case$13 $switch$1$case$14 $switch$1$default + block $switch$1$case$15 + block $switch$1$case$14 + block $switch$1$case$13 + block $switch$1$case$12 + block $switch$1$case$11 + block $switch$1$case$10 + block $switch$1$case$9 + block $switch$1$case$8 + block $switch$1$case$7 + block $switch$1$case$6 + block $switch$1$case$5 + 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$case$5 $switch$1$case$6 $switch$1$case$7 $switch$1$case$8 $switch$1$case$9 $switch$1$case$10 $switch$1$case$11 $switch$1$case$12 $switch$1$case$13 $switch$1$case$14 $switch$1$case$15 $switch$1$default + end + return + end + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit end return end @@ -11377,6 +11388,22 @@ local.get $1 call $~lib/rt/pure/__visit end + local.get $0 + i32.load offset=4 + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + local.get $0 + i32.load offset=8 + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end return end local.get $0 diff --git a/tests/compiler/std/static-array.optimized.wat b/tests/compiler/std/static-array.optimized.wat index 86307a5777..b253a5bb30 100644 --- a/tests/compiler/std/static-array.optimized.wat +++ b/tests/compiler/std/static-array.optimized.wat @@ -12,14 +12,14 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 8) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02") - (data (i32.const 32) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00\18\00\00\00\18\00\00\00\08\00\00\00\02") + (data (i32.const 32) "\10\00\00\00\01\00\00\00\04\00\00\00\10\00\00\00\18\00\00\00\18\00\00\00\08\00\00\00\02") (data (i32.const 64) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\03\00\00\00\00\00\00\00\04") - (data (i32.const 96) "\10\00\00\00\01\00\00\00\04\00\00\00\10\00\00\00P\00\00\00P\00\00\00\10\00\00\00\02") + (data (i32.const 96) "\10\00\00\00\01\00\00\00\05\00\00\00\10\00\00\00P\00\00\00P\00\00\00\10\00\00\00\02") (data (i32.const 128) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\00\00\c0?\00\00 @") - (data (i32.const 152) "\10\00\00\00\01\00\00\00\05\00\00\00\10\00\00\00\90\00\00\00\90\00\00\00\08\00\00\00\02") + (data (i32.const 152) "\10\00\00\00\01\00\00\00\06\00\00\00\10\00\00\00\90\00\00\00\90\00\00\00\08\00\00\00\02") (data (i32.const 184) "\10\00\00\00\01\00\00\00\00\00\00\00\10") (data (i32.const 206) "\f4?\00\00\00\00\00\00\02@") - (data (i32.const 216) "\10\00\00\00\01\00\00\00\06\00\00\00\10\00\00\00\c8\00\00\00\c8\00\00\00\10\00\00\00\02") + (data (i32.const 216) "\10\00\00\00\01\00\00\00\07\00\00\00\10\00\00\00\c8\00\00\00\c8\00\00\00\10\00\00\00\02") (data (i32.const 248) "&\00\00\00\01\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 304) "$\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 360) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") diff --git a/tests/compiler/std/static-array.untouched.wat b/tests/compiler/std/static-array.untouched.wat index 4fba861c4f..67da041bfb 100644 --- a/tests/compiler/std/static-array.untouched.wat +++ b/tests/compiler/std/static-array.untouched.wat @@ -14,13 +14,13 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 8) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00") - (data (i32.const 32) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00\18\00\00\00\18\00\00\00\08\00\00\00\02\00\00\00") + (data (i32.const 32) "\10\00\00\00\01\00\00\00\04\00\00\00\10\00\00\00\18\00\00\00\18\00\00\00\08\00\00\00\02\00\00\00") (data (i32.const 64) "\10\00\00\00\01\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") - (data (i32.const 96) "\10\00\00\00\01\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") + (data (i32.const 96) "\10\00\00\00\01\00\00\00\05\00\00\00\10\00\00\00P\00\00\00P\00\00\00\10\00\00\00\02\00\00\00") (data (i32.const 128) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\00\00\c0?\00\00 @") - (data (i32.const 152) "\10\00\00\00\01\00\00\00\05\00\00\00\10\00\00\00\90\00\00\00\90\00\00\00\08\00\00\00\02\00\00\00") + (data (i32.const 152) "\10\00\00\00\01\00\00\00\06\00\00\00\10\00\00\00\90\00\00\00\90\00\00\00\08\00\00\00\02\00\00\00") (data (i32.const 184) "\10\00\00\00\01\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@") - (data (i32.const 216) "\10\00\00\00\01\00\00\00\06\00\00\00\10\00\00\00\c8\00\00\00\c8\00\00\00\10\00\00\00\02\00\00\00") + (data (i32.const 216) "\10\00\00\00\01\00\00\00\07\00\00\00\10\00\00\00\c8\00\00\00\c8\00\00\00\10\00\00\00\02\00\00\00") (data (i32.const 248) "&\00\00\00\01\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") (data (i32.const 304) "$\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 360) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") diff --git a/tests/compiler/std/string-encoding.optimized.wat b/tests/compiler/std/string-encoding.optimized.wat index 69fb402a54..bce18472bb 100644 --- a/tests/compiler/std/string-encoding.optimized.wat +++ b/tests/compiler/std/string-encoding.optimized.wat @@ -31,7 +31,7 @@ (data (i32.const 568) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00h\00i\00R\d8b\df") (data (i32.const 592) "*3\00\00\01\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 13712) "\ba\1c\00\00\01\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 21088) "\03\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10") + (data (i32.const 21088) "\04\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\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)) @@ -82,7 +82,7 @@ ) (func $~lib/rt/pure/__retain (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 21116 + i32.const 21124 i32.gt_u if local.get $0 @@ -723,10 +723,10 @@ if unreachable end - i32.const 21120 + i32.const 21136 i32.const 0 i32.store - i32.const 22688 + i32.const 22704 i32.const 0 i32.store i32.const 0 @@ -740,7 +740,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 21120 + i32.const 21136 i32.add i32.const 0 i32.store offset=4 @@ -759,7 +759,7 @@ i32.add i32.const 2 i32.shl - i32.const 21120 + i32.const 21136 i32.add i32.const 0 i32.store offset=96 @@ -777,13 +777,13 @@ br $loop|0 end end - i32.const 21120 - i32.const 22704 + i32.const 21136 + i32.const 22720 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 21120 + i32.const 21136 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/prepareSize (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) @@ -1774,7 +1774,7 @@ ) (func $~lib/rt/pure/__release (; 29 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 - i32.const 21116 + i32.const 21124 i32.gt_u if local.get $0 @@ -3792,7 +3792,7 @@ ) (func $~lib/rt/pure/__visit (; 56 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 - i32.const 21116 + i32.const 21124 i32.lt_u if return @@ -3901,19 +3901,47 @@ end ) (func $~lib/rt/__visit_members (; 57 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) block $switch$1$default - block $switch$1$case$4 - block $switch$1$case$2 + block $switch$1$case$5 + 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$case$5 $switch$1$default + end + return + end + local.get $0 + i32.load + local.tee $0 + if 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 $1 + call $~lib/rt/pure/__visit 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 $0 + i32.load offset=4 + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + local.get $0 + i32.load offset=8 local.tee $0 if local.get $0 diff --git a/tests/compiler/std/string-encoding.untouched.wat b/tests/compiler/std/string-encoding.untouched.wat index e34a9f852e..f29a8ad1f7 100644 --- a/tests/compiler/std/string-encoding.untouched.wat +++ b/tests/compiler/std/string-encoding.untouched.wat @@ -32,7 +32,7 @@ (data (i32.const 568) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00h\00i\00R\d8b\df") (data (i32.const 592) "*3\00\00\01\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") (data (i32.const 13712) "\ba\1c\00\00\01\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") - (data (i32.const 21088) "\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") + (data (i32.const 21088) "\04\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\10\00\00\00\00\00\00\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $std/string-encoding/str (mut i32) (i32.const 24)) @@ -44,7 +44,7 @@ (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 21088)) - (global $~lib/heap/__heap_base i32 (i32.const 21116)) + (global $~lib/heap/__heap_base i32 (i32.const 21124)) (export "memory" (memory $0)) (start $start) (func $~lib/rt/pure/increment (; 5 ;) (type $FUNCSIG$vi) (param $0 i32) @@ -5641,13 +5641,24 @@ (func $~lib/rt/__visit_members (; 59 ;) (type $FUNCSIG$vii) (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 + block $switch$1$case$5 + 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$case$5 $switch$1$default + end + return + end + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit end return end @@ -5659,6 +5670,22 @@ local.get $1 call $~lib/rt/pure/__visit end + local.get $0 + i32.load offset=4 + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + local.get $0 + i32.load offset=8 + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end return end unreachable diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index 7167232f2f..d8807d5548 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -79,11 +79,11 @@ (data (i32.const 1624) "$\00\00\00\01\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 1680) "P\00\00\00\01\00\00\00\00\00\00\00P") (data (i32.const 1702) "\f0?\17n\05\b5\b5\b8\93F\f5\f9?\e9\03O8Mc\b3\d8bu\f6\ddS2\1d0\f9Hw\82Z\c3\fco%\d4\c2&a\eb$\a7\f1\1e\0e\ccg\99g\fc\dfRJqn<\bfs\7f\ddO\15uF\8d+\83\dfD\ba{") - (data (i32.const 1776) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00\a0\06\00\00\a0\06\00\00P\00\00\00\n") + (data (i32.const 1776) "\10\00\00\00\01\00\00\00\04\00\00\00\10\00\00\00\a0\06\00\00\a0\06\00\00P\00\00\00\n") (data (i32.const 1809) "\01\00\00\01") (data (i32.const 1821) "\01") (data (i32.const 1830) "\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\f6J\e1\c7\02-\b5D\b4\9d\d9yCx\eaD\91\02(,*\8b E5\032\b7\f4\adTE\02\84\fe\e4q\d9\89E\81\12\1f/\e7\'\c0E!\d7\e6\fa\e01\f4E\ea\8c\a09Y>)F$\b0\08\88\ef\8d_F") - (data (i32.const 2080) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00 \07\00\00 \07\00\00\00\01\00\00 ") + (data (i32.const 2080) "\10\00\00\00\01\00\00\00\04\00\00\00\10\00\00\00 \07\00\00 \07\00\00\00\01\00\00 ") (data (i32.const 2112) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\001\00.") (data (i32.const 2136) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00.\000\000") (data (i32.const 2160) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\00-\005") @@ -321,11 +321,11 @@ (data (i32.const 12688) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000") (data (i32.const 12712) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") (data (i32.const 12744) "\b8\02\00\00\01\00\00\00\00\00\00\00\b8\02\00\00\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)F$\b0\08\88\ef\8d_F") - (data (i32.const 2080) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00 \07\00\00 \07\00\00\00\01\00\00 \00\00\00") + (data (i32.const 2080) "\10\00\00\00\01\00\00\00\04\00\00\00\10\00\00\00 \07\00\00 \07\00\00\00\01\00\00 \00\00\00") (data (i32.const 2112) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\001\00.\00") (data (i32.const 2136) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00.\000\000\00") (data (i32.const 2160) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\00-\005\00") @@ -280,7 +280,7 @@ (data (i32.const 11088) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00,\00a\00,\00b\00,\00c\00") (data (i32.const 11120) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00a\00,\00b\00,\00c\00,\00") (data (i32.const 11152) "\90\01\00\00\01\00\00\00\00\00\00\00\90\01\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\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 11568) "\10\00\00\00\01\00\00\00\06\00\00\00\10\00\00\00\a0+\00\00\a0+\00\00\90\01\00\00d\00\00\00") + (data (i32.const 11568) "\10\00\00\00\01\00\00\00\07\00\00\00\10\00\00\00\a0+\00\00\a0+\00\00\90\01\00\00d\00\00\00") (data (i32.const 11600) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\008\00") (data (i32.const 11624) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\001\002\00") (data (i32.const 11648) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00-\001\000\000\000\00") @@ -322,11 +322,11 @@ (data (i32.const 13136) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000\00") (data (i32.const 13160) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00") (data (i32.const 13192) "\b8\02\00\00\01\00\00\00\00\00\00\00\b8\02\00\00\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#constructor (; 7 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - i32.const 3 + i32.const 4 call $~lib/rt/stub/__alloc local.tee $0 i32.const 0 @@ -445,7 +445,7 @@ (func $~lib/map/Map#constructor (; 8 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - i32.const 4 + i32.const 5 call $~lib/rt/stub/__alloc local.tee $0 i32.const 0 diff --git a/tests/compiler/std/symbol.untouched.wat b/tests/compiler/std/symbol.untouched.wat index 7774c4e106..d577d40248 100644 --- a/tests/compiler/std/symbol.untouched.wat +++ b/tests/compiler/std/symbol.untouched.wat @@ -528,7 +528,7 @@ i32.eqz if i32.const 24 - i32.const 3 + i32.const 4 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 @@ -600,7 +600,7 @@ i32.eqz if i32.const 24 - i32.const 4 + i32.const 5 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index 9387f140de..46e0960990 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -87,11 +87,11 @@ (data (i32.const 1360) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") (data (i32.const 1400) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") (data (i32.const 1440) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\n\00\00\00\0c\00\00\00\0e") - (data (i32.const 1472) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00\b0\05\00\00\b0\05\00\00\0c\00\00\00\03") + (data (i32.const 1472) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00\b0\05\00\00\b0\05\00\00\0c\00\00\00\03") (data (i32.const 1504) "$\00\00\00\01\00\00\00\00\00\00\00$\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t") - (data (i32.const 1560) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00\f0\05\00\00\f0\05\00\00$\00\00\00\t") + (data (i32.const 1560) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00\f0\05\00\00\f0\05\00\00$\00\00\00\t") (data (i32.const 1592) ",\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\n") - (data (i32.const 1656) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00H\06\00\00H\06\00\00,\00\00\00\0b") + (data (i32.const 1656) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00H\06\00\00H\06\00\00,\00\00\00\0b") (data (i32.const 1692) "\01\00\00\00\01") (data (i32.const 1704) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000") (data (i32.const 1728) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00,") @@ -101,15 +101,15 @@ (data (i32.const 1840) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") (data (i32.const 1880) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") (data (i32.const 1912) "\b8\02\00\00\01\00\00\00\00\00\00\00\b8\02\00\00\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~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/Int32Array,i32>~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/Uint64Array,u64>~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/tlsf/ROOT (mut i32) (i32.const 0)) @@ -714,10 +714,10 @@ if unreachable end - i32.const 3280 + i32.const 3296 i32.const 0 i32.store - i32.const 4848 + i32.const 4864 i32.const 0 i32.store i32.const 0 @@ -731,7 +731,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 3280 + i32.const 3296 i32.add i32.const 0 i32.store offset=4 @@ -750,7 +750,7 @@ i32.add i32.const 2 i32.shl - i32.const 3280 + i32.const 3296 i32.add i32.const 0 i32.store offset=96 @@ -768,13 +768,13 @@ br $loop|0 end end - i32.const 3280 - i32.const 4864 + i32.const 3296 + i32.const 4880 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 3280 + i32.const 3296 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/prepareSize (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) @@ -1690,7 +1690,7 @@ ) (func $~lib/rt/pure/__retain (; 23 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 3276 + i32.const 3284 i32.gt_u if local.get $0 @@ -2088,7 +2088,7 @@ ) (func $~lib/rt/pure/__release (; 30 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 - i32.const 3276 + i32.const 3284 i32.gt_u if local.get $0 @@ -2165,7 +2165,7 @@ ) (func $~lib/typedarray/Int8Array#constructor (; 32 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 12 - i32.const 3 + i32.const 4 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.get $0 @@ -2181,7 +2181,7 @@ ) (func $~lib/typedarray/Uint8Array#constructor (; 34 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 12 - i32.const 4 + i32.const 5 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.get $0 @@ -2190,7 +2190,7 @@ ) (func $~lib/typedarray/Uint8ClampedArray#constructor (; 35 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 12 - i32.const 5 + i32.const 6 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.get $0 @@ -2199,7 +2199,7 @@ ) (func $~lib/typedarray/Int16Array#constructor (; 36 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 12 - i32.const 6 + i32.const 7 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.get $0 @@ -2214,7 +2214,7 @@ ) (func $~lib/typedarray/Uint16Array#constructor (; 38 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 12 - i32.const 7 + i32.const 8 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.get $0 @@ -2223,7 +2223,7 @@ ) (func $~lib/typedarray/Int32Array#constructor (; 39 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 12 - i32.const 8 + i32.const 9 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.get $0 @@ -2238,7 +2238,7 @@ ) (func $~lib/typedarray/Uint32Array#constructor (; 41 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 12 - i32.const 9 + i32.const 10 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.get $0 @@ -2247,7 +2247,7 @@ ) (func $~lib/typedarray/Int64Array#constructor (; 42 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 12 - i32.const 10 + i32.const 11 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.get $0 @@ -2262,7 +2262,7 @@ ) (func $~lib/typedarray/Uint64Array#constructor (; 44 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 12 - i32.const 11 + i32.const 12 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.get $0 @@ -2271,7 +2271,7 @@ ) (func $~lib/typedarray/Float32Array#constructor (; 45 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 12 - i32.const 12 + i32.const 13 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.get $0 @@ -2280,7 +2280,7 @@ ) (func $~lib/typedarray/Float64Array#constructor (; 46 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 12 - i32.const 13 + i32.const 14 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.get $0 @@ -2834,7 +2834,7 @@ end local.set $1 i32.const 12 - i32.const 8 + i32.const 9 call $~lib/rt/tlsf/__alloc local.tee $2 local.get $4 @@ -2943,7 +2943,7 @@ end local.set $1 i32.const 12 - i32.const 13 + i32.const 14 call $~lib/rt/tlsf/__alloc local.tee $2 local.get $4 @@ -3754,7 +3754,7 @@ end local.set $1 i32.const 12 - i32.const 3 + i32.const 4 call $~lib/rt/tlsf/__alloc local.tee $2 local.get $4 @@ -5869,7 +5869,7 @@ i32.load offset=4 local.set $5 i32.const 12 - i32.const 3 + i32.const 4 call $~lib/rt/tlsf/__alloc local.set $2 local.get $0 @@ -5999,7 +5999,7 @@ i32.load offset=4 local.set $5 i32.const 12 - i32.const 4 + i32.const 5 call $~lib/rt/tlsf/__alloc local.set $2 local.get $0 @@ -6148,7 +6148,7 @@ i32.load offset=4 local.set $5 i32.const 12 - i32.const 5 + i32.const 6 call $~lib/rt/tlsf/__alloc local.set $2 local.get $0 @@ -6281,7 +6281,7 @@ i32.load offset=4 local.set $5 i32.const 12 - i32.const 6 + i32.const 7 call $~lib/rt/tlsf/__alloc local.set $1 local.get $4 @@ -6447,7 +6447,7 @@ i32.load offset=4 local.set $5 i32.const 12 - i32.const 7 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $1 local.get $4 @@ -6613,7 +6613,7 @@ i32.load offset=4 local.set $5 i32.const 12 - i32.const 8 + i32.const 9 call $~lib/rt/tlsf/__alloc local.set $1 local.get $4 @@ -6756,7 +6756,7 @@ i32.load offset=4 local.set $5 i32.const 12 - i32.const 9 + i32.const 10 call $~lib/rt/tlsf/__alloc local.set $1 local.get $4 @@ -6932,7 +6932,7 @@ i32.load offset=4 local.set $5 i32.const 12 - i32.const 10 + i32.const 11 call $~lib/rt/tlsf/__alloc local.set $1 local.get $4 @@ -7098,7 +7098,7 @@ i32.load offset=4 local.set $5 i32.const 12 - i32.const 11 + i32.const 12 call $~lib/rt/tlsf/__alloc local.set $1 local.get $4 @@ -7274,7 +7274,7 @@ i32.load offset=4 local.set $5 i32.const 12 - i32.const 12 + i32.const 13 call $~lib/rt/tlsf/__alloc local.set $1 local.get $4 @@ -7450,7 +7450,7 @@ i32.load offset=4 local.set $5 i32.const 12 - i32.const 13 + i32.const 14 call $~lib/rt/tlsf/__alloc local.set $1 local.get $4 @@ -7762,7 +7762,7 @@ i32.load offset=8 local.set $5 i32.const 12 - i32.const 3 + i32.const 4 call $~lib/rt/tlsf/__alloc local.set $1 local.get $5 @@ -7952,7 +7952,7 @@ i32.load offset=8 local.set $5 i32.const 12 - i32.const 4 + i32.const 5 call $~lib/rt/tlsf/__alloc local.set $1 local.get $5 @@ -8130,7 +8130,7 @@ i32.load offset=8 local.set $5 i32.const 12 - i32.const 5 + i32.const 6 call $~lib/rt/tlsf/__alloc local.set $1 local.get $5 @@ -8322,7 +8322,7 @@ call $~lib/typedarray/Int16Array#get:length local.set $5 i32.const 12 - i32.const 6 + i32.const 7 call $~lib/rt/tlsf/__alloc local.set $1 local.get $5 @@ -8521,7 +8521,7 @@ call $~lib/typedarray/Int16Array#get:length local.set $5 i32.const 12 - i32.const 7 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $1 local.get $5 @@ -8718,7 +8718,7 @@ call $~lib/typedarray/Int32Array#get:length local.set $5 i32.const 12 - i32.const 8 + i32.const 9 call $~lib/rt/tlsf/__alloc local.set $1 local.get $5 @@ -8915,7 +8915,7 @@ call $~lib/typedarray/Int32Array#get:length local.set $5 i32.const 12 - i32.const 9 + i32.const 10 call $~lib/rt/tlsf/__alloc local.set $1 local.get $5 @@ -9112,7 +9112,7 @@ call $~lib/typedarray/Int64Array#get:length local.set $5 i32.const 12 - i32.const 10 + i32.const 11 call $~lib/rt/tlsf/__alloc local.set $1 local.get $5 @@ -9309,7 +9309,7 @@ call $~lib/typedarray/Int64Array#get:length local.set $5 i32.const 12 - i32.const 11 + i32.const 12 call $~lib/rt/tlsf/__alloc local.set $1 local.get $5 @@ -9506,7 +9506,7 @@ call $~lib/typedarray/Int32Array#get:length local.set $5 i32.const 12 - i32.const 12 + i32.const 13 call $~lib/rt/tlsf/__alloc local.set $1 local.get $5 @@ -9703,7 +9703,7 @@ call $~lib/typedarray/Int64Array#get:length local.set $5 i32.const 12 - i32.const 13 + i32.const 14 call $~lib/rt/tlsf/__alloc local.set $1 local.get $5 @@ -14797,7 +14797,7 @@ end local.set $0 i32.const 12 - i32.const 4 + i32.const 5 call $~lib/rt/tlsf/__alloc local.tee $1 local.get $3 @@ -15024,7 +15024,7 @@ end local.set $0 i32.const 12 - i32.const 5 + i32.const 6 call $~lib/rt/tlsf/__alloc local.tee $1 local.get $3 @@ -15308,7 +15308,7 @@ end local.set $1 i32.const 12 - i32.const 6 + i32.const 7 call $~lib/rt/tlsf/__alloc local.tee $2 local.get $3 @@ -15602,7 +15602,7 @@ end local.set $1 i32.const 12 - i32.const 7 + i32.const 8 call $~lib/rt/tlsf/__alloc local.tee $2 local.get $3 @@ -16047,7 +16047,7 @@ end local.set $1 i32.const 12 - i32.const 9 + i32.const 10 call $~lib/rt/tlsf/__alloc local.tee $2 local.get $3 @@ -16329,7 +16329,7 @@ end local.set $1 i32.const 12 - i32.const 10 + i32.const 11 call $~lib/rt/tlsf/__alloc local.tee $2 local.get $3 @@ -16557,7 +16557,7 @@ end local.set $1 i32.const 12 - i32.const 11 + i32.const 12 call $~lib/rt/tlsf/__alloc local.tee $2 local.get $3 @@ -16842,7 +16842,7 @@ end local.set $1 i32.const 12 - i32.const 12 + i32.const 13 call $~lib/rt/tlsf/__alloc local.tee $2 local.get $3 @@ -27251,7 +27251,7 @@ unreachable end i32.const 12 - i32.const 3 + i32.const 4 call $~lib/rt/tlsf/__alloc local.tee $3 local.get $2 @@ -27454,7 +27454,7 @@ unreachable end i32.const 12 - i32.const 4 + i32.const 5 call $~lib/rt/tlsf/__alloc local.tee $3 local.get $2 @@ -27655,7 +27655,7 @@ unreachable end i32.const 12 - i32.const 5 + i32.const 6 call $~lib/rt/tlsf/__alloc local.tee $3 local.get $2 @@ -27859,7 +27859,7 @@ unreachable end i32.const 12 - i32.const 6 + i32.const 7 call $~lib/rt/tlsf/__alloc local.tee $3 local.get $2 @@ -28065,7 +28065,7 @@ unreachable end i32.const 12 - i32.const 7 + i32.const 8 call $~lib/rt/tlsf/__alloc local.tee $3 local.get $2 @@ -28269,7 +28269,7 @@ unreachable end i32.const 12 - i32.const 8 + i32.const 9 call $~lib/rt/tlsf/__alloc local.tee $3 local.get $2 @@ -28471,7 +28471,7 @@ unreachable end i32.const 12 - i32.const 9 + i32.const 10 call $~lib/rt/tlsf/__alloc local.tee $3 local.get $2 @@ -28673,7 +28673,7 @@ unreachable end i32.const 12 - i32.const 10 + i32.const 11 call $~lib/rt/tlsf/__alloc local.tee $3 local.get $2 @@ -28876,7 +28876,7 @@ unreachable end i32.const 12 - i32.const 11 + i32.const 12 call $~lib/rt/tlsf/__alloc local.tee $3 local.get $2 @@ -29079,7 +29079,7 @@ unreachable end i32.const 12 - i32.const 12 + i32.const 13 call $~lib/rt/tlsf/__alloc local.tee $3 local.get $2 @@ -29280,7 +29280,7 @@ unreachable end i32.const 12 - i32.const 13 + i32.const 14 call $~lib/rt/tlsf/__alloc local.tee $3 local.get $2 @@ -29790,7 +29790,7 @@ local.get $0 i32.const 5 i32.const 0 - i32.const 14 + i32.const 15 i32.const 488 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -29814,7 +29814,7 @@ local.get $0 i32.const 5 i32.const 0 - i32.const 14 + i32.const 15 i32.const 560 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -29838,7 +29838,7 @@ local.get $0 i32.const 5 i32.const 0 - i32.const 14 + i32.const 15 i32.const 584 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -29862,7 +29862,7 @@ local.get $0 i32.const 5 i32.const 0 - i32.const 14 + i32.const 15 i32.const 608 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -29886,7 +29886,7 @@ local.get $0 i32.const 5 i32.const 0 - i32.const 14 + i32.const 15 i32.const 632 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -29950,7 +29950,7 @@ local.get $1 i32.const 3 i32.const 0 - i32.const 14 + i32.const 15 i32.const 656 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -29968,7 +29968,7 @@ local.get $0 i32.const 5 i32.const 0 - i32.const 14 + i32.const 15 i32.const 680 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -30032,7 +30032,7 @@ local.get $0 i32.const 5 i32.const 2 - i32.const 15 + i32.const 16 i32.const 704 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -30056,7 +30056,7 @@ local.get $0 i32.const 5 i32.const 2 - i32.const 15 + i32.const 16 i32.const 744 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -30080,7 +30080,7 @@ local.get $0 i32.const 5 i32.const 2 - i32.const 15 + i32.const 16 i32.const 784 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -30104,7 +30104,7 @@ local.get $0 i32.const 5 i32.const 2 - i32.const 15 + i32.const 16 i32.const 824 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -30128,7 +30128,7 @@ local.get $0 i32.const 5 i32.const 2 - i32.const 15 + i32.const 16 i32.const 864 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -30192,7 +30192,7 @@ local.get $1 i32.const 3 i32.const 2 - i32.const 15 + i32.const 16 i32.const 904 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -30210,7 +30210,7 @@ local.get $0 i32.const 5 i32.const 2 - i32.const 15 + i32.const 16 i32.const 936 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -30471,7 +30471,7 @@ local.tee $3 i32.const 5 i32.const 2 - i32.const 15 + i32.const 16 i32.const 976 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -30500,7 +30500,7 @@ local.tee $5 i32.const 5 i32.const 2 - i32.const 15 + i32.const 16 i32.const 1016 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -30529,7 +30529,7 @@ local.tee $7 i32.const 5 i32.const 2 - i32.const 15 + i32.const 16 i32.const 1056 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -30558,7 +30558,7 @@ local.tee $9 i32.const 5 i32.const 2 - i32.const 15 + i32.const 16 i32.const 1096 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -30587,7 +30587,7 @@ local.tee $11 i32.const 5 i32.const 2 - i32.const 15 + i32.const 16 i32.const 1136 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -30616,7 +30616,7 @@ local.tee $13 i32.const 5 i32.const 2 - i32.const 15 + i32.const 16 i32.const 1176 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -30645,7 +30645,7 @@ local.tee $15 i32.const 5 i32.const 2 - i32.const 15 + i32.const 16 i32.const 1216 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -30674,7 +30674,7 @@ local.tee $17 i32.const 5 i32.const 2 - i32.const 15 + i32.const 16 i32.const 1256 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -30703,7 +30703,7 @@ local.tee $19 i32.const 5 i32.const 2 - i32.const 15 + i32.const 16 i32.const 1296 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -30732,7 +30732,7 @@ local.tee $21 i32.const 5 i32.const 2 - i32.const 15 + i32.const 16 i32.const 1336 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -30762,7 +30762,7 @@ local.tee $23 i32.const 5 i32.const 2 - i32.const 15 + i32.const 16 i32.const 1376 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -30792,7 +30792,7 @@ local.tee $0 i32.const 5 i32.const 2 - i32.const 15 + i32.const 16 i32.const 1416 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -31317,7 +31317,7 @@ ) (func $~lib/rt/pure/__visit (; 438 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 - i32.const 3276 + i32.const 3284 i32.lt_u if return @@ -31426,14 +31426,42 @@ end ) (func $~lib/rt/__visit_members (; 439 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) block $block$4$break block $switch$1$default - block $switch$1$case$2 + block $switch$1$case$5 + 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 $block$4$break $switch$1$case$5 $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $switch$1$default + 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 $0 + i32.load offset=4 + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + local.get $0 + i32.load offset=8 + local.tee $0 + if local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $switch$1$default + local.get $1 + call $~lib/rt/pure/__visit end return end diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index 2adda9e55a..0e92735bf9 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -86,15 +86,15 @@ (data (i32.const 1360) "\14\00\00\00\01\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") (data (i32.const 1400) "\14\00\00\00\01\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") (data (i32.const 1440) "\0c\00\00\00\01\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 1472) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00\b0\05\00\00\b0\05\00\00\0c\00\00\00\03\00\00\00") + (data (i32.const 1472) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00\b0\05\00\00\b0\05\00\00\0c\00\00\00\03\00\00\00") (data (i32.const 1504) "$\00\00\00\01\00\00\00\00\00\00\00$\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00") - (data (i32.const 1560) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00\f0\05\00\00\f0\05\00\00$\00\00\00\t\00\00\00") + (data (i32.const 1560) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00\f0\05\00\00\f0\05\00\00$\00\00\00\t\00\00\00") (data (i32.const 1592) ",\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\n\00\00\00") - (data (i32.const 1656) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00H\06\00\00H\06\00\00,\00\00\00\0b\00\00\00") + (data (i32.const 1656) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00H\06\00\00H\06\00\00,\00\00\00\0b\00\00\00") (data (i32.const 1688) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") (data (i32.const 1704) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000\00") (data (i32.const 1728) "\90\01\00\00\01\00\00\00\00\00\00\00\90\01\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\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 2144) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00\d0\06\00\00\d0\06\00\00\90\01\00\00d\00\00\00") + (data (i32.const 2144) "\10\00\00\00\01\00\00\00\11\00\00\00\10\00\00\00\d0\06\00\00\d0\06\00\00\90\01\00\00d\00\00\00") (data (i32.const 2176) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00,\00") (data (i32.const 2200) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\001\00,\002\00,\003\00,\004\00,\005\00") (data (i32.const 2240) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000\00") @@ -102,15 +102,15 @@ (data (i32.const 2288) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00") (data (i32.const 2328) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00") (data (i32.const 2360) "\b8\02\00\00\01\00\00\00\00\00\00\00\b8\02\00\00\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~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)) @@ -148,7 +148,7 @@ (global $std/typedarray/testArrayWrapValues i32 (i32.const 3552)) (global $~lib/started (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 3568)) - (global $~lib/heap/__heap_base i32 (i32.const 3724)) + (global $~lib/heap/__heap_base i32 (i32.const 3732)) (export "__start" (func $start)) (export "memory" (memory $0)) (func $~lib/rt/tlsf/removeBlock (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) @@ -3723,7 +3723,7 @@ local.get $0 else i32.const 12 - i32.const 3 + i32.const 4 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain end @@ -3750,7 +3750,7 @@ local.get $0 else i32.const 12 - i32.const 4 + i32.const 5 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain end @@ -3770,7 +3770,7 @@ local.get $0 else i32.const 12 - i32.const 5 + i32.const 6 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain end @@ -3790,7 +3790,7 @@ local.get $0 else i32.const 12 - i32.const 6 + i32.const 7 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain end @@ -3812,7 +3812,7 @@ local.get $0 else i32.const 12 - i32.const 7 + i32.const 8 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain end @@ -3834,7 +3834,7 @@ local.get $0 else i32.const 12 - i32.const 8 + i32.const 9 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain end @@ -3856,7 +3856,7 @@ local.get $0 else i32.const 12 - i32.const 9 + i32.const 10 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain end @@ -3878,7 +3878,7 @@ local.get $0 else i32.const 12 - i32.const 10 + i32.const 11 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain end @@ -3900,7 +3900,7 @@ local.get $0 else i32.const 12 - i32.const 11 + i32.const 12 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain end @@ -3922,7 +3922,7 @@ local.get $0 else i32.const 12 - i32.const 12 + i32.const 13 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain end @@ -3944,7 +3944,7 @@ local.get $0 else i32.const 12 - i32.const 13 + i32.const 14 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain end @@ -4614,7 +4614,7 @@ select local.set $3 i32.const 12 - i32.const 8 + i32.const 9 call $~lib/rt/tlsf/__alloc local.set $7 local.get $7 @@ -4745,7 +4745,7 @@ select local.set $3 i32.const 12 - i32.const 13 + i32.const 14 call $~lib/rt/tlsf/__alloc local.set $7 local.get $7 @@ -5716,7 +5716,7 @@ select local.set $3 i32.const 12 - i32.const 3 + i32.const 4 call $~lib/rt/tlsf/__alloc local.set $7 local.get $7 @@ -8927,7 +8927,7 @@ i32.shl local.set $6 i32.const 12 - i32.const 3 + i32.const 4 call $~lib/rt/tlsf/__alloc local.set $7 local.get $6 @@ -9099,7 +9099,7 @@ i32.shl local.set $6 i32.const 12 - i32.const 4 + i32.const 5 call $~lib/rt/tlsf/__alloc local.set $7 local.get $6 @@ -9290,7 +9290,7 @@ i32.shl local.set $6 i32.const 12 - i32.const 5 + i32.const 6 call $~lib/rt/tlsf/__alloc local.set $7 local.get $6 @@ -9462,7 +9462,7 @@ i32.shl local.set $6 i32.const 12 - i32.const 6 + i32.const 7 call $~lib/rt/tlsf/__alloc local.set $7 local.get $6 @@ -9657,7 +9657,7 @@ i32.shl local.set $6 i32.const 12 - i32.const 7 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $7 local.get $6 @@ -9852,7 +9852,7 @@ i32.shl local.set $6 i32.const 12 - i32.const 8 + i32.const 9 call $~lib/rt/tlsf/__alloc local.set $7 local.get $6 @@ -10024,7 +10024,7 @@ i32.shl local.set $6 i32.const 12 - i32.const 9 + i32.const 10 call $~lib/rt/tlsf/__alloc local.set $7 local.get $6 @@ -10219,7 +10219,7 @@ i32.shl local.set $6 i32.const 12 - i32.const 10 + i32.const 11 call $~lib/rt/tlsf/__alloc local.set $7 local.get $6 @@ -10414,7 +10414,7 @@ i32.shl local.set $6 i32.const 12 - i32.const 11 + i32.const 12 call $~lib/rt/tlsf/__alloc local.set $7 local.get $6 @@ -10609,7 +10609,7 @@ i32.shl local.set $6 i32.const 12 - i32.const 12 + i32.const 13 call $~lib/rt/tlsf/__alloc local.set $7 local.get $6 @@ -10804,7 +10804,7 @@ i32.shl local.set $6 i32.const 12 - i32.const 13 + i32.const 14 call $~lib/rt/tlsf/__alloc local.set $7 local.get $6 @@ -11153,7 +11153,7 @@ call $~lib/typedarray/Int8Array#get:length local.set $4 i32.const 12 - i32.const 3 + i32.const 4 call $~lib/rt/tlsf/__alloc local.set $5 local.get $4 @@ -11381,7 +11381,7 @@ call $~lib/typedarray/Uint8Array#get:length local.set $4 i32.const 12 - i32.const 4 + i32.const 5 call $~lib/rt/tlsf/__alloc local.set $5 local.get $4 @@ -11609,7 +11609,7 @@ call $~lib/typedarray/Uint8ClampedArray#get:length local.set $4 i32.const 12 - i32.const 5 + i32.const 6 call $~lib/rt/tlsf/__alloc local.set $5 local.get $4 @@ -11839,7 +11839,7 @@ call $~lib/typedarray/Int16Array#get:length local.set $4 i32.const 12 - i32.const 6 + i32.const 7 call $~lib/rt/tlsf/__alloc local.set $5 local.get $4 @@ -12067,7 +12067,7 @@ call $~lib/typedarray/Uint16Array#get:length local.set $4 i32.const 12 - i32.const 7 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $5 local.get $4 @@ -12293,7 +12293,7 @@ call $~lib/typedarray/Int32Array#get:length local.set $4 i32.const 12 - i32.const 8 + i32.const 9 call $~lib/rt/tlsf/__alloc local.set $5 local.get $4 @@ -12519,7 +12519,7 @@ call $~lib/typedarray/Uint32Array#get:length local.set $4 i32.const 12 - i32.const 9 + i32.const 10 call $~lib/rt/tlsf/__alloc local.set $5 local.get $4 @@ -12746,7 +12746,7 @@ call $~lib/typedarray/Int64Array#get:length local.set $4 i32.const 12 - i32.const 10 + i32.const 11 call $~lib/rt/tlsf/__alloc local.set $5 local.get $4 @@ -12973,7 +12973,7 @@ call $~lib/typedarray/Uint64Array#get:length local.set $4 i32.const 12 - i32.const 11 + i32.const 12 call $~lib/rt/tlsf/__alloc local.set $5 local.get $4 @@ -13200,7 +13200,7 @@ call $~lib/typedarray/Float32Array#get:length local.set $4 i32.const 12 - i32.const 12 + i32.const 13 call $~lib/rt/tlsf/__alloc local.set $5 local.get $4 @@ -13427,7 +13427,7 @@ call $~lib/typedarray/Float64Array#get:length local.set $4 i32.const 12 - i32.const 13 + i32.const 14 call $~lib/rt/tlsf/__alloc local.set $5 local.get $4 @@ -21305,7 +21305,7 @@ select local.set $3 i32.const 12 - i32.const 4 + i32.const 5 call $~lib/rt/tlsf/__alloc local.set $7 local.get $7 @@ -21656,7 +21656,7 @@ select local.set $3 i32.const 12 - i32.const 5 + i32.const 6 call $~lib/rt/tlsf/__alloc local.set $7 local.get $7 @@ -22007,7 +22007,7 @@ select local.set $3 i32.const 12 - i32.const 6 + i32.const 7 call $~lib/rt/tlsf/__alloc local.set $7 local.get $7 @@ -22364,7 +22364,7 @@ select local.set $3 i32.const 12 - i32.const 7 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $7 local.get $7 @@ -22953,7 +22953,7 @@ select local.set $3 i32.const 12 - i32.const 9 + i32.const 10 call $~lib/rt/tlsf/__alloc local.set $7 local.get $7 @@ -23298,7 +23298,7 @@ select local.set $3 i32.const 12 - i32.const 10 + i32.const 11 call $~lib/rt/tlsf/__alloc local.set $7 local.get $7 @@ -23646,7 +23646,7 @@ select local.set $3 i32.const 12 - i32.const 11 + i32.const 12 call $~lib/rt/tlsf/__alloc local.set $7 local.get $7 @@ -23994,7 +23994,7 @@ select local.set $3 i32.const 12 - i32.const 12 + i32.const 13 call $~lib/rt/tlsf/__alloc local.set $7 local.get $7 @@ -37698,7 +37698,7 @@ unreachable end i32.const 12 - i32.const 3 + i32.const 4 call $~lib/rt/tlsf/__alloc local.set $8 local.get $8 @@ -37963,7 +37963,7 @@ unreachable end i32.const 12 - i32.const 4 + i32.const 5 call $~lib/rt/tlsf/__alloc local.set $8 local.get $8 @@ -38226,7 +38226,7 @@ unreachable end i32.const 12 - i32.const 5 + i32.const 6 call $~lib/rt/tlsf/__alloc local.set $8 local.get $8 @@ -38489,7 +38489,7 @@ unreachable end i32.const 12 - i32.const 6 + i32.const 7 call $~lib/rt/tlsf/__alloc local.set $8 local.get $8 @@ -38754,7 +38754,7 @@ unreachable end i32.const 12 - i32.const 7 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $8 local.get $8 @@ -39017,7 +39017,7 @@ unreachable end i32.const 12 - i32.const 8 + i32.const 9 call $~lib/rt/tlsf/__alloc local.set $8 local.get $8 @@ -39278,7 +39278,7 @@ unreachable end i32.const 12 - i32.const 9 + i32.const 10 call $~lib/rt/tlsf/__alloc local.set $8 local.get $8 @@ -39539,7 +39539,7 @@ unreachable end i32.const 12 - i32.const 10 + i32.const 11 call $~lib/rt/tlsf/__alloc local.set $8 local.get $8 @@ -39801,7 +39801,7 @@ unreachable end i32.const 12 - i32.const 11 + i32.const 12 call $~lib/rt/tlsf/__alloc local.set $8 local.get $8 @@ -40063,7 +40063,7 @@ unreachable end i32.const 12 - i32.const 12 + i32.const 13 call $~lib/rt/tlsf/__alloc local.set $8 local.get $8 @@ -40325,7 +40325,7 @@ unreachable end i32.const 12 - i32.const 13 + i32.const 14 call $~lib/rt/tlsf/__alloc local.set $8 local.get $8 @@ -40913,7 +40913,7 @@ local.get $0 i32.const 5 i32.const 0 - i32.const 14 + i32.const 15 i32.const 488 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -40937,7 +40937,7 @@ local.get $0 i32.const 5 i32.const 0 - i32.const 14 + i32.const 15 i32.const 560 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -40961,7 +40961,7 @@ local.get $0 i32.const 5 i32.const 0 - i32.const 14 + i32.const 15 i32.const 584 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -40985,7 +40985,7 @@ local.get $0 i32.const 5 i32.const 0 - i32.const 14 + i32.const 15 i32.const 608 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -41009,7 +41009,7 @@ local.get $0 i32.const 5 i32.const 0 - i32.const 14 + i32.const 15 i32.const 632 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -41077,7 +41077,7 @@ local.get $1 i32.const 3 i32.const 0 - i32.const 14 + i32.const 15 i32.const 656 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -41095,7 +41095,7 @@ local.get $0 i32.const 5 i32.const 0 - i32.const 14 + i32.const 15 i32.const 680 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -41161,7 +41161,7 @@ local.get $9 i32.const 5 i32.const 2 - i32.const 15 + i32.const 16 i32.const 704 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -41185,7 +41185,7 @@ local.get $9 i32.const 5 i32.const 2 - i32.const 15 + i32.const 16 i32.const 744 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -41209,7 +41209,7 @@ local.get $9 i32.const 5 i32.const 2 - i32.const 15 + i32.const 16 i32.const 784 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -41233,7 +41233,7 @@ local.get $9 i32.const 5 i32.const 2 - i32.const 15 + i32.const 16 i32.const 824 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -41257,7 +41257,7 @@ local.get $9 i32.const 5 i32.const 2 - i32.const 15 + i32.const 16 i32.const 864 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -41325,7 +41325,7 @@ local.get $8 i32.const 3 i32.const 2 - i32.const 15 + i32.const 16 i32.const 904 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -41343,7 +41343,7 @@ local.get $9 i32.const 5 i32.const 2 - i32.const 15 + i32.const 16 i32.const 936 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -41623,7 +41623,7 @@ local.tee $0 i32.const 5 i32.const 2 - i32.const 15 + i32.const 16 i32.const 976 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -41655,7 +41655,7 @@ local.tee $2 i32.const 5 i32.const 2 - i32.const 15 + i32.const 16 i32.const 1016 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -41687,7 +41687,7 @@ local.tee $9 i32.const 5 i32.const 2 - i32.const 15 + i32.const 16 i32.const 1056 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -41719,7 +41719,7 @@ local.tee $1 i32.const 5 i32.const 2 - i32.const 15 + i32.const 16 i32.const 1096 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -41751,7 +41751,7 @@ local.tee $7 i32.const 5 i32.const 2 - i32.const 15 + i32.const 16 i32.const 1136 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -41783,7 +41783,7 @@ local.tee $11 i32.const 5 i32.const 2 - i32.const 15 + i32.const 16 i32.const 1176 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -41815,7 +41815,7 @@ local.tee $13 i32.const 5 i32.const 2 - i32.const 15 + i32.const 16 i32.const 1216 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -41847,7 +41847,7 @@ local.tee $15 i32.const 5 i32.const 2 - i32.const 15 + i32.const 16 i32.const 1256 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -41879,7 +41879,7 @@ local.tee $17 i32.const 5 i32.const 2 - i32.const 15 + i32.const 16 i32.const 1296 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -41911,7 +41911,7 @@ local.tee $19 i32.const 5 i32.const 2 - i32.const 15 + i32.const 16 i32.const 1336 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -41943,7 +41943,7 @@ local.tee $21 i32.const 5 i32.const 2 - i32.const 15 + i32.const 16 i32.const 1376 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -41975,7 +41975,7 @@ local.tee $23 i32.const 5 i32.const 2 - i32.const 15 + i32.const 16 i32.const 1416 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -42685,22 +42685,49 @@ (local $2 i32) block $block$4$break block $switch$1$default - block $switch$1$case$20 - block $switch$1$case$19 - block $switch$1$case$18 - block $switch$1$case$17 - block $switch$1$case$16 - 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$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$16 $switch$1$case$17 $switch$1$case$18 $switch$1$case$19 $switch$1$case$20 $switch$1$default + block $switch$1$case$21 + block $switch$1$case$20 + block $switch$1$case$19 + block $switch$1$case$18 + block $switch$1$case$17 + block $switch$1$case$5 + 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$case$5 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$17 $switch$1$case$18 $switch$1$case$19 $switch$1$case$20 $switch$1$case$21 $switch$1$default + end + return end - return + br $block$4$break + end + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + local.get $0 + i32.load offset=4 + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + local.get $0 + i32.load offset=8 + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit end - br $block$4$break + return end local.get $0 local.get $1 diff --git a/tests/compiler/typeof.optimized.wat b/tests/compiler/typeof.optimized.wat index c909cc17a2..91bf721f82 100644 --- a/tests/compiler/typeof.optimized.wat +++ b/tests/compiler/typeof.optimized.wat @@ -207,7 +207,7 @@ i32.const -1 i32.store offset=4 local.get $0 - i32.const 3 + i32.const 4 i32.store offset=8 local.get $0 i32.const 0 diff --git a/tests/compiler/typeof.untouched.wat b/tests/compiler/typeof.untouched.wat index 2102990eef..e64e13a13e 100644 --- a/tests/compiler/typeof.untouched.wat +++ b/tests/compiler/typeof.untouched.wat @@ -355,7 +355,7 @@ i32.eqz if i32.const 0 - i32.const 3 + i32.const 4 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 diff --git a/tests/features.json b/tests/features.json index 312a4138c4..fc4884d8c5 100644 --- a/tests/features.json +++ b/tests/features.json @@ -29,5 +29,13 @@ "v8_flags": [ "--experimental-wasm-bigint" ] + }, + "exception-handling": { + "asc_flags": [ + "--enable exception-handling" + ], + "v8_flags": [ + "--experimental-wasm-eh" + ] } } From ed7e752c4e20d16189e27e4a81e5863b1d217644 Mon Sep 17 00:00:00 2001 From: dcode Date: Mon, 18 Nov 2019 06:27:24 +0100 Subject: [PATCH 2/2] remove left-over helper --- src/compiler.ts | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/compiler.ts b/src/compiler.ts index 8077316221..11ad100243 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -2494,17 +2494,6 @@ export class Compiler extends DiagnosticEmitter { return flatten(module, stmts, NativeType.None); } - makeCatch(): ExpressionRef { - var module = this.module; - this.ensureEventType("exception", [ this.options.usizeType ], Type.void); - this.currentFlow.pushBreakLabel(); - return module.block("l", [ - module.rethrow( - module.br_on_exn("l", "exception", module.pop(NativeType.Exnref)) - ) - ], this.options.nativeSizeType); - } - compileTryStatement( statement: TryStatement ): ExpressionRef {