From 3146f8f9e019a43d2369193c21f7ddbbdadcb72f Mon Sep 17 00:00:00 2001 From: dcode Date: Tue, 26 Mar 2019 23:35:08 +0100 Subject: [PATCH] use gc interface directly, document --- src/builtins.ts | 271 -- src/codegen/array.ts | 281 ++ src/codegen/gc.ts | 156 + src/common.ts | 2 + src/compiler.ts | 382 +- src/flow.ts | 27 +- src/program.ts | 97 +- src/resolver.ts | 32 +- src/types.ts | 6 +- std/assembly/array.ts | 217 +- std/assembly/collector/README.md | 107 + std/assembly/collector/dummy.ts | 42 +- std/assembly/collector/index.d.ts | 11 + std/assembly/collector/itcm.ts | 52 +- std/assembly/collector/pure.ts | 20 +- std/assembly/fixedarray.ts | 21 +- std/assembly/gc.ts | 39 +- std/assembly/map.ts | 90 +- std/assembly/runtime.ts | 192 +- std/assembly/set.ts | 37 +- std/assembly/string.ts | 27 +- tests/binaryen/break-value.js | 24 + tests/compiler/call-super.optimized.wat | 89 +- tests/compiler/call-super.untouched.wat | 101 +- tests/compiler/comma.optimized.wat | 5 +- tests/compiler/comma.untouched.wat | 6 +- tests/compiler/constructor.optimized.wat | 71 +- tests/compiler/constructor.untouched.wat | 91 +- tests/compiler/exports.optimized.wat | 84 +- tests/compiler/exports.untouched.wat | 72 +- tests/compiler/for.optimized.wat | 3 +- tests/compiler/for.untouched.wat | 23 +- tests/compiler/getter-call.optimized.wat | 43 +- tests/compiler/getter-call.untouched.wat | 41 +- tests/compiler/inlining.optimized.wat | 37 +- tests/compiler/inlining.untouched.wat | 41 +- .../new-without-allocator.untouched.wat | 35 +- tests/compiler/nonNullAssertion.optimized.wat | 6 +- tests/compiler/nonNullAssertion.untouched.wat | 61 +- tests/compiler/number.optimized.wat | 111 +- tests/compiler/number.untouched.wat | 161 +- tests/compiler/object-literal.optimized.wat | 48 +- tests/compiler/object-literal.untouched.wat | 56 +- .../optional-typeparameters.optimized.wat | 35 +- .../optional-typeparameters.untouched.wat | 47 +- tests/compiler/std/array-access.optimized.wat | 8 +- tests/compiler/std/array-access.untouched.wat | 93 +- .../compiler/std/array-literal.optimized.wat | 397 +- tests/compiler/std/array-literal.ts | 1 + .../compiler/std/array-literal.untouched.wat | 445 +- tests/compiler/std/array.optimized.wat | 1251 +++--- tests/compiler/std/array.ts | 4 +- tests/compiler/std/array.untouched.wat | 2249 ++++++---- tests/compiler/std/arraybuffer.optimized.wat | 79 +- tests/compiler/std/arraybuffer.untouched.wat | 99 +- tests/compiler/std/dataview.optimized.wat | 94 +- tests/compiler/std/dataview.untouched.wat | 119 +- tests/compiler/std/date.optimized.wat | 75 +- tests/compiler/std/date.untouched.wat | 41 +- tests/compiler/std/hash.untouched.wat | 1 - tests/compiler/std/map.optimized.wat | 1511 ++++--- tests/compiler/std/map.ts | 23 +- tests/compiler/std/map.untouched.wat | 1893 +++++--- tests/compiler/std/math.optimized.wat | 1713 ++++--- tests/compiler/std/math.untouched.wat | 228 +- tests/compiler/std/new.optimized.wat | 25 +- tests/compiler/std/new.untouched.wat | 37 +- .../std/operator-overloading.optimized.wat | 53 +- .../std/operator-overloading.untouched.wat | 105 +- tests/compiler/std/pointer.optimized.wat | 6 +- tests/compiler/std/pointer.untouched.wat | 3 +- tests/compiler/std/runtime.optimized.wat | 156 +- tests/compiler/std/runtime.ts | 9 +- tests/compiler/std/runtime.untouched.wat | 120 +- tests/compiler/std/set.optimized.wat | 1227 ++--- tests/compiler/std/set.ts | 23 +- tests/compiler/std/set.untouched.wat | 1713 +++++-- tests/compiler/std/static-array.optimized.wat | 14 +- tests/compiler/std/static-array.untouched.wat | 221 +- tests/compiler/std/string-utf8.optimized.wat | 37 +- tests/compiler/std/string-utf8.untouched.wat | 48 +- tests/compiler/std/string.optimized.wat | 3931 +++++++++-------- tests/compiler/std/string.ts | 2 + tests/compiler/std/string.untouched.wat | 3643 +++++++-------- tests/compiler/std/symbol.optimized.wat | 104 +- tests/compiler/std/symbol.ts | 4 +- tests/compiler/std/symbol.untouched.wat | 119 +- tests/compiler/std/typedarray.optimized.wat | 2546 ++++++----- tests/compiler/std/typedarray.ts | 5 +- tests/compiler/std/typedarray.untouched.wat | 2929 ++++++------ tests/compiler/unary.optimized.wat | 24 + tests/compiler/unary.untouched.wat | 24 +- tests/compiler/while.optimized.wat | 3 +- tests/compiler/while.untouched.wat | 3 +- tslint.json | 6 - 95 files changed, 17360 insertions(+), 13504 deletions(-) create mode 100644 src/codegen/array.ts create mode 100644 src/codegen/gc.ts create mode 100644 std/assembly/collector/README.md create mode 100644 std/assembly/collector/index.d.ts create mode 100644 tests/binaryen/break-value.js diff --git a/src/builtins.ts b/src/builtins.ts index d07292c8..55163dbf 100644 --- a/src/builtins.ts +++ b/src/builtins.ts @@ -4079,277 +4079,6 @@ export function compileIterateRoots(compiler: Compiler): void { ); } -export function compileBuiltinArrayGet( - compiler: Compiler, - target: Class, - thisExpression: Expression, - elementExpression: Expression, - contextualType: Type -): ExpressionRef { - var type = assert(compiler.program.determineBuiltinArrayType(target)); - var module = compiler.module; - var outType = ( - type.is(TypeFlags.INTEGER) && - contextualType.is(TypeFlags.INTEGER) && - contextualType.size > type.size - ) ? contextualType : type; - - var dataStart = assert(target.lookupInSelf("dataStart")); - assert(dataStart.kind == ElementKind.FIELD); - var dataLength = assert(target.lookupInSelf("dataLength")); - assert(dataLength.kind == ElementKind.FIELD); - - // compile the index expression and shift it to become the actual byteOffset - var dynamicOffset = compiler.compileExpression( - elementExpression, - Type.i32, - ConversionKind.IMPLICIT, - WrapMode.NONE - ); - var alignLog2 = type.alignLog2; - if (alignLog2) { - dynamicOffset = module.createBinary(BinaryOp.ShlI32, - dynamicOffset, - module.createI32(alignLog2) - ); - } - - var usizeType = compiler.options.usizeType; - var nativeSizeType = compiler.options.nativeSizeType; - var ptrExpr: ExpressionRef; - var constantOffset: i32 = 0; - - // precompute byteOffset into a constant and a dynamic part - dynamicOffset = module.precomputeExpression(dynamicOffset); - if (getExpressionId(dynamicOffset) == ExpressionId.Const) { - constantOffset = getConstValueI32(dynamicOffset); - dynamicOffset = 0; - } else if (getExpressionId(dynamicOffset) == ExpressionId.Binary) { - if (getBinaryOp(dynamicOffset) == BinaryOp.AddI32) { - let left = getBinaryLeft(dynamicOffset); - let right = getBinaryRight(dynamicOffset); - if (getExpressionId(left) == ExpressionId.Const) { - constantOffset = getConstValueI32(left); - dynamicOffset = right; - } else if (getExpressionId(right) == ExpressionId.Const) { - constantOffset = getConstValueI32(right); - dynamicOffset = left; - } - } - } - // ptr = this.dataStart - ptrExpr = module.createLoad(usizeType.byteSize, true, - compiler.compileExpression( - thisExpression, - target.type, - ConversionKind.IMPLICIT, - WrapMode.NONE - ), - nativeSizeType, (dataStart).memoryOffset - ); - // ptr = ptr + dynamicOffset - if (dynamicOffset) { - if (nativeSizeType == NativeType.I64) { - ptrExpr = module.createBinary(BinaryOp.AddI64, - ptrExpr, - module.createUnary(UnaryOp.ExtendU32, dynamicOffset) - ); - } else { - ptrExpr = module.createBinary(BinaryOp.AddI32, - ptrExpr, - dynamicOffset - ); - } - } - - compiler.currentType = outType; - return module.createLoad( - type.byteSize, - type.is(TypeFlags.SIGNED), - ptrExpr, - outType.toNativeType(), - constantOffset - ); -} - -export function compileBuiltinArraySet( - compiler: Compiler, - target: Class, - thisExpression: Expression, - elementExpression: Expression, - valueExpression: Expression, - contextualType: Type -): ExpressionRef { - var type = assert(compiler.program.determineBuiltinArrayType(target)); - return compileBuiltinArraySetWithValue( - compiler, - target, - thisExpression, - elementExpression, - compiler.compileExpression( - valueExpression, - type.is(TypeFlags.INTEGER | TypeFlags.VALUE) - ? type.is(TypeFlags.LONG) - ? type.is(TypeFlags.SIGNED) - ? Type.i64 - : Type.u64 - : type.is(TypeFlags.SIGNED) - ? Type.i32 - : Type.u32 - : type, - ConversionKind.IMPLICIT, - WrapMode.NONE - ), - contextualType != Type.void - ); -} - -export function compileBuiltinArraySetWithValue( - compiler: Compiler, - target: Class, - thisExpression: Expression, - elementExpression: Expression, - valueExpr: ExpressionRef, - tee: bool -): ExpressionRef { - var type = assert(compiler.program.determineBuiltinArrayType(target)); - var module = compiler.module; - - var dataStart = assert(target.lookupInSelf("dataStart")); - assert(dataStart.kind == ElementKind.FIELD); - var dataLength = assert(target.lookupInSelf("dataLength")); - assert(dataLength.kind == ElementKind.FIELD); - - var constantOffset: i32 = 0; - var dynamicOffset = module.precomputeExpression( - compiler.compileExpression( - elementExpression, - Type.i32, - ConversionKind.IMPLICIT, - WrapMode.NONE - ) - ); - if (getExpressionId(dynamicOffset) == ExpressionId.Const) { - constantOffset = getConstValueI32(dynamicOffset); - dynamicOffset = 0; - } else if (getExpressionId(dynamicOffset) == ExpressionId.Binary) { - if (getBinaryOp(dynamicOffset) == BinaryOp.AddI32) { - let left = getBinaryLeft(dynamicOffset); - let right = getBinaryRight(dynamicOffset); - if (getExpressionId(left) == ExpressionId.Const) { - constantOffset = getConstValueI32(left); - dynamicOffset = right; - } else if (getExpressionId(right) == ExpressionId.Const) { - constantOffset = getConstValueI32(right); - dynamicOffset = left; - } - } - } - - var program = compiler.program; - var isManaged = type.isManaged(program) && target.type.isManaged(program); - var usizeType = compiler.options.usizeType; - var nativeSizeType = compiler.options.nativeSizeType; - var thisExpr = compiler.compileExpression( - thisExpression, - target.type, - ConversionKind.IMPLICIT, - WrapMode.NONE - ); - var tempThis: Local | null = null; - if (isManaged) { - tempThis = compiler.currentFlow.getTempLocal(target.type, false); - thisExpr = module.createTeeLocal(tempThis.index, thisExpr); - } - var dataStartExpr = module.createLoad(usizeType.byteSize, true, - thisExpr, nativeSizeType, (dataStart).memoryOffset - ); - - var typeAlignLog2 = type.alignLog2; - constantOffset <<= typeAlignLog2; - if (dynamicOffset) { - if (typeAlignLog2) { - dynamicOffset = module.createBinary(BinaryOp.ShlI32, - dynamicOffset, - module.createI32(typeAlignLog2) - ); - } - if (nativeSizeType == NativeType.I64) { - dataStartExpr = module.createBinary(BinaryOp.AddI64, - dataStartExpr, - module.createUnary(UnaryOp.ExtendU32, dynamicOffset) - ); - } else { - dataStartExpr = module.createBinary(BinaryOp.AddI32, - dataStartExpr, - dynamicOffset - ); - } - } - - // handle Array: value = RETAIN(value, this) - if (isManaged) { - let program = compiler.program; - let retainInstance = compiler.resolver.resolveFunction(assert(program.retainPrototype), [ type, target.type ]); - if (!retainInstance) return module.createUnreachable(); - valueExpr = compiler.makeCallInlinePrechecked(retainInstance, [ - valueExpr, - module.createGetLocal(assert(tempThis).index, nativeSizeType) - ], 0, true); - - // handle Uint8ClampedArray: value = ~(value >> 31) & (((255 - value) >> 31) | value) - } else if (target.internalName == BuiltinSymbols.Uint8ClampedArray) { - let tempLocal = compiler.currentFlow.getAndFreeTempLocal(Type.i32, true); - valueExpr = module.createBinary(BinaryOp.AndI32, - module.createBinary(BinaryOp.XorI32, - module.createBinary(BinaryOp.ShrI32, - module.createTeeLocal(tempLocal.index, valueExpr), - module.createI32(31) - ), - module.createI32(-1) - ), - module.createBinary(BinaryOp.OrI32, - module.createBinary(BinaryOp.ShrI32, - module.createBinary(BinaryOp.SubI32, - module.createI32(255), - module.createGetLocal(tempLocal.index, NativeType.I32) - ), - module.createI32(31) - ), - module.createGetLocal(tempLocal.index, NativeType.I32) - ) - ); - } - assert(!tempThis); - - var nativeType = type.toNativeType(); - - if (!tee) { - compiler.currentType = Type.void; - return module.createStore( - type.byteSize, - dataStartExpr, - valueExpr, - nativeType, - constantOffset - ); - } else { - let flow = compiler.currentFlow; - let tempLocal = flow.getAndFreeTempLocal(type, false); - compiler.currentType = type; - return module.createBlock(null, [ - module.createStore( - type.byteSize, - dataStartExpr, - module.createTeeLocal(tempLocal.index, valueExpr), - nativeType, - constantOffset - ), - module.createGetLocal(tempLocal.index, nativeType) - ], nativeType); - } -} - /** Ensures that the specified class's GC hook exists and returns its function table index. */ export function ensureGCHook( compiler: Compiler, diff --git a/src/codegen/array.ts b/src/codegen/array.ts new file mode 100644 index 00000000..42d9e4e9 --- /dev/null +++ b/src/codegen/array.ts @@ -0,0 +1,281 @@ +// TBD: managed reference handling makes this cumbersome, and there is a binaryen pass that can +// help propagating constant offsets. ideally, using operator overloads would be enough because +// it's the most flexible way to do this. + +// import { Compiler, ConversionKind, WrapMode } from "../compiler"; +// import { Class, ElementKind, Field, Local } from "../program"; +// import { Expression } from "../ast"; +// import { Type, TypeFlags } from "../types"; +// import { ExpressionRef, getExpressionId, getBinaryOp, getBinaryLeft, getBinaryRight, getConstValueI32, ExpressionId, BinaryOp, NativeType, UnaryOp } from "../module"; +// import { BuiltinSymbols } from "../builtins"; + +// export function makeArrayGet( +// compiler: Compiler, +// target: Class, +// thisExpression: Expression, +// elementExpression: Expression, +// contextualType: Type +// ): ExpressionRef { +// var type = assert(compiler.program.determineBuiltinArrayType(target)); +// var module = compiler.module; +// var outType = ( +// type.is(TypeFlags.INTEGER) && +// contextualType.is(TypeFlags.INTEGER) && +// contextualType.size > type.size +// ) ? contextualType : type; + +// var dataStart = assert(target.lookupInSelf("dataStart")); +// assert(dataStart.kind == ElementKind.FIELD); +// var dataLength = assert(target.lookupInSelf("dataLength")); +// assert(dataLength.kind == ElementKind.FIELD); + +// // compile the index expression and shift it to become the actual byteOffset +// var dynamicOffset = compiler.compileExpression( +// elementExpression, +// Type.i32, +// ConversionKind.IMPLICIT, +// WrapMode.NONE +// ); +// var alignLog2 = type.alignLog2; +// if (alignLog2) { +// dynamicOffset = module.createBinary(BinaryOp.ShlI32, +// dynamicOffset, +// module.createI32(alignLog2) +// ); +// } + +// var usizeType = compiler.options.usizeType; +// var nativeSizeType = compiler.options.nativeSizeType; +// var ptrExpr: ExpressionRef; +// var constantOffset: i32 = 0; + +// // precompute byteOffset into a constant and a dynamic part +// dynamicOffset = module.precomputeExpression(dynamicOffset); +// if (getExpressionId(dynamicOffset) == ExpressionId.Const) { +// constantOffset = getConstValueI32(dynamicOffset); +// dynamicOffset = 0; +// } else if (getExpressionId(dynamicOffset) == ExpressionId.Binary) { +// if (getBinaryOp(dynamicOffset) == BinaryOp.AddI32) { +// let left = getBinaryLeft(dynamicOffset); +// let right = getBinaryRight(dynamicOffset); +// if (getExpressionId(left) == ExpressionId.Const) { +// constantOffset = getConstValueI32(left); +// dynamicOffset = right; +// } else if (getExpressionId(right) == ExpressionId.Const) { +// constantOffset = getConstValueI32(right); +// dynamicOffset = left; +// } +// } +// } +// // ptr = this.dataStart +// ptrExpr = module.createLoad(usizeType.byteSize, true, +// compiler.compileExpression( +// thisExpression, +// target.type, +// ConversionKind.IMPLICIT, +// WrapMode.NONE +// ), +// nativeSizeType, (dataStart).memoryOffset +// ); +// // ptr = ptr + dynamicOffset +// if (dynamicOffset) { +// if (nativeSizeType == NativeType.I64) { +// ptrExpr = module.createBinary(BinaryOp.AddI64, +// ptrExpr, +// module.createUnary(UnaryOp.ExtendU32, dynamicOffset) +// ); +// } else { +// ptrExpr = module.createBinary(BinaryOp.AddI32, +// ptrExpr, +// dynamicOffset +// ); +// } +// } + +// compiler.currentType = outType; +// return module.createLoad( +// type.byteSize, +// type.is(TypeFlags.SIGNED), +// ptrExpr, +// outType.toNativeType(), +// constantOffset +// ); +// } + +// export function makeArraySet( +// compiler: Compiler, +// target: Class, +// thisExpression: Expression, +// elementExpression: Expression, +// valueExpression: Expression, +// contextualType: Type +// ): ExpressionRef { +// var type = assert(compiler.program.determineBuiltinArrayType(target)); +// return makeArraySetWithValue( +// compiler, +// target, +// thisExpression, +// elementExpression, +// compiler.compileExpression( +// valueExpression, +// type.is(TypeFlags.INTEGER | TypeFlags.VALUE) +// ? type.is(TypeFlags.LONG) +// ? type.is(TypeFlags.SIGNED) +// ? Type.i64 +// : Type.u64 +// : type.is(TypeFlags.SIGNED) +// ? Type.i32 +// : Type.u32 +// : type, +// ConversionKind.IMPLICIT, +// WrapMode.NONE +// ), +// contextualType != Type.void +// ); +// } + +// export function makeArraySetWithValue( +// compiler: Compiler, +// target: Class, +// thisExpression: Expression, +// elementExpression: Expression, +// valueExpr: ExpressionRef, +// tee: bool +// ): ExpressionRef { +// var type = assert(compiler.program.determineBuiltinArrayType(target)); +// var module = compiler.module; + +// var dataStart = assert(target.lookupInSelf("dataStart")); +// assert(dataStart.kind == ElementKind.FIELD); +// var dataLength = assert(target.lookupInSelf("dataLength")); +// assert(dataLength.kind == ElementKind.FIELD); + +// var constantOffset: i32 = 0; +// var dynamicOffset = module.precomputeExpression( +// compiler.compileExpression( +// elementExpression, +// Type.i32, +// ConversionKind.IMPLICIT, +// WrapMode.NONE +// ) +// ); +// if (getExpressionId(dynamicOffset) == ExpressionId.Const) { +// constantOffset = getConstValueI32(dynamicOffset); +// dynamicOffset = 0; +// } else if (getExpressionId(dynamicOffset) == ExpressionId.Binary) { +// if (getBinaryOp(dynamicOffset) == BinaryOp.AddI32) { +// let left = getBinaryLeft(dynamicOffset); +// let right = getBinaryRight(dynamicOffset); +// if (getExpressionId(left) == ExpressionId.Const) { +// constantOffset = getConstValueI32(left); +// dynamicOffset = right; +// } else if (getExpressionId(right) == ExpressionId.Const) { +// constantOffset = getConstValueI32(right); +// dynamicOffset = left; +// } +// } +// } + +// var program = compiler.program; +// var isManaged = type.isManaged(program) && target.type.isManaged(program); +// var usizeType = compiler.options.usizeType; +// var nativeSizeType = compiler.options.nativeSizeType; +// var thisExpr = compiler.compileExpression( +// thisExpression, +// target.type, +// ConversionKind.IMPLICIT, +// WrapMode.NONE +// ); +// var tempThis: Local | null = null; +// if (isManaged) { +// tempThis = compiler.currentFlow.getTempLocal(target.type, false); +// thisExpr = module.createTeeLocal(tempThis.index, thisExpr); +// } +// var dataStartExpr = module.createLoad(usizeType.byteSize, true, +// thisExpr, nativeSizeType, (dataStart).memoryOffset +// ); + +// var typeAlignLog2 = type.alignLog2; +// constantOffset <<= typeAlignLog2; +// if (dynamicOffset) { +// if (typeAlignLog2) { +// dynamicOffset = module.createBinary(BinaryOp.ShlI32, +// dynamicOffset, +// module.createI32(typeAlignLog2) +// ); +// } +// if (nativeSizeType == NativeType.I64) { +// dataStartExpr = module.createBinary(BinaryOp.AddI64, +// dataStartExpr, +// module.createUnary(UnaryOp.ExtendU32, dynamicOffset) +// ); +// } else { +// dataStartExpr = module.createBinary(BinaryOp.AddI32, +// dataStartExpr, +// dynamicOffset +// ); +// } +// } + +// // handle Array: value = RETAIN(value, this) +// if (isManaged) { +// let program = compiler.program; +// let retainInstance = compiler.resolver.resolveFunction(assert(program.retainPrototype), [ type, target.type ]); +// if (!retainInstance) return module.createUnreachable(); +// valueExpr = compiler.makeCallInlinePrechecked(retainInstance, [ +// valueExpr, +// module.createGetLocal(assert(tempThis).index, nativeSizeType) +// ], 0, true); + +// // handle Uint8ClampedArray: value = ~(value >> 31) & (((255 - value) >> 31) | value) +// } else if (target.internalName == BuiltinSymbols.Uint8ClampedArray) { +// let tempLocal = compiler.currentFlow.getAndFreeTempLocal(Type.i32, true); +// valueExpr = module.createBinary(BinaryOp.AndI32, +// module.createBinary(BinaryOp.XorI32, +// module.createBinary(BinaryOp.ShrI32, +// module.createTeeLocal(tempLocal.index, valueExpr), +// module.createI32(31) +// ), +// module.createI32(-1) +// ), +// module.createBinary(BinaryOp.OrI32, +// module.createBinary(BinaryOp.ShrI32, +// module.createBinary(BinaryOp.SubI32, +// module.createI32(255), +// module.createGetLocal(tempLocal.index, NativeType.I32) +// ), +// module.createI32(31) +// ), +// module.createGetLocal(tempLocal.index, NativeType.I32) +// ) +// ); +// } +// assert(!tempThis); + +// var nativeType = type.toNativeType(); + +// if (!tee) { +// compiler.currentType = Type.void; +// return module.createStore( +// type.byteSize, +// dataStartExpr, +// valueExpr, +// nativeType, +// constantOffset +// ); +// } else { +// let flow = compiler.currentFlow; +// let tempLocal = flow.getAndFreeTempLocal(type, false); +// compiler.currentType = type; +// return module.createBlock(null, [ +// module.createStore( +// type.byteSize, +// dataStartExpr, +// module.createTeeLocal(tempLocal.index, valueExpr), +// nativeType, +// constantOffset +// ), +// module.createGetLocal(tempLocal.index, nativeType) +// ], nativeType); +// } +// } diff --git a/src/codegen/gc.ts b/src/codegen/gc.ts new file mode 100644 index 00000000..52dde000 --- /dev/null +++ b/src/codegen/gc.ts @@ -0,0 +1,156 @@ +import { Compiler } from "../compiler"; +import { ExpressionRef, NativeType, BinaryOp } from "../module"; +import { Local, Function, Class } from "../program"; +import { Type } from "../types"; + +/** Prepares the insertion of a reference into an _uninitialized_ parent using the GC interface. */ +export function makeInsertRef( + compiler: Compiler, + valueExpr: ExpressionRef, + tempParent: Local, + nullable: bool +): ExpressionRef { + var module = compiler.module; + var program = compiler.program; + var usizeType = compiler.options.usizeType; + var nativeSizeType = compiler.options.nativeSizeType; + var flow = compiler.currentFlow; + var tempValue = flow.getTempLocal(usizeType, false); + var handle: ExpressionRef; + var fn: Function | null; + if (fn = program.linkRef) { // tracing + handle = module.createCall(fn.internalName, [ + module.createGetLocal(tempValue.index, nativeSizeType), + module.createGetLocal(tempParent.index, nativeSizeType) + ], NativeType.None); + } else if (fn = program.retainRef) { // arc + handle = module.createCall(fn.internalName, [ + module.createGetLocal(tempValue.index, nativeSizeType) + ], NativeType.None); + } else { + assert(false); + return module.createUnreachable(); + } + flow.freeTempLocal(tempValue); + if (!compiler.compileFunction(fn)) return module.createUnreachable(); + // { + // [if (value !== null)] link/retain(value[, parent]) + // } -> value + return module.createBlock(null, [ + module.createSetLocal(tempValue.index, valueExpr), + nullable + ? module.createIf( + module.createGetLocal(tempValue.index, nativeSizeType), + handle + ) + : handle, + module.createGetLocal(tempValue.index, nativeSizeType) + ], nativeSizeType); +} + +/** Prepares the replaces a reference hold by an _initialized_ parent using the GC interface. */ +export function makeReplaceRef( + compiler: Compiler, + valueExpr: ExpressionRef, + oldValueExpr: ExpressionRef, + tempParent: Local, + nullable: bool +): ExpressionRef { + var module = compiler.module; + var program = compiler.program; + var usizeType = compiler.options.usizeType; + var nativeSizeType = compiler.options.nativeSizeType; + var flow = compiler.currentFlow; + var tempValue = flow.getTempLocal(usizeType, false); + var tempOldValue = flow.getTempLocal(usizeType, false); + var handleOld: ExpressionRef; + var handleNew: ExpressionRef; + var fn1: Function | null, fn2: Function | null; + if (fn1 = program.linkRef) { // tracing + fn2 = assert(program.unlinkRef); + handleOld = module.createCall(fn2.internalName, [ + module.createGetLocal(tempOldValue.index, nativeSizeType), + module.createGetLocal(tempParent.index, nativeSizeType) + ], NativeType.None); + handleNew = module.createCall(fn1.internalName, [ + module.createGetLocal(tempValue.index, nativeSizeType), + module.createGetLocal(tempParent.index, nativeSizeType) + ], NativeType.None); + } else if (fn1 = program.retainRef) { // arc + fn2 = assert(program.releaseRef); + handleOld = module.createCall(fn2.internalName, [ + module.createGetLocal(tempOldValue.index, nativeSizeType) + ], NativeType.None); + handleNew = module.createCall(fn1.internalName, [ + module.createGetLocal(tempValue.index, nativeSizeType) + ], NativeType.None); + } else { + assert(false); + return module.createUnreachable(); + } + flow.freeTempLocal(tempValue); + flow.freeTempLocal(tempOldValue); + if (!compiler.compileFunction(fn1) || !compiler.compileFunction(fn2)) return module.createUnreachable(); + // if (value != oldValue) { + // if (oldValue !== null) unlink/release(oldValue[, parent]) + // [if (value !== null)] link/retain(value[, parent]) + // } -> value + return module.createIf( + module.createBinary(nativeSizeType == NativeType.I32 ? BinaryOp.NeI32 : BinaryOp.NeI64, + module.createTeeLocal(tempValue.index, valueExpr), + module.createTeeLocal(tempOldValue.index, oldValueExpr) + ), + module.createBlock(null, [ + module.createIf( + module.createGetLocal(tempOldValue.index, nativeSizeType), + handleOld + ), + nullable + ? module.createIf( + module.createGetLocal(tempValue.index, nativeSizeType), + handleNew + ) + : handleNew, + module.createGetLocal(tempValue.index, nativeSizeType) + ], nativeSizeType), + module.createGetLocal(tempValue.index, nativeSizeType) + ); +} + +export function makeInstanceOfClass( + compiler: Compiler, + expr: ExpressionRef, + classInstance: Class +): ExpressionRef { + var module = compiler.module; + var flow = compiler.currentFlow; + var idTemp = flow.getTempLocal(Type.i32, false); + var idExpr = module.createLoad(4, false, + module.createBinary(BinaryOp.SubI32, + expr, + module.createI32(compiler.program.runtimeHeaderSize) + ), + NativeType.I32 + ); + var label = "instanceof_" + classInstance.name + "|" + flow.pushBreakLabel(); + var conditions: ExpressionRef[] = []; + conditions.push( + module.createDrop( // br_if returns the value too + module.createBreak(label, + module.createBinary(BinaryOp.EqI32, // classId == class.id + module.createTeeLocal(idTemp.index, idExpr), + module.createI32(classInstance.id) + ), + module.createI32(1) // ? true + ) + ) + ); + // TODO: insert conditions for all possible subclasses (i.e. cat is also animal) + // TODO: simplify if there are none + conditions.push( + module.createI32(0) // : false + ); + flow.freeTempLocal(idTemp); + flow.popBreakLabel(); + return module.createBlock(label, conditions, NativeType.I32); +} diff --git a/src/common.ts b/src/common.ts index 97eaf2c3..07fe82bd 100644 --- a/src/common.ts +++ b/src/common.ts @@ -189,6 +189,8 @@ export namespace LibrarySymbols { export const REGISTER = "REGISTER"; export const RETAIN = "RETAIN"; export const RELEASE = "RELEASE"; + export const MOVE = "MOVE"; + export const REPLACE = "REPLACE"; export const MAKEARRAY = "MAKEARRAY"; // other export const length = "length"; diff --git a/src/compiler.ts b/src/compiler.ts index 8450e877..1f847cde 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -7,10 +7,7 @@ import { compileCall as compileBuiltinCall, compileAbort, compileIterateRoots, - BuiltinSymbols, - compileBuiltinArrayGet, - compileBuiltinArraySet, - compileBuiltinArraySetWithValue + BuiltinSymbols } from "./builtins"; import { @@ -174,6 +171,8 @@ import { makeMap } from "./util"; +import { makeInsertRef, makeReplaceRef } from "./codegen/gc"; + /** Compilation target. */ export enum Target { /** WebAssembly with 32-bit pointers. */ @@ -1010,7 +1009,7 @@ export class Compiler extends DiagnosticEmitter { if (initInStart) { module.addGlobal(val.internalName, NativeType.I32, true, module.createI32(0)); this.currentBody.push( - module.createSetGlobal(val.internalName, initExpr) + this.makeGlobalAssignment(val, initExpr, false) ); previousValueIsMut = true; } else { @@ -4745,19 +4744,19 @@ export class Compiler extends DiagnosticEmitter { let elementExpression = resolver.currentElementExpression; if (elementExpression) { // indexed access let isUnchecked = flow.is(FlowFlags.UNCHECKED_CONTEXT); - if (isUnchecked) { - let arrayType = this.program.determineBuiltinArrayType(target); - if (arrayType) { - return compileBuiltinArraySet( - this, - target, - assert(this.resolver.currentThisExpression), - elementExpression, - valueExpression, - contextualType - ); - } - } + // if (isUnchecked) { + // let arrayType = this.program.determineBuiltinArrayType(target); + // if (arrayType) { + // return compileBuiltinArraySet( + // this, + // target, + // assert(this.resolver.currentThisExpression), + // elementExpression, + // valueExpression, + // contextualType + // ); + // } + // } let indexedSet = (target).lookupOverload(OperatorKind.INDEXED_SET, isUnchecked); if (!indexedSet) { let indexedGet = (target).lookupOverload(OperatorKind.INDEXED_GET, isUnchecked); @@ -4801,7 +4800,7 @@ export class Compiler extends DiagnosticEmitter { compileAssignmentWithValue( expression: Expression, - valueWithCorrectType: ExpressionRef, + valueExpr: ExpressionRef, tee: bool = false ): ExpressionRef { var module = this.module; @@ -4811,49 +4810,28 @@ export class Compiler extends DiagnosticEmitter { switch (target.kind) { case ElementKind.LOCAL: { - let type = (target).type; - assert(type != Type.void); - this.currentType = tee ? type : Type.void; - if ((target).is(CommonFlags.CONST)) { + if (target.is(CommonFlags.CONST)) { this.error( DiagnosticCode.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property, expression.range, target.internalName ); + this.currentType = tee ? (target).type : Type.void; return module.createUnreachable(); } - let localIndex = (target).index; - if (type.is(TypeFlags.SHORT | TypeFlags.INTEGER)) { - if (!flow.canOverflow(valueWithCorrectType, type)) flow.setLocalFlag(localIndex, LocalFlags.WRAPPED); - else flow.unsetLocalFlag(localIndex, LocalFlags.WRAPPED); - } - return tee - ? module.createTeeLocal(localIndex, valueWithCorrectType) - : module.createSetLocal(localIndex, valueWithCorrectType); + return this.makeLocalAssignment(target, valueExpr, tee); } case ElementKind.GLOBAL: { if (!this.compileGlobal(target)) return module.createUnreachable(); - let type = (target).type; - assert(type != Type.void); - this.currentType = tee ? type : Type.void; - if ((target).is(CommonFlags.CONST)) { + if (target.is(CommonFlags.CONST)) { this.error( DiagnosticCode.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property, expression.range, target.internalName ); + this.currentType = tee ? (target).type : Type.void; return module.createUnreachable(); } - valueWithCorrectType = this.ensureSmallIntegerWrap(valueWithCorrectType, type); // guaranteed - if (tee) { - let nativeType = type.toNativeType(); - let internalName = target.internalName; - return module.createBlock(null, [ // emulated teeGlobal - module.createSetGlobal(internalName, valueWithCorrectType), - module.createGetGlobal(internalName, nativeType) - ], nativeType); - } else { - return module.createSetGlobal(target.internalName, valueWithCorrectType); - } + return this.makeGlobalAssignment(target, valueExpr, tee); } case ElementKind.FIELD: { let initializerNode = (target).initializerNode; @@ -4870,66 +4848,15 @@ export class Compiler extends DiagnosticEmitter { ); return module.createUnreachable(); } - let thisExpression = assert(this.resolver.currentThisExpression); - let thisExpr = this.compileExpressionRetainType( - thisExpression, - this.options.usizeType, - WrapMode.NONE + return this.makeFieldAssignment(target, + valueExpr, + this.compileExpressionRetainType( + assert(this.resolver.currentThisExpression), + // FIXME: explicit type (currently fails due to missing null checking) + this.options.usizeType, WrapMode.NONE + ), + tee ); - let thisType = this.currentType; - let type = (target).type; - let nativeType = type.toNativeType(); - if (type.kind == TypeKind.BOOL) { - // make sure bools are wrapped (usually are) when storing as 8 bits - valueWithCorrectType = this.ensureSmallIntegerWrap(valueWithCorrectType, type); - } - let program = this.program; - let tempThis: Local | null = null; - if (type.isManaged(program) && thisType.isManaged(program)) { - let retainInstance = this.resolver.resolveFunction(assert(program.retainPrototype), [ type, thisType ]); - if (!retainInstance) { - this.currentType = tee ? type : Type.void; - return module.createUnreachable(); - } - tempThis = this.currentFlow.getTempLocal(thisType, false); - // this = (tempThis = this) - thisExpr = module.createTeeLocal(tempThis.index, thisExpr); - // value = RETAIN(value, tempThis) - valueWithCorrectType = this.makeCallInlinePrechecked(retainInstance, [ - valueWithCorrectType, - module.createGetLocal(tempThis.index, this.options.nativeSizeType) - ], 0, true); - } - if (tee) { - let tempValue = this.currentFlow.getAndFreeTempLocal( - type, - !flow.canOverflow(valueWithCorrectType, type) - ); - if (tempThis) this.currentFlow.freeTempLocal(tempThis); - this.currentType = type; - // (this.field = (tempValue = value)), tempValue - return module.createBlock(null, [ - module.createStore( - type.byteSize, - thisExpr, - module.createTeeLocal(tempValue.index, valueWithCorrectType), - nativeType, - (target).memoryOffset - ), - module.createGetLocal(tempValue.index, nativeType) - ], nativeType); - } else { - if (tempThis) this.currentFlow.freeTempLocal(tempThis); - this.currentType = Type.void; - // this.field = value - return module.createStore( - type.byteSize, - thisExpr, - valueWithCorrectType, - nativeType, - (target).memoryOffset - ); - } } case ElementKind.PROPERTY_PROTOTYPE: { // static property let setterPrototype = (target).setterPrototype; @@ -4943,7 +4870,7 @@ export class Compiler extends DiagnosticEmitter { let setterInstance = this.resolver.resolveFunction(setterPrototype, null, makeMap(), ReportMode.REPORT); if (!setterInstance) return module.createUnreachable(); // call just the setter if the return value isn't of interest - if (!tee) return this.makeCallDirect(setterInstance, [ valueWithCorrectType ], expression); + if (!tee) return this.makeCallDirect(setterInstance, [ valueExpr ], expression); // otherwise call the setter first, then the getter let getterPrototype = assert((target).getterPrototype); // must be present let getterInstance = this.resolver.resolveFunction(getterPrototype, null, makeMap(), ReportMode.REPORT); @@ -4951,7 +4878,7 @@ export class Compiler extends DiagnosticEmitter { let returnType = getterInstance.signature.returnType; let nativeReturnType = returnType.toNativeType(); return module.createBlock(null, [ - this.makeCallDirect(setterInstance, [ valueWithCorrectType ], expression), + this.makeCallDirect(setterInstance, [ valueExpr ], expression), this.makeCallDirect(getterInstance, null, expression) // sets currentType ], nativeReturnType); } @@ -4968,10 +4895,9 @@ export class Compiler extends DiagnosticEmitter { if (!tee) { let thisExpr = this.compileExpressionRetainType( assert(this.resolver.currentThisExpression), - this.options.usizeType, - WrapMode.NONE + this.options.usizeType, WrapMode.NONE ); - return this.makeCallDirect(setterInstance, [ thisExpr, valueWithCorrectType ], expression); + return this.makeCallDirect(setterInstance, [ thisExpr, valueExpr ], expression); } // otherwise call the setter first, then the getter let getterInstance = assert((target).getterInstance); // must be present @@ -4987,7 +4913,7 @@ export class Compiler extends DiagnosticEmitter { return module.createBlock(null, [ this.makeCallDirect(setterInstance, [ // set and remember the target module.createTeeLocal(tempLocalIndex, thisExpr), - valueWithCorrectType + valueExpr ], expression), this.makeCallDirect(getterInstance, [ // get from remembered target module.createGetLocal(tempLocalIndex, nativeReturnType) @@ -4998,19 +4924,19 @@ export class Compiler extends DiagnosticEmitter { let elementExpression = this.resolver.currentElementExpression; if (elementExpression) { let isUnchecked = flow.is(FlowFlags.UNCHECKED_CONTEXT); - if (isUnchecked) { - let arrayType = this.program.determineBuiltinArrayType(target); - if (arrayType) { - return compileBuiltinArraySetWithValue( - this, - target, - assert(this.resolver.currentThisExpression), - elementExpression, - valueWithCorrectType, - tee - ); - } - } + // if (isUnchecked) { + // let arrayType = this.program.determineBuiltinArrayType(target); + // if (arrayType) { + // return compileBuiltinArraySetWithValue( + // this, + // target, + // assert(this.resolver.currentThisExpression), + // elementExpression, + // valueExpr, + // tee + // ); + // } + // } let indexedGet = (target).lookupOverload(OperatorKind.INDEXED_GET, isUnchecked); if (!indexedGet) { this.error( @@ -5050,7 +4976,7 @@ export class Compiler extends DiagnosticEmitter { this.makeCallDirect(indexedSet, [ module.createTeeLocal(tempLocalTarget.index, thisExpr), module.createTeeLocal(tempLocalElement.index, elementExpr), - valueWithCorrectType + valueExpr ], expression), this.makeCallDirect(indexedGet, [ module.createGetLocal(tempLocalTarget.index, tempLocalTarget.type.toNativeType()), @@ -5061,7 +4987,7 @@ export class Compiler extends DiagnosticEmitter { return this.makeCallDirect(indexedSet, [ thisExpr, elementExpr, - valueWithCorrectType + valueExpr ], expression); } } @@ -5075,6 +5001,126 @@ export class Compiler extends DiagnosticEmitter { return module.createUnreachable(); } + makeLocalAssignment(local: Local, valueExpr: ExpressionRef, tee: bool): ExpressionRef { + // TBD: use REPLACE macro to keep track of managed refcounts? or can the compiler evaluate + // this statically in closed contexts like functions in order to safe the extra work? + var type = local.type; + assert(type != Type.void); + var localIndex = local.index; + if (type.is(TypeFlags.SHORT | TypeFlags.INTEGER)) { + let flow = this.currentFlow; + if (!flow.canOverflow(valueExpr, type)) flow.setLocalFlag(localIndex, LocalFlags.WRAPPED); + else flow.unsetLocalFlag(localIndex, LocalFlags.WRAPPED); + } + if (tee) { + this.currentType = type; + return this.module.createTeeLocal(localIndex, valueExpr); + } else { + this.currentType = Type.void; + return this.module.createSetLocal(localIndex, valueExpr) + } + } + + makeGlobalAssignment(global: Global, valueExpr: ExpressionRef, tee: bool): ExpressionRef { + // TBD: use REPLACE macro to keep track of managed refcounts? currently this doesn't work + // because there isn't a parent ref here. a tracing GC wouldn't need the hook at all while + // a reference counting gc doesn't need a parent. + var type = global.type; + assert(type != Type.void); + valueExpr = this.ensureSmallIntegerWrap(valueExpr, type); // global values must be wrapped + if (tee) { + let module = this.module; + let nativeType = type.toNativeType(); + let tempValue = this.currentFlow.getAndFreeTempLocal(type, true); + this.currentType = type; + return module.createBlock(null, [ + module.createSetGlobal(global.internalName, + module.createTeeLocal(tempValue.index, valueExpr) + ), + module.createGetLocal(tempValue.index, nativeType) + ], nativeType); + } else { + this.currentType = Type.void; + return this.module.createSetGlobal(global.internalName, valueExpr); + } + } + + makeFieldAssignment(field: Field, valueExpr: ExpressionRef, thisExpr: ExpressionRef, tee: bool): ExpressionRef { + var program = this.program; + var module = this.module; + var flow = this.currentFlow; + var fieldType = field.type; + var nativeFieldType = fieldType.toNativeType(); + assert(field.parent.kind == ElementKind.CLASS); + var thisType = (field.parent).type; + var nativeThisType = thisType.toNativeType(); + + // MANAGED: this.field = replace(value, this.field) + if (fieldType.isManaged(program)) { + let tempThis = flow.getTempLocal(thisType, false); + let expr: ExpressionRef; + if (tee) { // tee value to a temp local and make it the block's result + let tempValue = flow.getTempLocal(fieldType, !flow.canOverflow(valueExpr, fieldType)); + expr = module.createBlock(null, [ + module.createStore(fieldType.byteSize, + module.createTeeLocal(tempThis.index, thisExpr), + makeReplaceRef(this, + module.createTeeLocal(tempValue.index, valueExpr), + module.createLoad(fieldType.byteSize, fieldType.is(TypeFlags.SIGNED), + module.createGetLocal(tempThis.index, nativeThisType), + nativeFieldType, field.memoryOffset + ), + tempThis, + fieldType.is(TypeFlags.NULLABLE) + ), + nativeFieldType, field.memoryOffset + ), + module.createGetLocal(tempValue.index, nativeFieldType) + ], nativeFieldType); + flow.freeTempLocal(tempValue); + this.currentType = fieldType; + } else { // no need for a temp local + expr = module.createStore(fieldType.byteSize, + module.createTeeLocal(tempThis.index, thisExpr), + makeReplaceRef(this, + valueExpr, + module.createLoad(fieldType.byteSize, fieldType.is(TypeFlags.SIGNED), + module.createGetLocal(tempThis.index, nativeThisType), + nativeFieldType, field.memoryOffset + ), + tempThis, + fieldType.is(TypeFlags.NULLABLE) + ), + nativeFieldType, field.memoryOffset + ); + this.currentType = Type.void; + } + flow.freeTempLocal(tempThis); + return expr; + } + + // UNMANAGED: this.field = value + if (tee) { + this.currentType = fieldType; + let tempValue = flow.getAndFreeTempLocal(fieldType, !flow.canOverflow(valueExpr, fieldType)); + return module.createBlock(null, [ + module.createStore(fieldType.byteSize, + thisExpr, + module.createTeeLocal(tempValue.index, valueExpr), + nativeFieldType, field.memoryOffset + ), + module.createGetLocal(tempValue.index, nativeFieldType) + ], nativeFieldType); + } else { + this.currentType = Type.void; + return module.createStore(fieldType.byteSize, + thisExpr, + valueExpr, + nativeFieldType, field.memoryOffset + ); + } + } + compileCallExpression( expression: CallExpression, contextualType: Type, @@ -6072,18 +6118,18 @@ export class Compiler extends DiagnosticEmitter { switch (target.kind) { case ElementKind.CLASS: { let isUnchecked = this.currentFlow.is(FlowFlags.UNCHECKED_CONTEXT); - if (isUnchecked) { - let arrayType = this.program.determineBuiltinArrayType(target); - if (arrayType) { - return compileBuiltinArrayGet( - this, - target, - expression.expression, - expression.elementExpression, - contextualType - ); - } - } + // if (isUnchecked) { + // let arrayType = this.program.determineBuiltinArrayType(target); + // if (arrayType) { + // return compileBuiltinArrayGet( + // this, + // target, + // expression.expression, + // expression.elementExpression, + // contextualType + // ); + // } + // } let indexedGet = (target).lookupOverload(OperatorKind.INDEXED_GET, isUnchecked); if (!indexedGet) { this.error( @@ -6814,26 +6860,19 @@ export class Compiler extends DiagnosticEmitter { ) ) ); - var isManaged = elementType.isManaged(program) && arrayType.isManaged(program); - var retainInstance = isManaged - ? this.resolver.resolveFunction(assert(program.retainPrototype), [ elementType, arrayType ]) - : null; + var isManaged = elementType.isManaged(program); for (let i = 0, alignLog2 = elementType.alignLog2; i < length; ++i) { let valueExpression = expressions[i]; let valueExpr = valueExpression ? this.compileExpression(valueExpression, elementType, ConversionKind.IMPLICIT, WrapMode.NONE) : elementType.toNativeZero(module); if (isManaged) { - if (!retainInstance) { - valueExpr = module.createUnreachable(); - } else { - // value = RETAIN(value, tempThis) - valueExpr = this.makeCallInlinePrechecked(retainInstance, [ - valueExpr, - module.createGetLocal(tempThis.index, nativeArrayType) - ], 0, true); - this.currentFlow = flow; - } + // value = link/retain(value[, tempThis]) + valueExpr = makeInsertRef(this, + valueExpr, + tempThis, + elementType.is(TypeFlags.NULLABLE) + ); } // store(tempData, value, immOffset) stmts.push( @@ -6849,7 +6888,7 @@ export class Compiler extends DiagnosticEmitter { stmts.push( module.createGetLocal(tempThis.index, nativeArrayType) ); - flow.freeTempLocal(tempThis); // but can be reused now + flow.freeTempLocal(tempThis); flow.freeTempLocal(tempDataStart); this.currentType = arrayType; return module.createBlock(null, stmts, nativeArrayType); @@ -7212,43 +7251,6 @@ export class Compiler extends DiagnosticEmitter { return module.createUnreachable(); } - private compileGetter(target: PropertyPrototype, reportNode: Node): ExpressionRef { - var prototype = target.getterPrototype; - if (prototype) { - let instance = this.resolver.resolveFunction(prototype, null); - if (!instance) return this.module.createUnreachable(); - let signature = instance.signature; - if (!this.checkCallSignature( // reports - signature, - 0, - instance.is(CommonFlags.INSTANCE), - reportNode - )) { - return this.module.createUnreachable(); - } - if (instance.is(CommonFlags.INSTANCE)) { - let classInstance = assert(instance.parent); assert(classInstance.kind == ElementKind.CLASS); - let thisExpression = assert(this.resolver.currentThisExpression); //!!! - let thisExpr = this.compileExpressionRetainType( - thisExpression, - this.options.usizeType, - WrapMode.NONE - ); - this.currentType = signature.returnType; - return this.compileCallDirect(instance, [], reportNode, thisExpr); - } else { - this.currentType = signature.returnType; - return this.compileCallDirect(instance, [], reportNode, 0); - } - } else { - this.error( - DiagnosticCode.Property_0_does_not_exist_on_type_1, - reportNode.range, (target).name, (target).parent.toString() - ); - return this.module.createUnreachable(); - } - } - compileTernaryExpression(expression: TernaryExpression, contextualType: Type): ExpressionRef { var ifThen = expression.ifThen; var ifElse = expression.ifElse; diff --git a/src/flow.ts b/src/flow.ts index a43672b3..56839b08 100644 --- a/src/flow.ts +++ b/src/flow.ts @@ -156,7 +156,30 @@ export enum LocalFlags { export namespace LocalFlags { export function join(left: LocalFlags, right: LocalFlags): LocalFlags { return ((left & LocalFlags.ANY_CATEGORICAL) & (right & LocalFlags.ANY_CATEGORICAL)) - | (left & LocalFlags.ANY_CONDITIONAL) | (right & LocalFlags.ANY_CONDITIONAL); + | (left & LocalFlags.ANY_CONDITIONAL) | (right & LocalFlags.ANY_CONDITIONAL); + } +} + +/** Flags indicating the current state of a field. */ +export enum FieldFlags { + /** No specific conditions. */ + NONE = 0, + + /** Field is initialized. Relevant in constructors. */ + INITIALIZED = 1 << 0, + /** Field is conditionally initialized. Relevant in constructors. */ + CONDITIONALLY_INITIALIZED = 1 << 1, + + /** Any categorical flag. */ + ANY_CATEGORICAL = INITIALIZED, + + /** Any conditional flag. */ + ANY_CONDITIONAL = CONDITIONALLY_INITIALIZED +} +export namespace FieldFlags { + export function join(left: FieldFlags, right: FieldFlags): FieldFlags { + return ((left & FieldFlags.ANY_CATEGORICAL) & (right & FieldFlags.ANY_CATEGORICAL)) + | (left & FieldFlags.ANY_CONDITIONAL) | (right & FieldFlags.ANY_CONDITIONAL); } } @@ -181,6 +204,8 @@ export class Flow { scopedLocals: Map | null = null; /** Local flags. */ localFlags: LocalFlags[]; + /** Field flags. Relevant in constructors. */ + fieldFlags: Map | null = null; /** Function being inlined, when inlining. */ inlineFunction: Function | null; /** The label we break to when encountering a return statement, when inlining. */ diff --git a/src/program.ts b/src/program.ts index 3306dc87..db976f6f 100644 --- a/src/program.ts +++ b/src/program.ts @@ -354,23 +354,25 @@ export class Program extends DiagnosticEmitter { stringInstance: Class | null = null; /** Abort function reference, if present. */ abortInstance: Function | null = null; - /** Runtime allocation function. */ + + /** Runtime allocation macro. `ALLOCATE(payloadSize: usize): usize` */ allocateInstance: Function | null = null; - /** Unmanaged allocation function. */ + /** Unmanaged allocation macro. `ALLOCATE_UNMANAGED(size: usize): usize` */ allocateUnmanagedInstance: Function | null = null; - /** Runtime reallocation function. */ + /** Runtime reallocation macro. `REALLOCATE(ref: usize, newPayloadSize: usize): usize` */ reallocateInstance: Function | null = null; - /** Runtime discard function. */ + /** Runtime discard macro. `DISCARD(ref: usize): void` */ discardInstance: Function | null = null; - /** Runtime register function. */ + /** Runtime register macro. `REGISTER(ref: usize): T` */ registerPrototype: FunctionPrototype | null = null; - /** Runtime retain function. */ - retainPrototype: FunctionPrototype | null = null; - /** Runtime release function. */ - releasePrototype: FunctionPrototype | null = null; - /** Runtime make array function. */ + /** Runtime make array macro. `MAKEARRAY(capacity: i32, source: usize = 0): Array` */ makeArrayPrototype: FunctionPrototype | null = null; + linkRef: Function | null = null; + unlinkRef: Function | null = null; + retainRef: Function | null = null; + releaseRef: Function | null = null; + /** Next class id. */ nextClassId: u32 = 1; @@ -378,7 +380,7 @@ export class Program extends DiagnosticEmitter { /** Whether a garbage collector is present or not. */ get gcImplemented(): bool { - return this.lookupGlobal("__gc_register") !== null; + return this.lookupGlobal("__ref_collect") !== null; } /** Garbage collector mark function called to on reachable managed objects. */ gcMarkInstance: Function | null = null; // FIXME @@ -830,18 +832,25 @@ export class Program extends DiagnosticEmitter { assert(element.kind == ElementKind.FUNCTION_PROTOTYPE); this.registerPrototype = element; } - if (element = this.lookupGlobal(LibrarySymbols.RETAIN)) { - assert(element.kind == ElementKind.FUNCTION_PROTOTYPE); - this.retainPrototype = element; - } - if (element = this.lookupGlobal(LibrarySymbols.RELEASE)) { - assert(element.kind == ElementKind.FUNCTION_PROTOTYPE); - this.releasePrototype = element; - } if (element = this.lookupGlobal(LibrarySymbols.MAKEARRAY)) { assert(element.kind == ElementKind.FUNCTION_PROTOTYPE); this.makeArrayPrototype = element; } + if (this.lookupGlobal("__ref_collect")) { + if (element = this.lookupGlobal("__ref_link")) { + assert(element.kind == ElementKind.FUNCTION_PROTOTYPE); + this.linkRef = this.resolver.resolveFunction(element, null); + element = assert(this.lookupGlobal("__ref_unlink")); + assert(element.kind == ElementKind.FUNCTION_PROTOTYPE); + this.unlinkRef = this.resolver.resolveFunction(element, null); + } else if (element = this.lookupGlobal("__ref_retain")) { + assert(element.kind == ElementKind.FUNCTION_PROTOTYPE); + this.retainRef = this.resolver.resolveFunction(element, null); + element = assert(this.lookupGlobal("__ref_release")); + assert(element.kind == ElementKind.FUNCTION_PROTOTYPE); + this.releaseRef = this.resolver.resolveFunction(element, null); + } + } } // mark module exports, i.e. to apply proper wrapping behavior on the boundaries @@ -1726,31 +1735,31 @@ export class Program extends DiagnosticEmitter { } /** Determines the element type of a built-in array. */ - determineBuiltinArrayType(target: Class): Type | null { - switch (target.internalName) { - case BuiltinSymbols.Int8Array: return Type.i8; - case BuiltinSymbols.Uint8ClampedArray: - case BuiltinSymbols.Uint8Array: return Type.u8; - case BuiltinSymbols.Int16Array: return Type.i16; - case BuiltinSymbols.Uint16Array: return Type.u16; - case BuiltinSymbols.Int32Array: return Type.i32; - case BuiltinSymbols.Uint32Array: return Type.u32; - case BuiltinSymbols.Int64Array: return Type.i64; - case BuiltinSymbols.Uint64Array: return Type.u64; - case BuiltinSymbols.Float32Array: return Type.f32; - case BuiltinSymbols.Float64Array: return Type.f64; - } - var current: Class | null = target; - var arrayPrototype = this.arrayPrototype; - do { - if (current.prototype == arrayPrototype) { // Array - let typeArguments = assert(current.typeArguments); - assert(typeArguments.length == 1); - return typeArguments[0]; - } - } while (current = current.base); - return null; - } + // determineBuiltinArrayType(target: Class): Type | null { + // switch (target.internalName) { + // case BuiltinSymbols.Int8Array: return Type.i8; + // case BuiltinSymbols.Uint8ClampedArray: + // case BuiltinSymbols.Uint8Array: return Type.u8; + // case BuiltinSymbols.Int16Array: return Type.i16; + // case BuiltinSymbols.Uint16Array: return Type.u16; + // case BuiltinSymbols.Int32Array: return Type.i32; + // case BuiltinSymbols.Uint32Array: return Type.u32; + // case BuiltinSymbols.Int64Array: return Type.i64; + // case BuiltinSymbols.Uint64Array: return Type.u64; + // case BuiltinSymbols.Float32Array: return Type.f32; + // case BuiltinSymbols.Float64Array: return Type.f64; + // } + // var current: Class | null = target; + // var arrayPrototype = this.arrayPrototype; + // do { + // if (current.prototype == arrayPrototype) { // Array + // let typeArguments = assert(current.typeArguments); + // assert(typeArguments.length == 1); + // return typeArguments[0]; + // } + // } while (current = current.base); + // return null; + // } } /** Indicates the specific kind of an {@link Element}. */ diff --git a/src/resolver.ts b/src/resolver.ts index e057fbcc..d1b9aee1 100644 --- a/src/resolver.ts +++ b/src/resolver.ts @@ -372,12 +372,26 @@ export class Resolver extends DiagnosticEmitter { ); // recoverable } - return this.resolveType( + let type = this.resolveType( (element).typeNode, element, contextualTypeArguments, reportMode ); + if (!type) return null; + if (node.isNullable) { + if (!type.is(TypeFlags.REFERENCE)) { + if (reportMode == ReportMode.REPORT) { + this.error( + DiagnosticCode.Basic_type_0_cannot_be_nullable, + typeNode.name.range, typeName.identifier.text + ); + } + } else { + return type.asNullable(); + } + } + return type; } if (reportMode == ReportMode.REPORT) { this.error( @@ -614,8 +628,8 @@ export class Resolver extends DiagnosticEmitter { case ElementKind.CLASS: { // property access on element access? let elementExpression = this.currentElementExpression; if (elementExpression) { - let arrayType = this.program.determineBuiltinArrayType(target); - if (!arrayType) { + // let arrayType = this.program.determineBuiltinArrayType(target); + // if (!arrayType) { let indexedGet = (target).lookupOverload(OperatorKind.INDEXED_GET); if (!indexedGet) { this.error( @@ -624,8 +638,8 @@ export class Resolver extends DiagnosticEmitter { ); return null; } - arrayType = indexedGet.signature.returnType; - } + let arrayType = indexedGet.signature.returnType; + // } if (!(target = arrayType.classReference)) { this.error( DiagnosticCode.Property_0_does_not_exist_on_type_1, @@ -726,8 +740,8 @@ export class Resolver extends DiagnosticEmitter { break; } case ElementKind.CLASS: { - let arrayType = this.program.determineBuiltinArrayType(target); - if (!arrayType) { + // let arrayType = this.program.determineBuiltinArrayType(target); + // if (!arrayType) { let indexedGet = (target).lookupOverload(OperatorKind.INDEXED_GET); if (!indexedGet) { if (reportMode == ReportMode.REPORT) { @@ -738,8 +752,8 @@ export class Resolver extends DiagnosticEmitter { } return null; } - arrayType = indexedGet.signature.returnType; - } + let arrayType = indexedGet.signature.returnType; + // } if (targetExpression.kind == NodeKind.ELEMENTACCESS) { // nested element access if (target = arrayType.classReference) { this.currentThisExpression = targetExpression; diff --git a/src/types.ts b/src/types.ts index c3193e65..2c92bbe7 100644 --- a/src/types.ts +++ b/src/types.ts @@ -212,7 +212,9 @@ export class Type { var targetFunction: Signature | null; if (this.is(TypeFlags.REFERENCE)) { if (target.is(TypeFlags.REFERENCE)) { - if (!this.is(TypeFlags.NULLABLE) || target.is(TypeFlags.NULLABLE)) { + // FIXME: turned out resolveType didn't handle nullability properly, and fixing it there + // leads to this check failing all over the place due to not yet implemented null states. + // if (!this.is(TypeFlags.NULLABLE) || target.is(TypeFlags.NULLABLE)) { if (currentClass = this.classReference) { if (targetClass = target.classReference) { return currentClass.isAssignableTo(targetClass); @@ -222,7 +224,7 @@ export class Type { return currentFunction.isAssignableTo(targetFunction); } } - } + // } } } else if (!target.is(TypeFlags.REFERENCE)) { if (this.is(TypeFlags.INTEGER)) { diff --git a/std/assembly/array.ts b/std/assembly/array.ts index 6188ce1a..86704f83 100644 --- a/std/assembly/array.ts +++ b/std/assembly/array.ts @@ -1,7 +1,6 @@ -import { - ALLOCATE, REALLOCATE, DISCARD, RETAIN, RELEASE, REGISTER, MAX_BYTELENGTH, MOVE, MAKEARRAY, - ArrayBufferView -} from "./runtime"; +/// + +import { ALLOCATE, REALLOCATE, DISCARD, REGISTER, MAX_BYTELENGTH, MAKEARRAY, ArrayBufferView } from "./runtime"; import { ArrayBuffer } from "./arraybuffer"; import { COMPARATOR, SORT } from "./util/sort"; import { itoa, dtoa, itoa_stream, dtoa_stream, MAX_DOUBLE_LENGTH } from "./util/number"; @@ -90,19 +89,21 @@ export class Array extends ArrayBufferView { return -1; } - @operator("[]") // unchecked is built-in - private __get(index: i32): T { + @operator("[]") private __get(index: i32): T { if (isReference()) { if (!isNullable()) { if (index >= this.length_) throw new Error(E_HOLEYARRAY); } } if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE); + return this.__unchecked_get(index); + } + + @operator("{}") private __unchecked_get(index: i32): T { return load(this.dataStart + (index << alignof())); } - @operator("[]=") // unchecked is built-in - private __set(index: i32, value: T): void { + @operator("[]=") private __set(index: i32, value: T): void { var length = this.length_; if (isReference()) { if (!isNullable()) { @@ -110,21 +111,37 @@ export class Array extends ArrayBufferView { } } ensureCapacity(this, index + 1, alignof()); + this.__unchecked_set(index, value); + if (index >= length) this.length_ = index + 1; + } + + @operator("{}=") private __unchecked_set(index: i32, value: T): void { if (isManaged()) { let offset = this.dataStart + (index << alignof()); let oldValue = load(offset); if (value !== oldValue) { + store(offset, value); if (isNullable()) { - RELEASE(oldValue, this); // handles != null - } else if (oldValue !== null) { - RELEASE(oldValue, this); // requires != null + if (isDefined(__ref_link)) { + if (oldValue !== null) __ref_unlink(changetype(oldValue), changetype(this)); + if (value !== null) __ref_link(changetype(value), changetype(this)); + } else if (__ref_retain) { + if (oldValue !== null) __ref_release(changetype(oldValue)); + if (value !== null) __ref_retain(changetype(value)); + } else assert(false); + } else { + if (isDefined(__ref_link)) { + if (oldValue !== null) __ref_unlink(changetype(oldValue), changetype(this)); + __ref_link(changetype(value), changetype(this)); + } else if (__ref_retain) { + if (oldValue !== null) __ref_release(changetype(oldValue)); + __ref_retain(changetype(value)); + } else assert(false); } - store(offset, RETAIN(value, this)); } } else { store(this.dataStart + (index << alignof()), value); } - if (index >= length) this.length_ = index + 1; } fill(value: T, start: i32 = 0, end: i32 = i32.MAX_VALUE): this { @@ -177,15 +194,37 @@ export class Array extends ArrayBufferView { return -1; } - push(element: T): i32 { - var newLength = this.length_ + 1; + push(value: T): i32 { + var length = this.length_; + var newLength = length + 1; ensureCapacity(this, newLength, alignof()); + if (isManaged()) { + let offset = this.dataStart + (length << alignof()); + let oldValue = load(offset); + if (oldValue !== value) { + store(offset, value); + if (isNullable()) { + if (isDefined(__ref_link)) { + if (value !== null) __ref_link(changetype(value), changetype(this)); + if (oldValue !== null) __ref_unlink(changetype(oldValue), changetype(this)); + } else if (__ref_retain) { + if (oldValue !== null) __ref_retain(changetype(value)); + if (value !== null) __ref_release(changetype(oldValue)); + } else assert(false); + } else { + if (isDefined(__ref_link)) { + __ref_link(changetype(value), changetype(this)); + if (oldValue !== null) __ref_unlink(changetype(oldValue), changetype(this)); + } else if (__ref_retain) { + __ref_retain(changetype(value)); + if (oldValue !== null) __ref_release(changetype(oldValue)); + } else assert(false); + } + } + } else { + store(this.dataStart + (length << alignof()), value); + } this.length_ = newLength; - store(this.dataStart + ((newLength - 1) << alignof()), - isManaged() - ? RETAIN(element, this) - : element - ); return newLength; } @@ -198,13 +237,37 @@ export class Array extends ArrayBufferView { if (isManaged()) { let thisStart = this.dataStart; for (let offset: usize = 0; offset < thisSize; offset += sizeof()) { - store(outStart + offset, RETAIN>(load(thisStart + offset), out)); + let ref = load(thisStart + offset); + store(outStart + offset, ref); + if (isNullable()) { + if (ref) { + if (isDefined(__ref_link)) __ref_link(ref, changetype(this)); + else if (isDefined(__ref_retain)) __ref_retain(ref); + else assert(false); + } + } else { + if (isDefined(__ref_link)) __ref_link(ref, changetype(this)); + else if (isDefined(__ref_retain)) __ref_retain(ref); + else assert(false); + } } + outStart += thisSize; let otherStart = other.dataStart; let otherSize = otherLen << alignof(); for (let offset: usize = 0; offset < otherSize; offset += sizeof()) { - let element = load(otherStart + offset); - store(outStart + thisSize + offset, RETAIN>(element, out)); + let ref = load(otherStart + offset); + store(outStart + offset, ref); + if (isNullable()) { + if (ref) { + if (isDefined(__ref_link)) __ref_link(ref, changetype(this)); + else if (isDefined(__ref_retain)) __ref_retain(ref); + else assert(false); + } + } else { + if (isDefined(__ref_link)) __ref_link(ref, changetype(this)); + else if (isDefined(__ref_retain)) __ref_retain(ref); + else assert(false); + } } } else { memory.copy(outStart, this.dataStart, thisSize); @@ -260,12 +323,23 @@ export class Array extends ArrayBufferView { var outStart = out.dataStart; for (let index = 0; index < min(length, this.length_); ++index) { let value = load(this.dataStart + (index << alignof())); - let result = callbackfn(value, index, this); - store(outStart + (index << alignof()), - isManaged() - ? RETAIN>(result, out) - : result - ); + if (isManaged()) { + let ref = changetype(callbackfn(value, index, this)); + store(outStart + (index << alignof()), ref); + if (isNullable()) { + if (ref) { + if (isDefined(__ref_link)) __ref_link(ref, changetype(out)); + else if (isDefined(__ref_retain)) __ref_retain(ref); + else assert(false); + } + } else { + if (isDefined(__ref_link)) __ref_link(ref, changetype(out)); + else if (isDefined(__ref_retain)) __ref_retain(ref); + else assert(false); + } + } else { + store(outStart + (index << alignof()), callbackfn(value, index, this)); + } } return out; } @@ -330,17 +404,26 @@ export class Array extends ArrayBufferView { unshift(element: T): i32 { var newLength = this.length_ + 1; ensureCapacity(this, newLength, alignof()); - var base = this.dataStart; + var dataStart = this.dataStart; memory.copy( - base + sizeof(), - base, + dataStart + sizeof(), + dataStart, (newLength - 1) << alignof() ); - store(base, - isManaged() - ? RETAIN(element, this) - : element - ); + store(dataStart, element); + if (isManaged()) { + if (isNullable()) { + if (element !== null) { + if (isDefined(__ref_link)) __ref_link(changetype(element), changetype(this)); + else if (isDefined(__ref_retain)) __ref_retain(changetype(element)); + else assert(false); + } + } else { + if (isDefined(__ref_link)) __ref_link(changetype(element), changetype(this)); + else if (isDefined(__ref_retain)) __ref_retain(changetype(element)); + else assert(false); + } + } this.length_ = newLength; return newLength; } @@ -353,14 +436,27 @@ export class Array extends ArrayBufferView { var slice = MAKEARRAY(length); var sliceBase = slice.dataStart; var thisBase = this.dataStart + (begin << alignof()); - for (let i = 0; i < length; ++i) { - let offset = i << alignof(); - let element = load(thisBase + offset); - store(sliceBase + offset, - isManaged() - ? RETAIN>(element, slice) - : element - ); + if (isManaged()) { + let off = 0; + let end = length << alignof(); + while (off < end) { + let ref = load(thisBase + off); + store(sliceBase + off, ref); + if (isNullable()) { + if (ref) { + if (isDefined(__ref_link)) __ref_link(ref, changetype(slice)); + else if (isDefined(__ref_retain)) __ref_retain(ref); + else assert(false); + } + } else { + if (isDefined(__ref_link)) __ref_link(ref, changetype(slice)); + else if (isDefined(__ref_retain)) __ref_retain(ref); + else assert(false); + } + off += sizeof(); + } + } else { + memory.copy(sliceBase, thisBase, length << alignof()); } return slice; } @@ -373,18 +469,29 @@ export class Array extends ArrayBufferView { var resultStart = result.dataStart; var thisStart = this.dataStart; var thisBase = thisStart + (start << alignof()); - for (let i = 0; i < deleteCount; ++i) { - store(resultStart + (i << alignof()), - isManaged() - ? MOVE>(load(thisBase + (i << alignof())), this, result) - : load(thisBase + (i << alignof())) + if (isManaged()) { + for (let i = 0; i < deleteCount; ++i) { + let ref = load(thisBase + (i << alignof())); + store(resultStart + (i << alignof()), ref); + if (isDefined(__ref_link)) { + if (isNullable()) { + if (ref) { + __ref_unlink(ref, changetype(this)); + __ref_link(ref, changetype(result)); + } + } else { + __ref_unlink(ref, changetype(this)); + __ref_link(ref, changetype(result)); + } + } + } + } else { + memory.copy( + result.dataStart, + thisBase, + deleteCount << alignof() ); } - memory.copy( - result.dataStart, - thisBase, - deleteCount << alignof() - ); var offset = start + deleteCount; if (length != offset) { memory.copy( diff --git a/std/assembly/collector/README.md b/std/assembly/collector/README.md new file mode 100644 index 00000000..7f66d802 --- /dev/null +++ b/std/assembly/collector/README.md @@ -0,0 +1,107 @@ +Garbage collector interface +=========================== + +A garbage collector for AssemblyScript must implement the common and either of the tracing or reference counting interfaces. + +Common +------ + +* **__ref_collect**()
+ Triggers a full garbage collection cycle. + +Tracing +------- + +* **__ref_register**(ref: `usize`)
+ Sets up a new reference. + +* **__ref_link**(ref: `usize`, parentRef: `usize`)
+ Links a reference to a parent that is now referencing it. + +* **__ref_unlink**(ref: `usize`, parentRef: `usize`)
+ Unlinks a reference from a parent that was referencing it. + +Reference counting +------------------ + +* **__ref_retain**(ref: `usize`)
+ Retains a reference, usually incrementing RC. + +* **__ref_release**(ref: `usize`)
+ Releases a reference, usually decrementing RC. + +Reference counting may also implement `__ref_register` if necessary. + +Typical patterns +---------------- + +Standard library components make use of the interface where managed references are stored or deleted. Common patterns are: + +### General + +```ts +/// + +if (isManaged()) { + // compiled only if T is a managed reference + ... pattern ... +} +``` + +### Insertion + +```ts +if (isNullable()) { + if (ref) { + if (isDefined(__ref_link)) __ref_link(ref, parentRef); + else if (isDefined(__ref_retain)) __ref_retain(ref); + else assert(false); + } +} else { + if (isDefined(__ref_link)) __ref_link(ref, parentRef); + else if (isDefined(__ref_retain)) __ref_retain(ref); + else assert(false); +} +``` + +### Replacement + +```ts +if (ref !== oldRef) { + if (isNullable()) { + if (isDefined(__ref_link)) { + if (oldRef) __ref_unlink(oldRef, parentRef); + if (ref) __ref_link(ref, parentRef); + } else if (isDefined(__ref_retain)) { + if (oldRef) __ref_release(oldRef); + if (ref) __ref_retain(ref); + } else assert(false); + } else { + if (isDefined(__ref_link)) { + __ref_unlink(oldRef, parentRef); + __ref_link(ref, parentRef); + } else if (isDefined(__ref_retain)) { + __ref_release(oldRef); + __ref_retain(ref); + } else assert(false); + } +} +``` + +### Deletion + +```ts +if (isNullable()) { + if (ref) { + if (isDefined(__ref_link)) __ref_unlink(ref, parentRef); + else if (isDefined(__ref_retain)) __ref_release(ref); + else assert(false); + } +} else { + if (isDefined(__ref_link)) __ref_unlink(ref, parentRef); + else if (isDefined(__ref_retain)) __ref_release(ref); + else assert(false); +} +``` + +Note that some data structures may contain `null` values even though the value type isn't nullable. May be the case when appending a new element to an array for example. diff --git a/std/assembly/collector/dummy.ts b/std/assembly/collector/dummy.ts index eef7048b..86b5dd22 100644 --- a/std/assembly/collector/dummy.ts +++ b/std/assembly/collector/dummy.ts @@ -6,30 +6,40 @@ const TRACE = false; // @ts-ignore: decorator @global @unsafe -function __gc_register(ref: usize): void { - if (TRACE) trace("gc.register", 1, ref); +function __ref_register(ref: usize): void { + if (TRACE) trace("dummy.register", 1, ref); } // @ts-ignore: decorator @global @unsafe -function __gc_retain(ref: usize, parentRef: usize): void { - if (TRACE) trace("gc.retain", 2, ref, parentRef); +function __ref_collect(): void { + if (TRACE) trace("dummy.collect"); +} + +// Tracing + +// @ts-ignore: decorator +@global @unsafe +function __ref_link(ref: usize, parentRef: usize): void { + if (TRACE) trace("dummy.link", 2, ref, parentRef); } // @ts-ignore: decorator @global @unsafe -function __gc_release(ref: usize, parentRef: usize): void { - if (TRACE) trace("gc.release", 2, ref, parentRef); +function __ref_unlink(ref: usize, parentRef: usize): void { + if (TRACE) trace("dummy.unlink", 2, ref, parentRef); } -// @ts-ignore: decorator -@global @unsafe -function __gc_move(ref: usize, oldParentRef: usize, newParentRef: usize): void { - if (TRACE) trace("gc.move", 3, ref, oldParentRef, newParentRef); -} +// Reference counting -// @ts-ignore: decorator -@global @unsafe -function __gc_collect(): void { - if (TRACE) trace("gc.collect"); -} +// // @ts-ignore: decorator +// @global @unsafe +// function __ref_retain(ref: usize): void { +// if (TRACE) trace("dummy.retain", 1, ref); +// } + +// // @ts-ignore: decorator +// @global @unsafe +// function __ref_release(ref: usize): void { +// if (TRACE) trace("dummy.release", 1, ref); +// } diff --git a/std/assembly/collector/index.d.ts b/std/assembly/collector/index.d.ts new file mode 100644 index 00000000..e7d28756 --- /dev/null +++ b/std/assembly/collector/index.d.ts @@ -0,0 +1,11 @@ +// common +declare function __ref_collect(): void; + +// tracing +declare function __ref_register(ref: usize): void; +declare function __ref_link(ref: usize, parentRef: usize): void; +declare function __ref_unlink(ref: usize, parentRef: usize): void; + +// reference counting +declare function __ref_retain(ref: usize): void; +declare function __ref_release(ref: usize): void; diff --git a/std/assembly/collector/itcm.ts b/std/assembly/collector/itcm.ts index 1a0a11e2..c38696b1 100644 --- a/std/assembly/collector/itcm.ts +++ b/std/assembly/collector/itcm.ts @@ -211,34 +211,12 @@ function objToRef(obj: ManagedObject): usize { return changetype(obj) + HEADER_SIZE; } -// @ts-ignore: decorator -@global @unsafe -export function __gc_register(ref: usize): void { - if (TRACE) trace("gc.register", 1, ref); - step(); // also makes sure it's initialized - var obj = refToObj(ref); - obj.color = white; - fromSpace.push(obj); -} +// Garbage collector interface // @ts-ignore: decorator @global @unsafe -export function __gc_retain(ref: usize, parentRef: usize): void { - if (TRACE) trace("gc.retain", 2, ref, parentRef); - var parent = refToObj(parentRef); - if (parent.color == i32(!white) && refToObj(ref).color == white) parent.makeGray(); -} - -// @ts-ignore: decorator -@global @unsafe -export function __gc_release(ref: usize, parentRef: usize): void { - if (TRACE) trace("gc.release", 2, ref, parentRef); -} - -// @ts-ignore: decorator -@global @unsafe -export function __gc_collect(): void { - if (TRACE) trace("gc.collect"); +export function __ref_collect(): void { + if (TRACE) trace("itcm.collect"); // begin collecting if not yet collecting switch (state) { case State.INIT: @@ -247,3 +225,27 @@ export function __gc_collect(): void { // finish the cycle while (state != State.IDLE) step(); } + +// @ts-ignore: decorator +@global @unsafe +export function __ref_register(ref: usize): void { + if (TRACE) trace("itcm.register", 1, ref); + step(); // also makes sure it's initialized + var obj = refToObj(ref); + obj.color = white; + fromSpace.push(obj); +} + +// @ts-ignore: decorator +@global @unsafe +export function __ref_link(ref: usize, parentRef: usize): void { + if (TRACE) trace("itcm.link", 2, ref, parentRef); + var parent = refToObj(parentRef); + if (parent.color == i32(!white) && refToObj(ref).color == white) parent.makeGray(); +} + +// @ts-ignore: decorator +@global @unsafe +export function __ref_unlink(ref: usize, parentRef: usize): void { + if (TRACE) trace("itcm.unlink", 2, ref, parentRef); +} diff --git a/std/assembly/collector/pure.ts b/std/assembly/collector/pure.ts index 0ced1fc4..32c80d11 100644 --- a/std/assembly/collector/pure.ts +++ b/std/assembly/collector/pure.ts @@ -235,23 +235,23 @@ function collectWhite(s: Header): void { // Garbage collector interface // @ts-ignore: decorator -@global -function __gc_link(ref: usize, parentRef: usize): void { +@global @unsafe +function __ref_collect(): void { + collectCycles(); +} + +// @ts-ignore: decorator +@global @unsafe +function __ref_retain(ref: usize): void { increment(changetype
(ref - HEADER_SIZE)); } // @ts-ignore: decorator -@global -function __gc_unlink(ref: usize, parentRef: usize): void { +@global @unsafe +function __ref_release(ref: usize): void { decrement(changetype
(ref - HEADER_SIZE)) } -// @ts-ignore: decorator -@global -function __gc_collect(): void { - collectCycles(); -} - // TODO: // A significant constant-factor improvement can be obtained for cycle collection by observing that diff --git a/std/assembly/fixedarray.ts b/std/assembly/fixedarray.ts index 5e99fa65..e01d12ad 100644 --- a/std/assembly/fixedarray.ts +++ b/std/assembly/fixedarray.ts @@ -1,4 +1,4 @@ -import { ALLOCATE, REGISTER, MAX_BYTELENGTH, HEADER, HEADER_SIZE, RETAIN, RELEASE } from "./runtime"; +import { ALLOCATE, REGISTER, MAX_BYTELENGTH, HEADER, HEADER_SIZE } from "./runtime"; import { E_INDEXOUTOFRANGE, E_INVALIDLENGTH, E_HOLEYARRAY } from "./util/error"; // NOTE: DO NOT USE YET! @@ -45,8 +45,23 @@ export class FixedArray { let offset = changetype(this) + (index << alignof()); let oldValue = load(offset); if (value !== oldValue) { - RELEASE(oldValue, this); - store(offset, RETAIN(value, this)); + store(offset, value); + if (oldValue !== null) { + if (isDefined(__ref_link)) __ref_unlink(changetype(oldValue), changetype(this)); + else if (isDefined(__ref_retain)) __ref_release(changetype(oldValue)); + else assert(false); + } + if (isNullable()) { + if (value !== null) { + if (isDefined(__ref_link)) __ref_link(changetype(value), changetype(this)); + else if (isDefined(__ref_retain)) __ref_retain(changetype(value)); + else assert(false); + } + } else { + if (isDefined(__ref_link)) __ref_link(changetype(value), changetype(this)); + else if (isDefined(__ref_retain)) __ref_retain(changetype(value)); + else assert(false); + } } } else { store(changetype(this) + (index << alignof()), value); diff --git a/std/assembly/gc.ts b/std/assembly/gc.ts index 7da225a4..4edf24aa 100644 --- a/std/assembly/gc.ts +++ b/std/assembly/gc.ts @@ -1,47 +1,16 @@ +/// + /** Garbage collector interface. */ export namespace gc { /** Whether the garbage collector interface is implemented. */ // @ts-ignore: decorator @lazy - export const IMPLEMENTED: bool = isDefined( - // @ts-ignore: stub - __gc_register - ); - - /** Registers a managed object to be tracked by the garbage collector. */ - // @ts-ignore: decorator - @unsafe @inline - export function register(ref: usize): void { - // @ts-ignore: stub - if (isDefined(__gc_register)) __gc_register(ref); - else WARNING("missing implementation: gc.register"); - } - - /** Links a registered object with the registered object now referencing it. */ - // @ts-ignore: decorator - @unsafe @inline - export function link(ref: usize, parentRef: usize): void { - // @ts-ignore: stub - if (isDefined(__gc_link)) __gc_link(ref, parentRef); - else WARNING("missing implementation: gc.link"); - } - - /** Marks an object as being reachable. */ - // @ts-ignore: decorator - @unsafe - export function mark(ref: usize): void { - // @ts-ignore: stub - if (isDefined(__gc_mark)) __gc_mark(ref); - else WARNING("missing implementation: gc.mark"); - } + export const IMPLEMENTED: bool = isDefined(__ref_collect); /** Performs a full garbage collection cycle. */ export function collect(): void { - // @ts-ignore: stub - if (isDefined(__gc_collect)) __gc_collect(); + if (isDefined(__ref_collect)) __ref_collect(); else WARNING("missing implementation: gc.collect"); } } - -// TODO: move marking into userspace using builtins like iterateFields? diff --git a/std/assembly/map.ts b/std/assembly/map.ts index 9eace7e2..130d6c63 100644 --- a/std/assembly/map.ts +++ b/std/assembly/map.ts @@ -1,4 +1,5 @@ -import { RETAIN, RELEASE, HEADER } from "./runtime"; +/// + import { HASH } from "./util/hash"; // A deterministic hash map based on CloseTable from https://github.com/jorendorff/dht @@ -107,8 +108,27 @@ export class Map { if (isManaged()) { let oldValue = entry.value; if (value !== oldValue) { - RELEASE(oldValue, this); - entry.value = RETAIN(value, this); + entry.value = value; + if (isNullable()) { + if (oldValue !== null) { + if (isDefined(__ref_link)) __ref_unlink(changetype(oldValue), changetype(this)); + else if (isDefined(__ref_retain)) __ref_release(changetype(oldValue)); + else assert(false); + } + if (value !== null) { + if (isDefined(__ref_link)) __ref_link(changetype(value), changetype(this)); + else if (isDefined(__ref_retain)) __ref_retain(changetype(value)); + else assert(false); + } + } else { + if (isDefined(__ref_link)) { + __ref_unlink(changetype(oldValue), changetype(this)); + __ref_link(changetype(value), changetype(this)); + } else if (isDefined(__ref_retain)) { + __ref_release(changetype(oldValue)); + __ref_retain(changetype(value)); + } else assert(false); + } } } else { entry.value = value; @@ -124,12 +144,36 @@ export class Map { } // append new entry let entries = this.entries; - entry = changetype>( - changetype(entries) + this.entriesOffset++ * ENTRY_SIZE() - ); + entry = changetype>(changetype(entries) + this.entriesOffset++ * ENTRY_SIZE()); + entry.key = key; + entry.value = value; // link with the map - entry.key = isManaged() ? RETAIN(key, this) : key; - entry.value = isManaged() ? RETAIN(value, this) : value; + if (isManaged()) { + if (isNullable()) { + if (key !== null) { + if (isDefined(__ref_link)) __ref_link(changetype(key), changetype(this)); + else if (isDefined(__ref_retain)) __ref_retain(changetype(key)); + else assert(false); + } + } else { + if (isDefined(__ref_link)) __ref_link(changetype(key), changetype(this)); + else if (isDefined(__ref_retain)) __ref_retain(changetype(key)); + else assert(false); + } + } + if (isManaged()) { + if (isNullable()) { + if (value !== null) { + if (isDefined(__ref_link)) __ref_link(changetype(value), changetype(this)); + else if (isDefined(__ref_retain)) __ref_retain(changetype(value)); + else assert(false); + } + } else { + if (isDefined(__ref_link)) __ref_link(changetype(value), changetype(this)); + else if (isDefined(__ref_retain)) __ref_retain(changetype(value)); + else assert(false); + } + } ++this.entriesCount; // link with previous entry in bucket let bucketPtrBase = changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE; @@ -141,8 +185,34 @@ export class Map { delete(key: K): bool { var entry = this.find(key, HASH(key)); if (!entry) return false; - if (isManaged()) RELEASE(entry.key, this); - if (isManaged()) RELEASE(entry.value, this); + if (isManaged()) { + let oldKey = entry.key; + if (isNullable()) { + if (oldKey !== null) { + if (isDefined(__ref_link)) __ref_unlink(changetype(oldKey), changetype(this)); + else if (isDefined(__ref_retain)) __ref_release(changetype(oldKey)); + else assert(false); + } + } else { + if (isDefined(__ref_link)) __ref_unlink(changetype(oldKey), changetype(this)); + else if (isDefined(__ref_retain)) __ref_release(changetype(oldKey)); + else assert(false); + } + } + if (isManaged()) { + let oldValue = entry.key; + if (isNullable()) { + if (oldValue !== null) { + if (isDefined(__ref_link)) __ref_unlink(changetype(oldValue), changetype(this)); + else if (isDefined(__ref_retain)) __ref_release(changetype(oldValue)); + else assert(false); + } + } else { + if (isDefined(__ref_link)) __ref_unlink(changetype(oldValue), changetype(this)); + else if (isDefined(__ref_retain)) __ref_release(changetype(oldValue)); + else assert(false); + } + } entry.taggedNext |= EMPTY; --this.entriesCount; // check if rehashing is appropriate diff --git a/std/assembly/runtime.ts b/std/assembly/runtime.ts index fe6b27fe..3eb29c5a 100644 --- a/std/assembly/runtime.ts +++ b/std/assembly/runtime.ts @@ -10,14 +10,6 @@ import { AL_MASK, MAX_SIZE_32 } from "./util/allocator"; import { HEAP_BASE, memory } from "./memory"; import { Array } from "./array"; -/** Whether the memory manager interface is implemented. */ -// @ts-ignore: decorator, stub -@lazy export const MM_IMPLEMENTED: bool = isDefined(__memory_allocate); - -/** Whether the garbage collector interface is implemented. */ -// @ts-ignore: decorator, stub -@lazy export const GC_IMPLEMENTED: bool = isDefined(__gc_register); - /** * The common runtime object header prepended to all managed objects. Has a size of 16 bytes in * WASM32 and contains a classId (e.g. for instanceof checks), the allocation size (e.g. for @@ -31,15 +23,15 @@ import { Array } from "./array"; /** Size of the allocated payload. */ payloadSize: u32; /** Reserved field for use by GC. Only present if GC is. */ - gc1: usize; // itcm: tagged next + reserved1: usize; // itcm: tagged next /** Reserved field for use by GC. Only present if GC is. */ - gc2: usize; // itcm: prev + reserved2: usize; // itcm: prev } /** Common runtime header size. */ -export const HEADER_SIZE: usize = GC_IMPLEMENTED - ? (offsetof
( ) + AL_MASK) & ~AL_MASK // full header if GC is present - : (offsetof
("gc1") + AL_MASK) & ~AL_MASK; // half header if GC is absent +export const HEADER_SIZE: usize = isDefined(__ref_collect) + ? (offsetof
( ) + AL_MASK) & ~AL_MASK // full header if GC is present + : (offsetof
("reserved1") + AL_MASK) & ~AL_MASK; // half header if GC is absent /** Common runtime header magic. Used to assert registered/unregistered status. */ export const HEADER_MAGIC: u32 = 0xA55E4B17; @@ -72,16 +64,16 @@ export function ADJUSTOBLOCK(payloadSize: usize): usize { // @ts-ignore: decorator @unsafe @inline export function ALLOCATE(payloadSize: usize): usize { - return doAllocate(payloadSize); + return allocate(payloadSize); } -function doAllocate(payloadSize: usize): usize { +function allocate(payloadSize: usize): usize { var header = changetype
(memory.allocate(ADJUSTOBLOCK(payloadSize))); header.classId = HEADER_MAGIC; header.payloadSize = payloadSize; - if (GC_IMPLEMENTED) { - header.gc1 = 0; - header.gc2 = 0; + if (isDefined(__ref_collect)) { + header.reserved1 = 0; + header.reserved2 = 0; } return changetype(header) + HEADER_SIZE; } @@ -105,10 +97,10 @@ export function ALLOCATE_UNMANAGED(size: usize): usize { // @ts-ignore: decorator @unsafe @inline export function REALLOCATE(ref: usize, newPayloadSize: usize): usize { - return doReallocate(ref, newPayloadSize); + return reallocate(ref, newPayloadSize); } -function doReallocate(ref: usize, newPayloadSize: usize): usize { +function reallocate(ref: usize, newPayloadSize: usize): usize { // Background: When managed objects are allocated these aren't immediately registered with GC // but can be used as scratch objects while unregistered. This is useful in situations where // the object must be reallocated multiple times because its final size isn't known beforehand, @@ -121,9 +113,9 @@ function doReallocate(ref: usize, newPayloadSize: usize): usize { // move if the allocation isn't large enough or not a heap object let newHeader = changetype
(memory.allocate(newAdjustedSize)); newHeader.classId = header.classId; - if (GC_IMPLEMENTED) { - newHeader.gc1 = 0; - newHeader.gc2 = 0; + if (isDefined(__ref_collect)) { + newHeader.reserved1 = 0; + newHeader.reserved2 = 0; } let newRef = changetype(newHeader) + HEADER_SIZE; memory.copy(newRef, ref, payloadSize); @@ -132,10 +124,10 @@ function doReallocate(ref: usize, newPayloadSize: usize): usize { // free right away if not registered yet assert(ref > HEAP_BASE); // static objects aren't scratch objects memory.free(changetype(header)); - } else if (GC_IMPLEMENTED) { + } else if (isDefined(__ref_collect)) { // if previously registered, register again // @ts-ignore: stub - __gc_register(ref); + __ref_register(ref); } header = newHeader; ref = newRef; @@ -161,112 +153,23 @@ function doReallocate(ref: usize, newPayloadSize: usize): usize { @unsafe @inline export function REGISTER(ref: usize): T { if (!isReference()) ERROR("reference expected"); - return changetype(doRegister(ref, CLASSID())); + return changetype(register(ref, CLASSID())); } -function doRegister(ref: usize, classId: u32): usize { - if (!ASC_NO_ASSERT) assertUnregistered(ref); - changetype
(ref - HEADER_SIZE).classId = classId; - // @ts-ignore: stub - if (GC_IMPLEMENTED) __gc_register(ref); - return ref; -} - -/** - * Introduces a new reference to ref hold by parentRef. A tracing garbage collector will most - * likely link the runtime object within its internal graph when RETAIN is called, while a - * reference counting collector will increment the reference count. If a reference is moved - * from one parent to another, use MOVE instead. - */ -// @ts-ignore: decorator -@unsafe @inline -export function RETAIN(ref: T, parentRef: TParent): T { - if (!isManaged()) ERROR("managed reference expected"); - if (!isManaged()) ERROR("managed reference expected"); - if (isNullable()) { - if (ref !== null) doRetain(changetype(ref), changetype(parentRef)); - } else { - doRetain(changetype(ref), changetype(parentRef)); - } - return ref; -} - -function doRetain(ref: usize, parentRef: usize): void { +function register(ref: usize, classId: u32): usize { if (!ASC_NO_ASSERT) { - assertRegistered(ref); - assertRegistered(parentRef); + assert(ref > HEAP_BASE); // must be a heap object + let header = changetype
(ref - HEADER_SIZE); + assert(header.classId == HEADER_MAGIC); + header.classId = classId; + } else { + changetype
(ref - HEADER_SIZE).classId = classId; } // @ts-ignore: stub - if (GC_IMPLEMENTED) __gc_retain(changetype(ref), changetype(parentRef)); -} - -/** - * Releases a reference to ref hold by parentRef. A tracing garbage collector will most likely - * ignore this by design, while a reference counting collector decrements the reference count - * and potentially frees the runtime object. - */ -// @ts-ignore: decorator -@unsafe @inline -export function RELEASE(ref: T, parentRef: TParent): void { - if (!isManaged()) ERROR("managed reference expected"); - if (!isManaged()) ERROR("managed reference expected"); - if (isNullable()) { - if (ref !== null) doRelease(changetype(ref), changetype(parentRef)); - } else { - doRelease(changetype(ref), changetype(parentRef)); - } -} - -function doRelease(ref: usize, parentRef: usize): void { - if (!ASC_NO_ASSERT) { - assertRegistered(ref); - assertRegistered(parentRef); - } - // @ts-ignore: stub - if (GC_IMPLEMENTED) __gc_release(changetype(ref), changetype(parentRef)); -} - -/** - * Moves a reference to ref hold by oldParentRef to be now hold by newParentRef. This is a - * special case of first RELEASE'ing a reference on one and instantly RETAIN'ing the reference - * on another parent. A tracing garbage collector will most likely link the runtime object as if - * RETAIN'ed on the new parent only, while a reference counting collector can skip increment and - * decrement, as decrementing might otherwise involve a costly check for cyclic garbage. - */ -// @ts-ignore: decorator -@unsafe @inline -export function MOVE(ref: T, oldParentRef: TOldParent, newParentRef: TNewParent): T { - if (!isManaged()) ERROR("managed reference expected"); - if (!isManaged()) ERROR("managed reference expected"); - if (!isManaged()) ERROR("managed reference expected"); - if (isNullable()) { - if (ref !== null) doMove(changetype(ref), changetype(oldParentRef), changetype(newParentRef)); - } else { - doMove(changetype(ref), changetype(oldParentRef), changetype(newParentRef)); - } + if (isDefined(__ref_register)) __ref_register(ref); return ref; } -function doMove(ref: usize, oldParentRef: usize, newParentRef: usize): void { - if (!ASC_NO_ASSERT) { - assertRegistered(ref); - assertRegistered(oldParentRef); - assertRegistered(newParentRef); - } - if (GC_IMPLEMENTED) { - // @ts-ignore: stub - if (isDefined(__gc_move)) { - // @ts-ignore: stub - __gc_move(changetype(ref), changetype(oldParentRef), changetype(newParentRef)); - } else { - // @ts-ignore: stub - __gc_retain(changetype(ref), changetype(newParentRef)); - // @ts-ignore: stub - __gc_release(changetype(ref), changetype(oldParentRef)); - } - } -} - /** * Discards a runtime object that has not been registed and turned out to be unnecessary. * Essentially undoes the forgoing ALLOCATE. Should be avoided where possible. @@ -274,12 +177,18 @@ function doMove(ref: usize, oldParentRef: usize, newParentRef: usize): void { // @ts-ignore: decorator @unsafe @inline export function DISCARD(ref: usize): void { - doDiscard(ref); + discard(ref); } -function doDiscard(ref: usize): void { - if (!ASC_NO_ASSERT) assertUnregistered(ref); - memory.free(changetype(ref - HEADER_SIZE)); +function discard(ref: usize): void { + if (!ASC_NO_ASSERT) { + assert(ref > HEAP_BASE); // must be a heap object + let header = changetype
(ref - HEADER_SIZE); + assert(header.classId == HEADER_MAGIC); + memory.free(changetype(header)); + } else { + memory.free(changetype(ref - HEADER_SIZE)); + } } /** @@ -289,14 +198,14 @@ function doDiscard(ref: usize): void { */ // @ts-ignore: decorator @unsafe @inline -export function MAKEARRAY(capacity: i32, source: usize = 0): Array { - return changetype>(doMakeArray(capacity, source, CLASSID(), alignof())); +export function MAKEARRAY(capacity: i32, source: usize = 0): Array { + return changetype>(makeArray(capacity, source, CLASSID(), alignof())); } -function doMakeArray(capacity: i32, source: usize, classId: u32, alignLog2: usize): usize { - var array = doRegister(doAllocate(offsetof()), classId); +function makeArray(capacity: i32, source: usize, classId: u32, alignLog2: usize): usize { + var array = register(allocate(offsetof()), classId); var bufferSize = capacity << alignLog2; - var buffer = doRegister(doAllocate(capacity << alignLog2), CLASSID()); + var buffer = register(allocate(capacity << alignLog2), CLASSID()); changetype(array).data = changetype(buffer); // links changetype(array).dataStart = buffer; changetype(array).dataLength = bufferSize; @@ -305,22 +214,6 @@ function doMakeArray(capacity: i32, source: usize, classId: u32, alignLog2: usiz return array; } -// Helpers - -/** Asserts that a managed object is still unregistered. */ -// @ts-ignore: decorator -function assertUnregistered(ref: usize): void { - assert(ref > HEAP_BASE); // must be a heap object - assert(changetype
(ref - HEADER_SIZE).classId == HEADER_MAGIC); -} - -/** Asserts that a managed object has already been registered. */ -// @ts-ignore: decorator -function assertRegistered(ref: usize): void { - assert(ref !== null); // may be a static string or buffer (not a heap object) - assert(changetype
(ref - HEADER_SIZE).classId != HEADER_MAGIC); -} - import { ArrayBuffer } from "./arraybuffer"; import { E_INVALIDLENGTH } from "./util/error"; @@ -332,14 +225,17 @@ export const MAX_BYTELENGTH: i32 = MAX_SIZE_32 - HEADER_SIZE; /** Hard wired ArrayBufferView interface. */ export abstract class ArrayBufferView { + /** Backing buffer. */ // @ts-ignore: decorator @unsafe data: ArrayBuffer; + /** Data start offset in memory. */ // @ts-ignore: decorator @unsafe dataStart: usize; + /** Data length in memory, counted from `dataStart`. */ // @ts-ignore: decorator @unsafe dataLength: u32; diff --git a/std/assembly/set.ts b/std/assembly/set.ts index fd0b006d..5820094f 100644 --- a/std/assembly/set.ts +++ b/std/assembly/set.ts @@ -1,4 +1,5 @@ -import { RETAIN, RELEASE } from "./runtime"; +/// + import { HASH } from "./util/hash"; // A deterministic hash set based on CloseTable from https://github.com/jorendorff/dht @@ -105,11 +106,22 @@ export class Set { } // append new entry let entries = this.entries; - entry = changetype>( - changetype(entries) + this.entriesOffset++ * ENTRY_SIZE() - ); + entry = changetype>(changetype(entries) + this.entriesOffset++ * ENTRY_SIZE()); + entry.key = key; // link with the set - entry.key = isManaged() ? RETAIN(key, this) : key; + if (isManaged()) { + if (isNullable()) { + if (key !== null) { + if (isDefined(__ref_link)) __ref_link(changetype(key), changetype(this)); + else if (isDefined(__ref_retain)) __ref_retain(changetype(key)); + else assert(false); + } + } else { + if (isDefined(__ref_link)) __ref_link(changetype(key), changetype(this)); + else if (isDefined(__ref_retain)) __ref_retain(changetype(key)); + else assert(false); + } + } ++this.entriesCount; // link with previous entry in bucket let bucketPtrBase = changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE; @@ -121,7 +133,20 @@ export class Set { delete(key: K): bool { var entry = this.find(key, HASH(key)); if (!entry) return false; - if (isManaged()) RELEASE(entry.key, this); + if (isManaged()) { + key = entry.key; // exact, e.g. string + if (isNullable()) { + if (key !== null) { + if (isDefined(__ref_link)) __ref_unlink(changetype(key), changetype(this)); + else if (isDefined(__ref_retain)) __ref_release(changetype(key)); + else assert(false); + } + } else { + if (isDefined(__ref_link)) __ref_unlink(changetype(key), changetype(this)); + else if (isDefined(__ref_retain)) __ref_release(changetype(key)); + else assert(false); + } + } entry.taggedNext |= EMPTY; --this.entriesCount; // check if rehashing is appropriate diff --git a/std/assembly/string.ts b/std/assembly/string.ts index 5b755028..cdf4e4c9 100644 --- a/std/assembly/string.ts +++ b/std/assembly/string.ts @@ -1,4 +1,6 @@ -import { ALLOCATE, REGISTER, HEADER, HEADER_SIZE, RETAIN, MAKEARRAY, ArrayBufferView } from "./runtime"; +/// + +import { ALLOCATE, REGISTER, HEADER, HEADER_SIZE, MAKEARRAY, ArrayBufferView } from "./runtime"; import { MAX_SIZE_32 } from "./util/allocator"; import { compareImpl, parse, CharCode, isWhiteSpaceOrLineTerminator } from "./util/string"; import { E_INVALIDLENGTH } from "./util/error"; @@ -82,7 +84,7 @@ import { E_INVALIDLENGTH } from "./util/error"; return !compareImpl(this, start, searchString, 0, searchLength); } - @operator("==") private static __eq(left: String, right: String): bool { + @operator("==") private static __eq(left: String | null, right: String | null): bool { if (left === right) return true; if (left === null || right === null) return false; var leftLength = left.length; @@ -91,11 +93,11 @@ import { E_INVALIDLENGTH } from "./util/error"; return !compareImpl(left, 0, right, 0, leftLength); } - @operator("!=") private static __ne(left: String, right: String): bool { + @operator("!=") private static __ne(left: String | null, right: String | null): bool { return !this.__eq(left, right); } - @operator(">") private static __gt(left: String, right: String): bool { + @operator(">") private static __gt(left: String | null, right: String | null): bool { if (left === right || left === null || right === null) return false; var leftLength = left.length; var rightLength = right.length; @@ -359,16 +361,13 @@ import { E_INVALIDLENGTH } from "./util/error"; let resultStart = changetype(result).dataStart; for (let i: isize = 0; i < length; ++i) { let charStr = REGISTER(ALLOCATE(2)); - store( - changetype(charStr), - load(changetype(this) + (i << 1)) - ); - // result[i] = charStr - store(resultStart + (i << alignof()), - isManaged() - ? RETAIN>(charStr, result) - : charStr - ); + store(changetype(charStr), load(changetype(this) + (i << 1))); + store(resultStart + (i << alignof()), charStr); // result[i] = charStr + if (isManaged()) { + if (isDefined(__ref_link)) __ref_link(changetype(charStr), changetype(result)); + else if (isDefined(__ref_retain)) __ref_retain(changetype(charStr)); + else assert(false); + } } return result; } else if (!length) { diff --git a/tests/binaryen/break-value.js b/tests/binaryen/break-value.js new file mode 100644 index 00000000..dc280ddd --- /dev/null +++ b/tests/binaryen/break-value.js @@ -0,0 +1,24 @@ +var binaryen = require("binaryen"); + +var mod = new binaryen.Module(); +var ftype = mod.addFunctionType("ii", binaryen.i32, [ binaryen.i32 ]); +mod.addFunction("test", ftype, [], + mod.block("label", [ + mod.drop( // "br_if returns the value too" + mod.break("label", + // condition: $0 == 1 + mod.i32.eq( + mod.getLocal(0, binaryen.i32), + mod.i32.const(1) + ), + // value: 1 + mod.i32.const(1) + ) + ), + // push: 0 + mod.i32.const(0) + ], binaryen.i32) +); +console.log(mod.emitText()); + +mod.validate(); diff --git a/tests/compiler/call-super.optimized.wat b/tests/compiler/call-super.optimized.wat index 1e564d35..5cb40526 100644 --- a/tests/compiler/call-super.optimized.wat +++ b/tests/compiler/call-super.optimized.wat @@ -2,7 +2,6 @@ (type $FUNCSIG$v (func)) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$i (func (result i32))) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) @@ -78,7 +77,7 @@ global.set $~lib/allocator/arena/offset local.get $1 ) - (func $~lib/runtime/doAllocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) i32.const 1 i32.const 32 @@ -99,51 +98,47 @@ i32.const 8 i32.add ) - (func $~lib/runtime/assertUnregistered (; 3 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/register (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 i32.const 84 i32.le_u if i32.const 0 i32.const 16 - i32.const 313 - i32.const 2 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 i32.const 8 i32.sub + local.tee $2 i32.load i32.const -1520547049 i32.ne if i32.const 0 i32.const 16 - i32.const 314 - i32.const 2 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $~lib/runtime/doRegister (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/runtime/assertUnregistered - local.get $0 - i32.const 8 - i32.sub + local.get $2 local.get $1 i32.store local.get $0 ) - (func $call-super/A#constructor (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $call-super/A#constructor (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if i32.const 4 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.set $0 end local.get $0 @@ -163,12 +158,12 @@ end local.get $0 ) - (func $call-super/B#constructor (; 6 ;) (type $FUNCSIG$i) (result i32) + (func $call-super/B#constructor (; 5 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 8 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 3 - call $~lib/runtime/doRegister + call $~lib/runtime/register call $call-super/A#constructor local.tee $0 i32.const 2 @@ -199,7 +194,7 @@ end local.get $0 ) - (func $call-super/test1 (; 7 ;) (type $FUNCSIG$v) + (func $call-super/test1 (; 6 ;) (type $FUNCSIG$v) (local $0 i32) call $call-super/B#constructor local.tee $0 @@ -227,19 +222,19 @@ unreachable end ) - (func $call-super/D#constructor (; 8 ;) (type $FUNCSIG$i) (result i32) + (func $call-super/D#constructor (; 7 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 8 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 5 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $0 i32.eqz if i32.const 4 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 4 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.set $0 end local.get $0 @@ -274,7 +269,7 @@ end local.get $0 ) - (func $call-super/test2 (; 9 ;) (type $FUNCSIG$v) + (func $call-super/test2 (; 8 ;) (type $FUNCSIG$v) (local $0 i32) call $call-super/D#constructor local.tee $0 @@ -302,14 +297,14 @@ unreachable end ) - (func $call-super/E#constructor (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $call-super/E#constructor (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if i32.const 4 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 6 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.set $0 end local.get $0 @@ -329,12 +324,12 @@ end local.get $0 ) - (func $call-super/test3 (; 11 ;) (type $FUNCSIG$v) + (func $call-super/test3 (; 10 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 8 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 7 - call $~lib/runtime/doRegister + call $~lib/runtime/register call $call-super/E#constructor local.tee $0 i32.const 2 @@ -364,19 +359,19 @@ unreachable end ) - (func $call-super/H#constructor (; 12 ;) (type $FUNCSIG$i) (result i32) + (func $call-super/H#constructor (; 11 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 8 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 9 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $0 i32.eqz if i32.const 4 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 8 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.set $0 end local.get $0 @@ -387,7 +382,7 @@ i32.store offset=4 local.get $0 ) - (func $call-super/test4 (; 13 ;) (type $FUNCSIG$v) + (func $call-super/test4 (; 12 ;) (type $FUNCSIG$v) (local $0 i32) block (result i32) call $call-super/H#constructor @@ -417,19 +412,19 @@ unreachable end ) - (func $call-super/J#constructor (; 14 ;) (type $FUNCSIG$i) (result i32) + (func $call-super/J#constructor (; 13 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 8 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 11 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $0 i32.eqz if i32.const 4 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 10 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.set $0 end local.get $0 @@ -440,7 +435,7 @@ i32.store offset=4 local.get $0 ) - (func $call-super/test5 (; 15 ;) (type $FUNCSIG$v) + (func $call-super/test5 (; 14 ;) (type $FUNCSIG$v) (local $0 i32) block (result i32) call $call-super/J#constructor @@ -470,7 +465,7 @@ unreachable end ) - (func $start (; 16 ;) (type $FUNCSIG$v) + (func $start (; 15 ;) (type $FUNCSIG$v) i32.const 88 global.set $~lib/allocator/arena/startOffset global.get $~lib/allocator/arena/startOffset @@ -481,7 +476,7 @@ call $call-super/test4 call $call-super/test5 ) - (func $null (; 17 ;) (type $FUNCSIG$v) + (func $null (; 16 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/call-super.untouched.wat b/tests/compiler/call-super.untouched.wat index c711af9b..2f4427b6 100644 --- a/tests/compiler/call-super.untouched.wat +++ b/tests/compiler/call-super.untouched.wat @@ -2,7 +2,6 @@ (type $FUNCSIG$v (func)) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) (memory $0 1) @@ -10,7 +9,6 @@ (data (i32.const 48) "\02\00\00\00\1a\00\00\00c\00a\00l\00l\00-\00s\00u\00p\00e\00r\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) - (global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0)) (global $~lib/runtime/HEADER_SIZE i32 (i32.const 8)) (global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) @@ -117,7 +115,7 @@ end return ) - (func $~lib/runtime/doAllocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/runtime/ADJUSTOBLOCK @@ -133,7 +131,8 @@ global.get $~lib/runtime/HEADER_SIZE i32.add ) - (func $~lib/runtime/assertUnregistered (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/register (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 global.get $~lib/memory/HEAP_BASE i32.gt_u @@ -141,14 +140,16 @@ if i32.const 0 i32.const 16 - i32.const 313 - i32.const 2 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 global.get $~lib/runtime/HEADER_SIZE i32.sub + local.set $2 + local.get $2 i32.load global.get $~lib/runtime/HEADER_MAGIC i32.eq @@ -156,23 +157,17 @@ if i32.const 0 i32.const 16 - i32.const 314 - i32.const 2 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $~lib/runtime/doRegister (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/runtime/assertUnregistered - local.get $0 - global.get $~lib/runtime/HEADER_SIZE - i32.sub + local.get $2 local.get $1 i32.store local.get $0 ) - (func $call-super/A#constructor (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $call-super/A#constructor (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) block (result i32) local.get $0 @@ -183,12 +178,12 @@ i32.const 4 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -211,7 +206,7 @@ end local.get $0 ) - (func $call-super/B#constructor (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $call-super/B#constructor (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 if (result i32) @@ -221,12 +216,12 @@ i32.const 8 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 3 - call $~lib/runtime/doRegister + call $~lib/runtime/register end call $call-super/A#constructor local.set $0 @@ -261,7 +256,7 @@ end local.get $0 ) - (func $call-super/test1 (; 8 ;) (type $FUNCSIG$v) + (func $call-super/test1 (; 7 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 call $call-super/B#constructor @@ -293,7 +288,7 @@ unreachable end ) - (func $call-super/C#constructor (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $call-super/C#constructor (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.eqz @@ -303,12 +298,12 @@ i32.const 4 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 4 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -317,7 +312,7 @@ i32.store local.get $0 ) - (func $call-super/D#constructor (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $call-super/D#constructor (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 if (result i32) @@ -327,12 +322,12 @@ i32.const 8 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 5 - call $~lib/runtime/doRegister + call $~lib/runtime/register end call $call-super/C#constructor local.set $0 @@ -367,7 +362,7 @@ end local.get $0 ) - (func $call-super/test2 (; 11 ;) (type $FUNCSIG$v) + (func $call-super/test2 (; 10 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 call $call-super/D#constructor @@ -399,7 +394,7 @@ unreachable end ) - (func $call-super/E#constructor (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $call-super/E#constructor (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) block (result i32) local.get $0 @@ -410,12 +405,12 @@ i32.const 4 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 6 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -438,7 +433,7 @@ end local.get $0 ) - (func $call-super/F#constructor (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $call-super/F#constructor (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.eqz @@ -448,12 +443,12 @@ i32.const 8 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 7 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -465,7 +460,7 @@ i32.store offset=4 local.get $0 ) - (func $call-super/test3 (; 14 ;) (type $FUNCSIG$v) + (func $call-super/test3 (; 13 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 call $call-super/F#constructor @@ -497,7 +492,7 @@ unreachable end ) - (func $call-super/G#constructor (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $call-super/G#constructor (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.eqz @@ -507,12 +502,12 @@ i32.const 4 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 8 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -521,7 +516,7 @@ i32.store local.get $0 ) - (func $call-super/H#constructor (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $call-super/H#constructor (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.eqz @@ -531,12 +526,12 @@ i32.const 8 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 9 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -548,7 +543,7 @@ i32.store offset=4 local.get $0 ) - (func $call-super/test4 (; 17 ;) (type $FUNCSIG$v) + (func $call-super/test4 (; 16 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 call $call-super/H#constructor @@ -580,7 +575,7 @@ unreachable end ) - (func $call-super/I#constructor (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $call-super/I#constructor (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.eqz @@ -590,12 +585,12 @@ i32.const 4 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 10 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -604,7 +599,7 @@ i32.store local.get $0 ) - (func $call-super/J#constructor (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $call-super/J#constructor (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.eqz @@ -614,12 +609,12 @@ i32.const 8 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 11 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -631,7 +626,7 @@ i32.store offset=4 local.get $0 ) - (func $call-super/test5 (; 20 ;) (type $FUNCSIG$v) + (func $call-super/test5 (; 19 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 call $call-super/J#constructor @@ -663,7 +658,7 @@ unreachable end ) - (func $start:call-super (; 21 ;) (type $FUNCSIG$v) + (func $start:call-super (; 20 ;) (type $FUNCSIG$v) global.get $~lib/memory/HEAP_BASE i32.const 7 i32.add @@ -680,9 +675,9 @@ call $call-super/test4 call $call-super/test5 ) - (func $start (; 22 ;) (type $FUNCSIG$v) + (func $start (; 21 ;) (type $FUNCSIG$v) call $start:call-super ) - (func $null (; 23 ;) (type $FUNCSIG$v) + (func $null (; 22 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/comma.optimized.wat b/tests/compiler/comma.optimized.wat index c7af0887..a0cd1da7 100644 --- a/tests/compiler/comma.optimized.wat +++ b/tests/compiler/comma.optimized.wat @@ -71,7 +71,7 @@ end i32.const 0 global.set $comma/b - global.get $comma/b + i32.const 0 global.set $comma/a global.get $comma/a i32.const 1 @@ -107,8 +107,9 @@ i32.add global.set $comma/a global.get $comma/a + local.tee $0 global.set $comma/b - global.get $comma/b + local.get $0 global.set $comma/a global.get $comma/a i32.const 2 diff --git a/tests/compiler/comma.untouched.wat b/tests/compiler/comma.untouched.wat index 21671a42..b454fae0 100644 --- a/tests/compiler/comma.untouched.wat +++ b/tests/compiler/comma.untouched.wat @@ -86,8 +86,9 @@ end block (result i32) i32.const 0 + local.tee $0 global.set $comma/b - global.get $comma/b + local.get $0 end global.set $comma/a block (result i32) @@ -129,8 +130,9 @@ global.set $comma/a block (result i32) global.get $comma/a + local.tee $0 global.set $comma/b - global.get $comma/b + local.get $0 end end global.set $comma/a diff --git a/tests/compiler/constructor.optimized.wat b/tests/compiler/constructor.optimized.wat index 496d7c4d..ff0bacf7 100644 --- a/tests/compiler/constructor.optimized.wat +++ b/tests/compiler/constructor.optimized.wat @@ -1,7 +1,6 @@ (module (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$v (func)) (type $FUNCSIG$i (func (result i32))) @@ -88,7 +87,7 @@ global.set $~lib/allocator/arena/offset local.get $1 ) - (func $~lib/runtime/doAllocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) i32.const 1 i32.const 32 @@ -109,52 +108,48 @@ i32.const 8 i32.add ) - (func $~lib/runtime/assertUnregistered (; 3 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/register (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 i32.const 48 i32.le_u if i32.const 0 i32.const 16 - i32.const 313 - i32.const 2 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 i32.const 8 i32.sub + local.tee $2 i32.load i32.const -1520547049 i32.ne if i32.const 0 i32.const 16 - i32.const 314 - i32.const 2 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $~lib/runtime/doRegister (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/runtime/assertUnregistered - local.get $0 - i32.const 8 - i32.sub + local.get $2 local.get $1 i32.store local.get $0 ) - (func $constructor/CtorConditionallyAllocates#constructor (; 5 ;) (type $FUNCSIG$i) (result i32) + (func $constructor/CtorConditionallyAllocates#constructor (; 4 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) block (result i32) global.get $constructor/b if i32.const 0 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 10 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.set $0 end local.get $0 @@ -162,60 +157,60 @@ end if i32.const 0 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 10 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.set $0 end local.get $0 ) - (func $start:constructor (; 6 ;) (type $FUNCSIG$v) + (func $start:constructor (; 5 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 48 global.set $~lib/allocator/arena/startOffset global.get $~lib/allocator/arena/startOffset global.set $~lib/allocator/arena/offset i32.const 0 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register global.set $constructor/emptyCtor i32.const 4 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 3 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $0 i32.const 1 i32.store local.get $0 global.set $constructor/emptyCtorWithFieldInit i32.const 4 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 4 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $0 i32.const 0 i32.store local.get $0 global.set $constructor/emptyCtorWithFieldNoInit i32.const 0 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 5 - call $~lib/runtime/doRegister + call $~lib/runtime/register global.set $constructor/none i32.const 4 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 6 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $0 i32.const 1 i32.store local.get $0 global.set $constructor/justFieldInit i32.const 4 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 7 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $0 i32.const 0 i32.store @@ -232,23 +227,23 @@ br $__inlined_func$constructor/CtorConditionallyReturns#constructor end i32.const 0 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 8 - call $~lib/runtime/doRegister + call $~lib/runtime/register end global.set $constructor/ctorConditionallyReturns i32.const 0 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 9 - call $~lib/runtime/doRegister + call $~lib/runtime/register global.set $constructor/ctorAllocates call $constructor/CtorConditionallyAllocates#constructor global.set $constructor/ctorConditionallyAllocates ) - (func $start (; 7 ;) (type $FUNCSIG$v) + (func $start (; 6 ;) (type $FUNCSIG$v) call $start:constructor ) - (func $null (; 8 ;) (type $FUNCSIG$v) + (func $null (; 7 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/constructor.untouched.wat b/tests/compiler/constructor.untouched.wat index 9e469b6b..474bf559 100644 --- a/tests/compiler/constructor.untouched.wat +++ b/tests/compiler/constructor.untouched.wat @@ -1,7 +1,6 @@ (module (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) @@ -9,7 +8,6 @@ (data (i32.const 8) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) - (global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0)) (global $~lib/runtime/HEADER_SIZE i32 (i32.const 8)) (global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) @@ -127,7 +125,7 @@ end return ) - (func $~lib/runtime/doAllocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/runtime/ADJUSTOBLOCK @@ -143,7 +141,8 @@ global.get $~lib/runtime/HEADER_SIZE i32.add ) - (func $~lib/runtime/assertUnregistered (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/register (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 global.get $~lib/memory/HEAP_BASE i32.gt_u @@ -151,14 +150,16 @@ if i32.const 0 i32.const 16 - i32.const 313 - i32.const 2 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 global.get $~lib/runtime/HEADER_SIZE i32.sub + local.set $2 + local.get $2 i32.load global.get $~lib/runtime/HEADER_MAGIC i32.eq @@ -166,23 +167,17 @@ if i32.const 0 i32.const 16 - i32.const 314 - i32.const 2 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $~lib/runtime/doRegister (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/runtime/assertUnregistered - local.get $0 - global.get $~lib/runtime/HEADER_SIZE - i32.sub + local.get $2 local.get $1 i32.store local.get $0 ) - (func $constructor/EmptyCtor#constructor (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $constructor/EmptyCtor#constructor (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.eqz @@ -192,18 +187,18 @@ i32.const 0 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end local.get $0 ) - (func $constructor/EmptyCtorWithFieldInit#constructor (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $constructor/EmptyCtorWithFieldInit#constructor (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.eqz @@ -213,12 +208,12 @@ i32.const 4 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 3 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -227,7 +222,7 @@ i32.store local.get $0 ) - (func $constructor/EmptyCtorWithFieldNoInit#constructor (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $constructor/EmptyCtorWithFieldNoInit#constructor (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.eqz @@ -237,12 +232,12 @@ i32.const 4 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 4 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -251,7 +246,7 @@ i32.store local.get $0 ) - (func $constructor/None#constructor (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $constructor/None#constructor (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.eqz @@ -261,18 +256,18 @@ i32.const 0 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 5 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end local.get $0 ) - (func $constructor/JustFieldInit#constructor (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $constructor/JustFieldInit#constructor (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.eqz @@ -282,12 +277,12 @@ i32.const 4 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 6 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -296,7 +291,7 @@ i32.store local.get $0 ) - (func $constructor/JustFieldNoInit#constructor (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $constructor/JustFieldNoInit#constructor (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.eqz @@ -306,12 +301,12 @@ i32.const 4 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 7 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -320,11 +315,11 @@ i32.store local.get $0 ) - (func $constructor/CtorReturns#constructor (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $constructor/CtorReturns#constructor (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 0 call $~lib/memory/memory.allocate ) - (func $constructor/CtorConditionallyReturns#constructor (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $constructor/CtorConditionallyReturns#constructor (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) global.get $constructor/b if @@ -340,18 +335,18 @@ i32.const 0 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 8 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end local.get $0 ) - (func $constructor/CtorAllocates#constructor (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $constructor/CtorAllocates#constructor (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) block (result i32) local.get $0 @@ -362,12 +357,12 @@ i32.const 0 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 9 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -376,7 +371,7 @@ drop local.get $0 ) - (func $constructor/CtorConditionallyAllocates#constructor (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $constructor/CtorConditionallyAllocates#constructor (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) global.get $constructor/b if @@ -389,12 +384,12 @@ i32.const 0 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 10 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -410,18 +405,18 @@ i32.const 0 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 10 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end local.get $0 ) - (func $start:constructor (; 16 ;) (type $FUNCSIG$v) + (func $start:constructor (; 15 ;) (type $FUNCSIG$v) global.get $~lib/memory/HEAP_BASE i32.const 7 i32.add @@ -463,9 +458,9 @@ call $constructor/CtorConditionallyAllocates#constructor global.set $constructor/ctorConditionallyAllocates ) - (func $start (; 17 ;) (type $FUNCSIG$v) + (func $start (; 16 ;) (type $FUNCSIG$v) call $start:constructor ) - (func $null (; 18 ;) (type $FUNCSIG$v) + (func $null (; 17 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/exports.optimized.wat b/tests/compiler/exports.optimized.wat index 32119011..59a6bda0 100644 --- a/tests/compiler/exports.optimized.wat +++ b/tests/compiler/exports.optimized.wat @@ -2,9 +2,9 @@ (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$i (func (result i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$vii (func (param i32 i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) (memory $0 1) @@ -124,86 +124,61 @@ global.set $~lib/allocator/arena/offset local.get $1 ) - (func $~lib/runtime/assertUnregistered (; 5 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/register (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) local.get $0 i32.const 48 i32.le_u if i32.const 0 i32.const 16 - i32.const 313 - i32.const 2 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 i32.const 8 i32.sub + local.tee $1 i32.load i32.const -1520547049 i32.ne if i32.const 0 i32.const 16 - i32.const 314 - i32.const 2 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $exports/Car#constructor (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 16 - call $~lib/memory/memory.allocate - local.tee $0 - i32.const -1520547049 - i32.store - local.get $0 - i32.const 4 - i32.store offset=4 - local.get $0 - i32.const 8 - i32.add - local.tee $0 - call $~lib/runtime/assertUnregistered - local.get $0 - i32.const 8 - i32.sub - i32.const 1 - i32.store - end - local.get $0 - local.get $1 - i32.store - local.get $0 local.get $1 + i32.const 1 i32.store local.get $0 ) - (func $exports/Car#get:numDoors (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $exports/Car#get:numDoors (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load ) - (func $exports/Car#set:numDoors (; 8 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $exports/Car#set:numDoors (; 7 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 local.get $1 i32.store ) - (func $exports/Car#openDoors (; 9 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $exports/Car#openDoors (; 8 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) - (func $start (; 10 ;) (type $FUNCSIG$v) + (func $start (; 9 ;) (type $FUNCSIG$v) i32.const 48 global.set $~lib/allocator/arena/startOffset global.get $~lib/allocator/arena/startOffset global.set $~lib/allocator/arena/offset ) - (func $null (; 11 ;) (type $FUNCSIG$v) + (func $null (; 10 ;) (type $FUNCSIG$v) nop ) - (func $exports/subOpt|trampoline (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $exports/subOpt|trampoline (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -221,11 +196,11 @@ local.get $1 i32.sub ) - (func $~lib/setargc (; 13 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/setargc (; 12 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 global.set $~lib/argc ) - (func $exports/Car#constructor|trampoline (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $exports/Car#constructor|trampoline (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -237,10 +212,29 @@ i32.const 2 local.set $1 end - block (result i32) + local.get $0 + i32.eqz + if + i32.const 16 + call $~lib/memory/memory.allocate + local.tee $0 + i32.const -1520547049 + i32.store local.get $0 - local.get $1 - call $exports/Car#constructor + i32.const 4 + i32.store offset=4 + local.get $0 + i32.const 8 + i32.add + call $~lib/runtime/register + local.set $0 end + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.store + local.get $0 ) ) diff --git a/tests/compiler/exports.untouched.wat b/tests/compiler/exports.untouched.wat index b9576460..7582116c 100644 --- a/tests/compiler/exports.untouched.wat +++ b/tests/compiler/exports.untouched.wat @@ -2,9 +2,9 @@ (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$i (func (result i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$vii (func (param i32 i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) (memory $0 1) @@ -18,7 +18,6 @@ (global $exports/Car.TIRES i32 (i32.const 4)) (global $exports/vehicles.Car.TIRES i32 (i32.const 4)) (global $exports/outer.inner.a i32 (i32.const 42)) - (global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0)) (global $~lib/runtime/HEADER_SIZE i32 (i32.const 8)) (global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) @@ -169,7 +168,7 @@ end return ) - (func $~lib/runtime/doAllocate (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/allocate (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/runtime/ADJUSTOBLOCK @@ -185,7 +184,8 @@ global.get $~lib/runtime/HEADER_SIZE i32.add ) - (func $~lib/runtime/assertUnregistered (; 8 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/register (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 global.get $~lib/memory/HEAP_BASE i32.gt_u @@ -193,14 +193,16 @@ if i32.const 0 i32.const 16 - i32.const 313 - i32.const 2 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 global.get $~lib/runtime/HEADER_SIZE i32.sub + local.set $2 + local.get $2 i32.load global.get $~lib/runtime/HEADER_MAGIC i32.eq @@ -208,23 +210,17 @@ if i32.const 0 i32.const 16 - i32.const 314 - i32.const 2 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $~lib/runtime/doRegister (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/runtime/assertUnregistered - local.get $0 - global.get $~lib/runtime/HEADER_SIZE - i32.sub + local.get $2 local.get $1 i32.store local.get $0 ) - (func $exports/Car#constructor (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $exports/Car#constructor (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) block (result i32) local.get $0 @@ -235,12 +231,12 @@ i32.const 4 local.set $2 local.get $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $2 local.get $2 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -253,22 +249,22 @@ i32.store local.get $0 ) - (func $exports/Car#get:numDoors (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $exports/Car#get:numDoors (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load ) - (func $exports/Car#set:numDoors (; 12 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $exports/Car#set:numDoors (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 local.get $1 i32.store ) - (func $exports/Car#openDoors (; 13 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $exports/Car#openDoors (; 12 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) - (func $exports/vehicles.Car.getNumTires (; 14 ;) (type $FUNCSIG$i) (result i32) + (func $exports/vehicles.Car.getNumTires (; 13 ;) (type $FUNCSIG$i) (result i32) global.get $exports/vehicles.Car.TIRES ) - (func $exports/vehicles.Car#constructor (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $exports/vehicles.Car#constructor (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) block (result i32) local.get $0 @@ -279,12 +275,12 @@ i32.const 4 local.set $2 local.get $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $2 local.get $2 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -297,19 +293,19 @@ i32.store local.get $0 ) - (func $exports/vehicles.Car#get:numDoors (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $exports/vehicles.Car#get:numDoors (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load ) - (func $exports/vehicles.Car#set:numDoors (; 17 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $exports/vehicles.Car#set:numDoors (; 16 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 local.get $1 i32.store ) - (func $exports/vehicles.Car#openDoors (; 18 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $exports/vehicles.Car#openDoors (; 17 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) - (func $start (; 19 ;) (type $FUNCSIG$v) + (func $start (; 18 ;) (type $FUNCSIG$v) global.get $~lib/memory/HEAP_BASE i32.const 7 i32.add @@ -321,9 +317,9 @@ global.get $~lib/allocator/arena/startOffset global.set $~lib/allocator/arena/offset ) - (func $null (; 20 ;) (type $FUNCSIG$v) + (func $null (; 19 ;) (type $FUNCSIG$v) ) - (func $exports/subOpt|trampoline (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $exports/subOpt|trampoline (; 20 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -341,20 +337,20 @@ local.get $1 call $exports/subOpt ) - (func $~lib/setargc (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/setargc (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 global.set $~lib/argc ) - (func $Car#get:doors (; 23 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $Car#get:doors (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load ) - (func $Car#set:doors (; 24 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $Car#set:doors (; 23 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 local.get $1 i32.store ) - (func $exports/Car#constructor|trampoline (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $exports/Car#constructor|trampoline (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -370,16 +366,16 @@ local.get $1 call $exports/Car#constructor ) - (func $vehicles.Car#get:doors (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $vehicles.Car#get:doors (; 25 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load ) - (func $vehicles.Car#set:doors (; 27 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $vehicles.Car#set:doors (; 26 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 local.get $1 i32.store ) - (func $exports/vehicles.Car#constructor|trampoline (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $exports/vehicles.Car#constructor|trampoline (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange diff --git a/tests/compiler/for.optimized.wat b/tests/compiler/for.optimized.wat index a7bed008..82032018 100644 --- a/tests/compiler/for.optimized.wat +++ b/tests/compiler/for.optimized.wat @@ -91,8 +91,9 @@ global.get $for/i i32.const 1 i32.sub + local.tee $0 global.set $for/i - global.get $for/i + local.get $0 br_if $repeat|4 end i32.const 0 diff --git a/tests/compiler/for.untouched.wat b/tests/compiler/for.untouched.wat index 45e07de2..222039d8 100644 --- a/tests/compiler/for.untouched.wat +++ b/tests/compiler/for.untouched.wat @@ -124,8 +124,9 @@ global.get $for/i i32.const 1 i32.sub + local.tee $1 global.set $for/i - global.get $for/i + local.get $1 end i32.const 0 i32.eq @@ -139,26 +140,26 @@ end block $break|5 i32.const 0 - local.set $1 + local.set $2 loop $repeat|5 block $continue|5 - local.get $1 + local.get $2 i32.const 10 i32.lt_s i32.eqz br_if $break|5 br $continue|5 end - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $repeat|5 unreachable end unreachable end - local.get $1 + local.get $2 i32.const 10 i32.eq i32.eqz @@ -172,9 +173,9 @@ end block $break|6 i32.const 0 - local.set $2 + local.set $1 loop $repeat|6 - local.get $2 + local.get $1 i32.const 10 i32.lt_s i32.eqz @@ -189,7 +190,7 @@ i32.lt_s i32.eqz br_if $break|7 - local.get $2 + local.get $1 local.get $3 i32.eq if @@ -205,10 +206,10 @@ end unreachable end - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $1 br $repeat|6 unreachable end diff --git a/tests/compiler/getter-call.optimized.wat b/tests/compiler/getter-call.optimized.wat index 1ac3e8f3..29a6fcb3 100644 --- a/tests/compiler/getter-call.optimized.wat +++ b/tests/compiler/getter-call.optimized.wat @@ -1,7 +1,6 @@ (module (type $FUNCSIG$i (func (result i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) @@ -78,34 +77,43 @@ global.set $~lib/allocator/arena/offset local.get $1 ) - (func $~lib/runtime/assertUnregistered (; 2 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/register (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) local.get $0 i32.const 48 i32.le_u if i32.const 0 i32.const 16 - i32.const 313 - i32.const 2 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 i32.const 8 i32.sub + local.tee $1 i32.load i32.const -1520547049 i32.ne if i32.const 0 i32.const 16 - i32.const 314 - i32.const 2 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end + local.get $1 + i32.const 1 + i32.store + local.get $0 ) - (func $getter-call/C#constructor (; 3 ;) (type $FUNCSIG$i) (result i32) + (func $getter-call/C#get:x~anonymous|0 (; 3 ;) (type $FUNCSIG$i) (result i32) + i32.const 42 + ) + (func $getter-call/test (; 4 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 8 call $~lib/memory/memory.allocate @@ -118,35 +126,20 @@ local.get $0 i32.const 8 i32.add - local.tee $0 - call $~lib/runtime/assertUnregistered - local.get $0 - i32.const 8 - i32.sub - i32.const 1 - i32.store - local.get $0 - ) - (func $getter-call/C#get:x~anonymous|0 (; 4 ;) (type $FUNCSIG$i) (result i32) - i32.const 42 - ) - (func $getter-call/test (; 5 ;) (type $FUNCSIG$i) (result i32) - block (result i32) - call $getter-call/C#constructor - end + call $~lib/runtime/register drop i32.const 0 global.set $~lib/argc i32.const 1 call_indirect (type $FUNCSIG$i) ) - (func $start (; 6 ;) (type $FUNCSIG$v) + (func $start (; 5 ;) (type $FUNCSIG$v) i32.const 48 global.set $~lib/allocator/arena/startOffset global.get $~lib/allocator/arena/startOffset global.set $~lib/allocator/arena/offset ) - (func $null (; 7 ;) (type $FUNCSIG$v) + (func $null (; 6 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/getter-call.untouched.wat b/tests/compiler/getter-call.untouched.wat index 801c6ebf..5eb46ec0 100644 --- a/tests/compiler/getter-call.untouched.wat +++ b/tests/compiler/getter-call.untouched.wat @@ -2,7 +2,6 @@ (type $FUNCSIG$i (func (result i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) @@ -10,7 +9,6 @@ (data (i32.const 8) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") (table $0 2 funcref) (elem (i32.const 0) $null $getter-call/C#get:x~anonymous|0) - (global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0)) (global $~lib/runtime/HEADER_SIZE i32 (i32.const 8)) (global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) @@ -119,7 +117,7 @@ end return ) - (func $~lib/runtime/doAllocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/runtime/ADJUSTOBLOCK @@ -135,7 +133,8 @@ global.get $~lib/runtime/HEADER_SIZE i32.add ) - (func $~lib/runtime/assertUnregistered (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/register (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 global.get $~lib/memory/HEAP_BASE i32.gt_u @@ -143,14 +142,16 @@ if i32.const 0 i32.const 16 - i32.const 313 - i32.const 2 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 global.get $~lib/runtime/HEADER_SIZE i32.sub + local.set $2 + local.get $2 i32.load global.get $~lib/runtime/HEADER_MAGIC i32.eq @@ -158,23 +159,17 @@ if i32.const 0 i32.const 16 - i32.const 314 - i32.const 2 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $~lib/runtime/doRegister (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/runtime/assertUnregistered - local.get $0 - global.get $~lib/runtime/HEADER_SIZE - i32.sub + local.get $2 local.get $1 i32.store local.get $0 ) - (func $getter-call/C#constructor (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $getter-call/C#constructor (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.eqz @@ -184,24 +179,24 @@ i32.const 0 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end local.get $0 ) - (func $getter-call/C#get:x~anonymous|0 (; 7 ;) (type $FUNCSIG$i) (result i32) + (func $getter-call/C#get:x~anonymous|0 (; 6 ;) (type $FUNCSIG$i) (result i32) i32.const 42 ) - (func $getter-call/C#get:x (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $getter-call/C#get:x (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 1 ) - (func $getter-call/test (; 9 ;) (type $FUNCSIG$i) (result i32) + (func $getter-call/test (; 8 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 0 call $getter-call/C#constructor @@ -212,7 +207,7 @@ call $getter-call/C#get:x call_indirect (type $FUNCSIG$i) ) - (func $start (; 10 ;) (type $FUNCSIG$v) + (func $start (; 9 ;) (type $FUNCSIG$v) global.get $~lib/memory/HEAP_BASE i32.const 7 i32.add @@ -224,6 +219,6 @@ global.get $~lib/allocator/arena/startOffset global.set $~lib/allocator/arena/offset ) - (func $null (; 11 ;) (type $FUNCSIG$v) + (func $null (; 10 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/inlining.optimized.wat b/tests/compiler/inlining.optimized.wat index b443fc1c..7af4956e 100644 --- a/tests/compiler/inlining.optimized.wat +++ b/tests/compiler/inlining.optimized.wat @@ -4,7 +4,6 @@ (type $FUNCSIG$v (func)) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 8) "\01\00\00\00\16\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00.\00t\00s") @@ -103,7 +102,7 @@ global.set $~lib/allocator/arena/offset local.get $1 ) - (func $~lib/runtime/doAllocate (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/allocate (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) i32.const 1 i32.const 32 @@ -124,56 +123,52 @@ i32.const 8 i32.add ) - (func $~lib/runtime/assertUnregistered (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/register (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 i32.const 80 i32.le_u if i32.const 0 i32.const 48 - i32.const 313 - i32.const 2 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 i32.const 8 i32.sub + local.tee $2 i32.load i32.const -1520547049 i32.ne if i32.const 0 i32.const 48 - i32.const 314 - i32.const 2 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $~lib/runtime/doRegister (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/runtime/assertUnregistered - local.get $0 - i32.const 8 - i32.sub + local.get $2 local.get $1 i32.store local.get $0 ) - (func $inlining/test_ctor (; 8 ;) (type $FUNCSIG$v) + (func $inlining/test_ctor (; 7 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 16 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 2 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $0 i32.eqz if i32.const 8 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 3 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.set $0 end local.get $0 @@ -243,7 +238,7 @@ unreachable end ) - (func $start (; 9 ;) (type $FUNCSIG$v) + (func $start (; 8 ;) (type $FUNCSIG$v) call $inlining/test_funcs i32.const 80 global.set $~lib/allocator/arena/startOffset @@ -251,7 +246,7 @@ global.set $~lib/allocator/arena/offset call $inlining/test_ctor ) - (func $null (; 10 ;) (type $FUNCSIG$v) + (func $null (; 9 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/inlining.untouched.wat b/tests/compiler/inlining.untouched.wat index b31601b2..3037ca0b 100644 --- a/tests/compiler/inlining.untouched.wat +++ b/tests/compiler/inlining.untouched.wat @@ -4,7 +4,6 @@ (type $FUNCSIG$v (func)) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 8) "\01\00\00\00\16\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00.\00t\00s\00") @@ -13,7 +12,6 @@ (elem (i32.const 0) $null $inlining/func_fe~anonymous|0) (global $inlining/constantGlobal i32 (i32.const 1)) (global $~lib/argc (mut i32) (i32.const 0)) - (global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0)) (global $~lib/runtime/HEADER_SIZE i32 (i32.const 8)) (global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) @@ -383,7 +381,7 @@ end return ) - (func $~lib/runtime/doAllocate (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/allocate (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/runtime/ADJUSTOBLOCK @@ -399,7 +397,8 @@ global.get $~lib/runtime/HEADER_SIZE i32.add ) - (func $~lib/runtime/assertUnregistered (; 7 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/register (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 global.get $~lib/memory/HEAP_BASE i32.gt_u @@ -407,14 +406,16 @@ if i32.const 0 i32.const 48 - i32.const 313 - i32.const 2 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 global.get $~lib/runtime/HEADER_SIZE i32.sub + local.set $2 + local.get $2 i32.load global.get $~lib/runtime/HEADER_MAGIC i32.eq @@ -422,23 +423,17 @@ if i32.const 0 i32.const 48 - i32.const 314 - i32.const 2 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $~lib/runtime/doRegister (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/runtime/assertUnregistered - local.get $0 - global.get $~lib/runtime/HEADER_SIZE - i32.sub + local.get $2 local.get $1 i32.store local.get $0 ) - (func $inlining/test_ctor (; 9 ;) (type $FUNCSIG$v) + (func $inlining/test_ctor (; 8 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -459,12 +454,12 @@ i32.const 16 local.set $2 local.get $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $2 local.get $2 i32.const 2 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $3 i32.const 2 @@ -478,12 +473,12 @@ i32.const 8 local.set $4 local.get $4 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $4 local.get $4 i32.const 3 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $3 end @@ -565,7 +560,7 @@ unreachable end ) - (func $start:inlining (; 10 ;) (type $FUNCSIG$v) + (func $start:inlining (; 9 ;) (type $FUNCSIG$v) call $inlining/test i32.const 3 i32.eq @@ -591,9 +586,9 @@ global.set $~lib/allocator/arena/offset call $inlining/test_ctor ) - (func $start (; 11 ;) (type $FUNCSIG$v) + (func $start (; 10 ;) (type $FUNCSIG$v) call $start:inlining ) - (func $null (; 12 ;) (type $FUNCSIG$v) + (func $null (; 11 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/new-without-allocator.untouched.wat b/tests/compiler/new-without-allocator.untouched.wat index affb6fe1..5652461f 100644 --- a/tests/compiler/new-without-allocator.untouched.wat +++ b/tests/compiler/new-without-allocator.untouched.wat @@ -2,7 +2,6 @@ (type $FUNCSIG$i (func (result i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) @@ -10,7 +9,6 @@ (data (i32.const 8) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) - (global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0)) (global $~lib/runtime/HEADER_SIZE i32 (i32.const 8)) (global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) (global $~lib/ASC_NO_ASSERT i32 (i32.const 0)) @@ -33,7 +31,7 @@ (func $~lib/memory/memory.allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) unreachable ) - (func $~lib/runtime/doAllocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/runtime/ADJUSTOBLOCK @@ -49,7 +47,8 @@ global.get $~lib/runtime/HEADER_SIZE i32.add ) - (func $~lib/runtime/assertUnregistered (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/register (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 global.get $~lib/memory/HEAP_BASE i32.gt_u @@ -57,14 +56,16 @@ if i32.const 0 i32.const 16 - i32.const 313 - i32.const 2 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 global.get $~lib/runtime/HEADER_SIZE i32.sub + local.set $2 + local.get $2 i32.load global.get $~lib/runtime/HEADER_MAGIC i32.eq @@ -72,23 +73,17 @@ if i32.const 0 i32.const 16 - i32.const 314 - i32.const 2 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $~lib/runtime/doRegister (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/runtime/assertUnregistered - local.get $0 - global.get $~lib/runtime/HEADER_SIZE - i32.sub + local.get $2 local.get $1 i32.store local.get $0 ) - (func $new-without-allocator/A#constructor (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $new-without-allocator/A#constructor (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.eqz @@ -98,24 +93,24 @@ i32.const 0 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end local.get $0 ) - (func $new-without-allocator/test (; 7 ;) (type $FUNCSIG$i) (result i32) + (func $new-without-allocator/test (; 6 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 0 call $new-without-allocator/A#constructor local.set $0 i32.const 3 ) - (func $null (; 8 ;) (type $FUNCSIG$v) + (func $null (; 7 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/nonNullAssertion.optimized.wat b/tests/compiler/nonNullAssertion.optimized.wat index ef911b75..9184c246 100644 --- a/tests/compiler/nonNullAssertion.optimized.wat +++ b/tests/compiler/nonNullAssertion.optimized.wat @@ -58,7 +58,7 @@ if i32.const 0 i32.const 16 - i32.const 97 + i32.const 95 i32.const 45 call $~lib/env/abort unreachable @@ -72,7 +72,7 @@ if i32.const 0 i32.const 16 - i32.const 100 + i32.const 98 i32.const 61 call $~lib/env/abort unreachable @@ -100,7 +100,7 @@ if i32.const 0 i32.const 16 - i32.const 100 + i32.const 98 i32.const 61 call $~lib/env/abort unreachable diff --git a/tests/compiler/nonNullAssertion.untouched.wat b/tests/compiler/nonNullAssertion.untouched.wat index 9bf07bb8..68ba24f6 100644 --- a/tests/compiler/nonNullAssertion.untouched.wat +++ b/tests/compiler/nonNullAssertion.untouched.wat @@ -9,7 +9,6 @@ (data (i32.const 8) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) - (global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0)) (global $~lib/runtime/HEADER_SIZE i32 (i32.const 8)) (global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) (global $~lib/argc (mut i32) (i32.const 0)) @@ -60,7 +59,16 @@ unreachable end ) - (func $~lib/array/Array#__get (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) + (func $~lib/array/Array#__get (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -68,7 +76,7 @@ if i32.const 0 i32.const 16 - i32.const 97 + i32.const 95 i32.const 45 call $~lib/env/abort unreachable @@ -82,20 +90,16 @@ if i32.const 0 i32.const 16 - i32.const 100 + i32.const 98 i32.const 61 call $~lib/env/abort unreachable end local.get $0 - i32.load offset=4 local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load + call $~lib/array/Array#__unchecked_get ) - (func $nonNullAssertion/testArr (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $nonNullAssertion/testArr (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 local.tee $1 @@ -107,7 +111,16 @@ i32.const 0 call $~lib/array/Array#__get ) - (func $~lib/array/Array#__get (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) + (func $~lib/array/Array#__get (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -117,20 +130,16 @@ if i32.const 0 i32.const 16 - i32.const 100 + i32.const 98 i32.const 61 call $~lib/env/abort unreachable end local.get $0 - i32.load offset=4 local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load + call $~lib/array/Array#__unchecked_get ) - (func $nonNullAssertion/testElem (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $nonNullAssertion/testElem (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 0 @@ -142,7 +151,7 @@ unreachable end ) - (func $nonNullAssertion/testAll (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $nonNullAssertion/testAll (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 local.tee $1 @@ -167,7 +176,7 @@ unreachable end ) - (func $nonNullAssertion/testAll2 (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $nonNullAssertion/testAll2 (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 local.tee $1 @@ -192,13 +201,13 @@ unreachable end ) - (func $nonNullAssertion/testFn (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $nonNullAssertion/testFn (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 0 global.set $~lib/argc local.get $0 call_indirect (type $FUNCSIG$i) ) - (func $nonNullAssertion/testFn2 (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $nonNullAssertion/testFn2 (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -214,7 +223,7 @@ local.get $2 call_indirect (type $FUNCSIG$i) ) - (func $nonNullAssertion/testRet (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $nonNullAssertion/testRet (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) block (result i32) i32.const 0 @@ -229,14 +238,14 @@ unreachable end ) - (func $nonNullAssertion/testObjFn (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $nonNullAssertion/testObjFn (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 0 global.set $~lib/argc local.get $0 i32.load offset=4 call_indirect (type $FUNCSIG$i) ) - (func $nonNullAssertion/testObjRet (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $nonNullAssertion/testObjRet (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) block (result i32) i32.const 0 @@ -252,6 +261,6 @@ unreachable end ) - (func $null (; 15 ;) (type $FUNCSIG$v) + (func $null (; 17 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/number.optimized.wat b/tests/compiler/number.optimized.wat index c6e1868b..339d2c67 100644 --- a/tests/compiler/number.optimized.wat +++ b/tests/compiler/number.optimized.wat @@ -2,9 +2,9 @@ (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$v (func)) (type $FUNCSIG$iijijij (func (param i32 i64 i32 i64 i32 i64) (result i32))) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) @@ -164,7 +164,7 @@ global.set $~lib/allocator/arena/offset local.get $1 ) - (func $~lib/runtime/doAllocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) i32.const 1 i32.const 32 @@ -295,44 +295,40 @@ i32.store16 end ) - (func $~lib/runtime/assertUnregistered (; 5 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/register (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) local.get $0 i32.const 1804 i32.le_u if i32.const 0 i32.const 464 - i32.const 313 - i32.const 2 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 i32.const 8 i32.sub + local.tee $1 i32.load i32.const -1520547049 i32.ne if i32.const 0 i32.const 464 - i32.const 314 - i32.const 2 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $~lib/runtime/doRegister (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/runtime/assertUnregistered - local.get $0 - i32.const 8 - i32.sub + local.get $1 i32.const 1 i32.store local.get $0 ) - (func $~lib/util/number/itoa32 (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -359,7 +355,7 @@ local.tee $3 i32.const 1 i32.shl - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.tee $2 local.get $0 local.get $3 @@ -371,9 +367,9 @@ i32.store16 end local.get $2 - call $~lib/runtime/doRegister + call $~lib/runtime/register ) - (func $~lib/util/string/compareImpl (; 8 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/compareImpl (; 7 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) loop $continue|0 local.get $2 @@ -406,7 +402,7 @@ end local.get $3 ) - (func $~lib/string/String.__eq (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -452,7 +448,7 @@ call $~lib/util/string/compareImpl i32.eqz ) - (func $~lib/util/number/genDigits (; 10 ;) (type $FUNCSIG$iijijij) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (result i32) + (func $~lib/util/number/genDigits (; 9 ;) (type $FUNCSIG$iijijij) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (result i32) (local $6 i32) (local $7 i32) (local $8 i32) @@ -871,7 +867,7 @@ i32.store16 local.get $2 ) - (func $~lib/util/memory/memcpy (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (; 10 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1768,7 +1764,7 @@ i32.store8 end ) - (func $~lib/memory/memory.copy (; 12 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 @@ -1962,7 +1958,7 @@ end end ) - (func $~lib/util/number/prettify (; 13 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 12 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2224,7 +2220,7 @@ end end ) - (func $~lib/util/number/dtoa_core (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/dtoa_core (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i64) (local $2 i64) (local $3 i32) @@ -2232,10 +2228,9 @@ (local $5 i64) (local $6 i64) (local $7 i64) - (local $8 i32) - (local $9 f64) - (local $10 i32) - (local $11 i64) + (local $8 f64) + (local $9 i32) + (local $10 i64) i64.const -9223372036854774784 global.set $~lib/util/number/_frc_plus i64.const 9223372036854775296 @@ -2245,19 +2240,18 @@ i32.const 348 i32.const -61 global.get $~lib/util/number/_exp - local.tee $8 i32.sub f64.convert_i32_s f64.const 0.30102999566398114 f64.mul f64.const 347 f64.add - local.tee $9 + local.tee $8 i32.trunc_f64_s local.tee $3 local.get $3 f64.convert_i32_s - local.get $9 + local.get $8 f64.ne i32.add i32.const 3 @@ -2267,12 +2261,12 @@ local.tee $3 i32.const 3 i32.shl - local.tee $10 + local.tee $9 i32.sub global.set $~lib/util/number/_K i32.const 1348 i32.load - local.get $10 + local.get $9 i32.add i64.load global.set $~lib/util/number/_frc_pow @@ -2313,7 +2307,7 @@ i64.shr_u i64.add i64.add - local.set $11 + local.set $10 local.get $7 global.get $~lib/util/number/_frc_plus local.tee $4 @@ -2358,7 +2352,7 @@ local.set $2 local.get $0 local.get $0 - local.get $11 + local.get $10 global.get $~lib/util/number/_exp_pow local.tee $3 i32.const 2 @@ -2367,8 +2361,8 @@ i64.const 1 i64.sub local.tee $6 + global.get $~lib/util/number/_exp local.get $3 - local.get $8 i32.add i32.const -64 i32.sub @@ -2418,7 +2412,7 @@ global.get $~lib/util/number/_K call $~lib/util/number/prettify ) - (func $~lib/string/String#substring (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#substring (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2427,7 +2421,7 @@ if i32.const 0 i32.const 1648 - i32.const 187 + i32.const 189 i32.const 4 call $~lib/env/abort unreachable @@ -2505,7 +2499,7 @@ return end local.get $3 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.tee $2 local.get $0 local.get $4 @@ -2513,7 +2507,34 @@ local.get $3 call $~lib/memory/memory.copy local.get $2 - call $~lib/runtime/doRegister + call $~lib/runtime/register + ) + (func $~lib/runtime/discard (; 15 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + i32.const 1804 + i32.le_u + if + i32.const 0 + i32.const 464 + i32.const 185 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const -1520547049 + i32.ne + if + i32.const 0 + i32.const 464 + i32.const 187 + i32.const 4 + call $~lib/env/abort + unreachable + end ) (func $start:number (; 16 ;) (type $FUNCSIG$v) (local $0 i32) @@ -2536,7 +2557,7 @@ unreachable end i32.const 56 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.tee $1 call $~lib/util/number/dtoa_core local.set $0 @@ -2545,7 +2566,7 @@ call $~lib/string/String#substring local.set $0 local.get $1 - call $~lib/runtime/assertUnregistered + call $~lib/runtime/discard local.get $0 i32.const 1696 call $~lib/string/String.__eq @@ -2600,8 +2621,9 @@ global.get $number/a i32.const 1 i32.add + local.tee $0 global.set $number/a - global.get $number/a + local.get $0 call $~lib/util/number/itoa32 i32.const 1760 call $~lib/string/String.__eq @@ -2617,8 +2639,9 @@ global.get $number/a i32.const 1 i32.sub + local.tee $0 global.set $number/a - global.get $number/a + local.get $0 call $~lib/util/number/itoa32 i32.const 504 call $~lib/string/String.__eq diff --git a/tests/compiler/number.untouched.wat b/tests/compiler/number.untouched.wat index 63be6f32..327dd38b 100644 --- a/tests/compiler/number.untouched.wat +++ b/tests/compiler/number.untouched.wat @@ -2,13 +2,14 @@ (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$iiiiii (func (param i32 i32 i32 i32 i32) (result i32))) (type $FUNCSIG$id (func (param f64) (result i32))) (type $FUNCSIG$iid (func (param i32 f64) (result i32))) + (type $FUNCSIG$jii (func (param i32 i32) (result i64))) (type $FUNCSIG$iijijiji (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$if (func (param f32) (result i32))) (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) @@ -41,7 +42,6 @@ (table $0 1 funcref) (elem (i32.const 0) $null) (global $number/a (mut i32) (i32.const 1)) - (global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0)) (global $~lib/runtime/HEADER_SIZE i32 (i32.const 8)) (global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) @@ -232,7 +232,7 @@ end return ) - (func $~lib/runtime/doAllocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/allocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/runtime/ADJUSTOBLOCK @@ -391,7 +391,8 @@ i32.store16 end ) - (func $~lib/runtime/assertUnregistered (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/register (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 global.get $~lib/memory/HEAP_BASE i32.gt_u @@ -399,14 +400,16 @@ if i32.const 0 i32.const 464 - i32.const 313 - i32.const 2 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 global.get $~lib/runtime/HEADER_SIZE i32.sub + local.set $2 + local.get $2 i32.load global.get $~lib/runtime/HEADER_MAGIC i32.eq @@ -414,23 +417,17 @@ if i32.const 0 i32.const 464 - i32.const 314 - i32.const 2 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $~lib/runtime/doRegister (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/runtime/assertUnregistered - local.get $0 - global.get $~lib/runtime/HEADER_SIZE - i32.sub + local.get $2 local.get $1 i32.store local.get $0 ) - (func $~lib/util/number/itoa32 (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -465,7 +462,7 @@ i32.shl local.set $3 local.get $3 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $4 block $~lib/util/number/utoa32_core|inlined.0 @@ -491,19 +488,19 @@ local.set $3 local.get $3 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end ) - (func $~lib/util/number/itoa (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/util/number/itoa32 return ) - (func $~lib/number/I32#toString (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/number/I32#toString (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/util/number/itoa ) - (func $~lib/string/String#get:length (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 global.get $~lib/runtime/HEADER_SIZE i32.sub @@ -511,7 +508,7 @@ i32.const 1 i32.shr_u ) - (func $~lib/util/string/compareImpl (; 12 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (func $~lib/util/string/compareImpl (; 11 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -564,7 +561,7 @@ end local.get $5 ) - (func $~lib/string/String.__eq (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -608,19 +605,37 @@ call $~lib/util/string/compareImpl i32.eqz ) - (func $~lib/builtins/isFinite (; 14 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/builtins/isFinite (; 13 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 local.get $0 f64.sub f64.const 0 f64.eq ) - (func $~lib/builtins/isNaN (; 15 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/builtins/isNaN (; 14 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 local.get $0 f64.ne ) - (func $~lib/util/number/genDigits (; 16 ;) (type $FUNCSIG$iijijiji) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 15 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + ) + (func $~lib/array/Array#__unchecked_get (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + ) + (func $~lib/util/number/genDigits (; 17 ;) (type $FUNCSIG$iijijiji) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) (local $7 i32) (local $8 i64) (local $9 i64) @@ -1191,7 +1206,7 @@ end local.get $15 ) - (func $~lib/util/memory/memcpy (; 17 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (; 18 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2392,7 +2407,7 @@ i32.store8 end ) - (func $~lib/memory/memory.copy (; 18 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 19 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2623,7 +2638,7 @@ end end ) - (func $~lib/util/number/prettify (; 19 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 20 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2956,7 +2971,7 @@ unreachable unreachable ) - (func $~lib/util/number/dtoa_core (; 20 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/util/number/dtoa_core (; 21 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 i32) (local $3 f64) (local $4 i32) @@ -3126,20 +3141,12 @@ i32.sub global.set $~lib/util/number/_K i32.const 1344 - i32.load offset=4 local.get $13 - i32.const 3 - i32.shl - i32.add - i64.load + call $~lib/array/Array#__unchecked_get global.set $~lib/util/number/_frc_pow i32.const 1552 - i32.load offset=4 local.get $13 - i32.const 1 - i32.shl - i32.add - i32.load16_s + call $~lib/array/Array#__unchecked_get global.set $~lib/util/number/_exp_pow end local.get $9 @@ -3402,7 +3409,7 @@ local.get $2 i32.add ) - (func $~lib/string/String#substring (; 21 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substring (; 22 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3418,7 +3425,7 @@ if i32.const 0 i32.const 1648 - i32.const 187 + i32.const 189 i32.const 4 call $~lib/env/abort unreachable @@ -3511,7 +3518,7 @@ local.get $3 local.set $4 local.get $4 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $10 local.get $10 @@ -3525,23 +3532,49 @@ local.set $4 local.get $4 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end ) - (func $~lib/memory/memory.free (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/memory/memory.free (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 local.set $1 ) - (func $~lib/runtime/doDiscard (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/discard (; 24 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) local.get $0 - call $~lib/runtime/assertUnregistered + global.get $~lib/memory/HEAP_BASE + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 185 + i32.const 4 + call $~lib/env/abort + unreachable + end local.get $0 global.get $~lib/runtime/HEADER_SIZE i32.sub + local.set $1 + local.get $1 + i32.load + global.get $~lib/runtime/HEADER_MAGIC + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 187 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 call $~lib/memory/memory.free ) - (func $~lib/util/number/dtoa (; 24 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/util/number/dtoa (; 25 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3577,7 +3610,7 @@ i32.shl local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $2 local.get $2 @@ -3593,15 +3626,15 @@ local.get $2 local.set $1 local.get $1 - call $~lib/runtime/doDiscard + call $~lib/runtime/discard end local.get $4 ) - (func $~lib/number/F64#toString (; 25 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/number/F64#toString (; 26 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 call $~lib/util/number/dtoa ) - (func $~lib/number/Bool#toString (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/number/Bool#toString (; 27 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 0 i32.ne @@ -3611,12 +3644,12 @@ i32.const 1792 end ) - (func $~lib/builtins/isNaN (; 27 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + (func $~lib/builtins/isNaN (; 28 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) local.get $0 local.get $0 f32.ne ) - (func $~lib/number/F32.isSafeInteger (; 28 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + (func $~lib/number/F32.isSafeInteger (; 29 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) (local $1 i32) local.get $0 f32.abs @@ -3632,14 +3665,14 @@ local.get $1 end ) - (func $~lib/builtins/isFinite (; 29 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + (func $~lib/builtins/isFinite (; 30 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) local.get $0 local.get $0 f32.sub f32.const 0 f32.eq ) - (func $~lib/number/F32.isInteger (; 30 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + (func $~lib/number/F32.isInteger (; 31 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) (local $1 i32) local.get $0 call $~lib/builtins/isFinite @@ -3653,7 +3686,7 @@ local.get $1 end ) - (func $~lib/number/F64.isSafeInteger (; 31 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/number/F64.isSafeInteger (; 32 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) (local $1 i32) local.get $0 f64.abs @@ -3669,7 +3702,7 @@ local.get $1 end ) - (func $~lib/number/F64.isInteger (; 32 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/number/F64.isInteger (; 33 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) (local $1 i32) local.get $0 call $~lib/builtins/isFinite @@ -3683,7 +3716,7 @@ local.get $1 end ) - (func $start:number (; 33 ;) (type $FUNCSIG$v) + (func $start:number (; 34 ;) (type $FUNCSIG$v) (local $0 i32) global.get $~lib/memory/HEAP_BASE i32.const 7 @@ -3764,8 +3797,9 @@ global.get $number/a i32.const 1 i32.add + local.tee $0 global.set $number/a - global.get $number/a + local.get $0 end call $~lib/number/I32#toString i32.const 1760 @@ -3783,8 +3817,9 @@ global.get $number/a i32.const 1 i32.sub + local.tee $0 global.set $number/a - global.get $number/a + local.get $0 end call $~lib/number/I32#toString i32.const 504 @@ -4417,9 +4452,9 @@ unreachable end ) - (func $start (; 34 ;) (type $FUNCSIG$v) + (func $start (; 35 ;) (type $FUNCSIG$v) call $start:number ) - (func $null (; 35 ;) (type $FUNCSIG$v) + (func $null (; 36 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/object-literal.optimized.wat b/tests/compiler/object-literal.optimized.wat index 4cfb97f2..ff4f0679 100644 --- a/tests/compiler/object-literal.optimized.wat +++ b/tests/compiler/object-literal.optimized.wat @@ -1,8 +1,8 @@ (module (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) (memory $0 1) @@ -78,7 +78,7 @@ global.set $~lib/allocator/arena/offset local.get $1 ) - (func $~lib/runtime/doAllocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) i32.const 1 i32.const 32 @@ -99,44 +99,40 @@ i32.const 8 i32.add ) - (func $~lib/runtime/assertUnregistered (; 3 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/register (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 i32.const 124 i32.le_u if i32.const 0 i32.const 48 - i32.const 313 - i32.const 2 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 i32.const 8 i32.sub + local.tee $2 i32.load i32.const -1520547049 i32.ne if i32.const 0 i32.const 48 - i32.const 314 - i32.const 2 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $~lib/runtime/doRegister (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/runtime/assertUnregistered - local.get $0 - i32.const 8 - i32.sub + local.get $2 local.get $1 i32.store local.get $0 ) - (func $~lib/util/string/compareImpl (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/compareImpl (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) i32.const 16 @@ -172,7 +168,7 @@ end local.get $3 ) - (func $~lib/string/String.__eq (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String.__eq (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 16 @@ -215,7 +211,7 @@ call $~lib/util/string/compareImpl i32.eqz ) - (func $object-literal/bar (; 7 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $object-literal/bar (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.load i32.const 1 @@ -241,16 +237,16 @@ unreachable end ) - (func $start:object-literal (; 8 ;) (type $FUNCSIG$v) + (func $start:object-literal (; 7 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 128 global.set $~lib/allocator/arena/startOffset global.get $~lib/allocator/arena/startOffset global.set $~lib/allocator/arena/offset i32.const 8 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 2 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $0 i32.const 1 i32.store @@ -260,9 +256,9 @@ local.get $0 call $object-literal/bar i32.const 4 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 3 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $0 i32.const 2 i32.store @@ -279,9 +275,9 @@ unreachable end i32.const 4 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 3 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $0 i32.const 3 i32.store @@ -298,10 +294,10 @@ unreachable end ) - (func $start (; 9 ;) (type $FUNCSIG$v) + (func $start (; 8 ;) (type $FUNCSIG$v) call $start:object-literal ) - (func $null (; 10 ;) (type $FUNCSIG$v) + (func $null (; 9 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/object-literal.untouched.wat b/tests/compiler/object-literal.untouched.wat index 04b5ce34..6f455277 100644 --- a/tests/compiler/object-literal.untouched.wat +++ b/tests/compiler/object-literal.untouched.wat @@ -1,8 +1,8 @@ (module (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$iiiiii (func (param i32 i32 i32 i32 i32) (result i32))) (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) @@ -12,7 +12,6 @@ (data (i32.const 80) "\01\00\00\00\"\00\00\00o\00b\00j\00e\00c\00t\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) - (global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0)) (global $~lib/runtime/HEADER_SIZE i32 (i32.const 8)) (global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) @@ -119,7 +118,7 @@ end return ) - (func $~lib/runtime/doAllocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/runtime/ADJUSTOBLOCK @@ -135,7 +134,8 @@ global.get $~lib/runtime/HEADER_SIZE i32.add ) - (func $~lib/runtime/assertUnregistered (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/register (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 global.get $~lib/memory/HEAP_BASE i32.gt_u @@ -143,14 +143,16 @@ if i32.const 0 i32.const 48 - i32.const 313 - i32.const 2 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 global.get $~lib/runtime/HEADER_SIZE i32.sub + local.set $2 + local.get $2 i32.load global.get $~lib/runtime/HEADER_MAGIC i32.eq @@ -158,23 +160,17 @@ if i32.const 0 i32.const 48 - i32.const 314 - i32.const 2 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $~lib/runtime/doRegister (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/runtime/assertUnregistered - local.get $0 - global.get $~lib/runtime/HEADER_SIZE - i32.sub + local.get $2 local.get $1 i32.store local.get $0 ) - (func $~lib/string/String#get:length (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 global.get $~lib/runtime/HEADER_SIZE i32.sub @@ -182,7 +178,7 @@ i32.const 1 i32.shr_u ) - (func $~lib/util/string/compareImpl (; 7 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (func $~lib/util/string/compareImpl (; 6 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -235,7 +231,7 @@ end local.get $5 ) - (func $~lib/string/String.__eq (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -279,7 +275,7 @@ call $~lib/util/string/compareImpl i32.eqz ) - (func $object-literal/bar (; 9 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $object-literal/bar (; 8 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.load i32.const 1 @@ -307,7 +303,7 @@ unreachable end ) - (func $object-literal/bar2 (; 10 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $object-literal/bar2 (; 9 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.load i32.const 2 @@ -322,7 +318,7 @@ unreachable end ) - (func $object-literal/Foo2#test (; 11 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $object-literal/Foo2#test (; 10 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.load i32.const 3 @@ -337,7 +333,7 @@ unreachable end ) - (func $start:object-literal (; 12 ;) (type $FUNCSIG$v) + (func $start:object-literal (; 11 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -358,12 +354,12 @@ i32.const 8 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 2 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 local.get $0 @@ -381,12 +377,12 @@ i32.const 4 local.set $2 local.get $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $2 local.get $2 i32.const 3 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $1 local.get $1 @@ -401,12 +397,12 @@ i32.const 4 local.set $3 local.get $3 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $3 local.get $3 i32.const 3 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $2 local.get $2 @@ -416,9 +412,9 @@ end call $object-literal/Foo2#test ) - (func $start (; 13 ;) (type $FUNCSIG$v) + (func $start (; 12 ;) (type $FUNCSIG$v) call $start:object-literal ) - (func $null (; 14 ;) (type $FUNCSIG$v) + (func $null (; 13 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/optional-typeparameters.optimized.wat b/tests/compiler/optional-typeparameters.optimized.wat index 14c0d23d..3b464167 100644 --- a/tests/compiler/optional-typeparameters.optimized.wat +++ b/tests/compiler/optional-typeparameters.optimized.wat @@ -1,7 +1,6 @@ (module (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$v (func)) (type $FUNCSIG$i (func (result i32))) @@ -79,7 +78,7 @@ global.set $~lib/allocator/arena/offset local.get $1 ) - (func $~lib/runtime/doAllocate (; 2 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/runtime/allocate (; 2 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 8 call $~lib/memory/memory.allocate @@ -93,58 +92,54 @@ i32.const 8 i32.add ) - (func $~lib/runtime/assertUnregistered (; 3 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/register (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 i32.const 48 i32.le_u if i32.const 0 i32.const 16 - i32.const 313 - i32.const 2 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 i32.const 8 i32.sub + local.tee $2 i32.load i32.const -1520547049 i32.ne if i32.const 0 i32.const 16 - i32.const 314 - i32.const 2 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $~lib/runtime/doRegister (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/runtime/assertUnregistered - local.get $0 - i32.const 8 - i32.sub + local.get $2 local.get $1 i32.store local.get $0 ) - (func $start (; 5 ;) (type $FUNCSIG$v) + (func $start (; 4 ;) (type $FUNCSIG$v) i32.const 48 global.set $~lib/allocator/arena/startOffset global.get $~lib/allocator/arena/startOffset global.set $~lib/allocator/arena/offset - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register global.set $optional-typeparameters/tConcrete - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 3 - call $~lib/runtime/doRegister + call $~lib/runtime/register global.set $optional-typeparameters/tDerived ) - (func $null (; 6 ;) (type $FUNCSIG$v) + (func $null (; 5 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/optional-typeparameters.untouched.wat b/tests/compiler/optional-typeparameters.untouched.wat index 7fb60b50..0ce99141 100644 --- a/tests/compiler/optional-typeparameters.untouched.wat +++ b/tests/compiler/optional-typeparameters.untouched.wat @@ -1,7 +1,6 @@ (module (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$didd (func (param i32 f64 f64) (result f64))) @@ -11,7 +10,6 @@ (data (i32.const 8) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) - (global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0)) (global $~lib/runtime/HEADER_SIZE i32 (i32.const 8)) (global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) @@ -126,7 +124,7 @@ end return ) - (func $~lib/runtime/doAllocate (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/allocate (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/runtime/ADJUSTOBLOCK @@ -142,7 +140,8 @@ global.get $~lib/runtime/HEADER_SIZE i32.add ) - (func $~lib/runtime/assertUnregistered (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/register (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 global.get $~lib/memory/HEAP_BASE i32.gt_u @@ -150,14 +149,16 @@ if i32.const 0 i32.const 16 - i32.const 313 - i32.const 2 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 global.get $~lib/runtime/HEADER_SIZE i32.sub + local.set $2 + local.get $2 i32.load global.get $~lib/runtime/HEADER_MAGIC i32.eq @@ -165,23 +166,17 @@ if i32.const 0 i32.const 16 - i32.const 314 - i32.const 2 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $~lib/runtime/doRegister (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/runtime/assertUnregistered - local.get $0 - global.get $~lib/runtime/HEADER_SIZE - i32.sub + local.get $2 local.get $1 i32.store local.get $0 ) - (func $optional-typeparameters/TestConcrete#constructor (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $optional-typeparameters/TestConcrete#constructor (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.eqz @@ -191,23 +186,23 @@ i32.const 0 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end local.get $0 ) - (func $optional-typeparameters/TestConcrete#test (; 9 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $optional-typeparameters/TestConcrete#test (; 8 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 local.get $2 i32.add ) - (func $optional-typeparameters/TestDerived#constructor (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $optional-typeparameters/TestDerived#constructor (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.eqz @@ -217,23 +212,23 @@ i32.const 0 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 3 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end local.get $0 ) - (func $optional-typeparameters/TestDerived#test (; 11 ;) (type $FUNCSIG$didd) (param $0 i32) (param $1 f64) (param $2 f64) (result f64) + (func $optional-typeparameters/TestDerived#test (; 10 ;) (type $FUNCSIG$didd) (param $0 i32) (param $1 f64) (param $2 f64) (result f64) local.get $1 local.get $2 f64.add ) - (func $start:optional-typeparameters (; 12 ;) (type $FUNCSIG$v) + (func $start:optional-typeparameters (; 11 ;) (type $FUNCSIG$v) i32.const 1 call $optional-typeparameters/testConcrete drop @@ -267,9 +262,9 @@ call $optional-typeparameters/TestDerived#test drop ) - (func $start (; 13 ;) (type $FUNCSIG$v) + (func $start (; 12 ;) (type $FUNCSIG$v) call $start:optional-typeparameters ) - (func $null (; 14 ;) (type $FUNCSIG$v) + (func $null (; 13 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/array-access.optimized.wat b/tests/compiler/std/array-access.optimized.wat index 2b2dfbe0..31ebf409 100644 --- a/tests/compiler/std/array-access.optimized.wat +++ b/tests/compiler/std/array-access.optimized.wat @@ -27,7 +27,7 @@ if i32.const 0 i32.const 16 - i32.const 97 + i32.const 95 i32.const 45 call $~lib/env/abort unreachable @@ -41,7 +41,7 @@ if i32.const 0 i32.const 16 - i32.const 100 + i32.const 98 i32.const 61 call $~lib/env/abort unreachable @@ -64,7 +64,7 @@ if i32.const 0 i32.const 16 - i32.const 100 + i32.const 98 i32.const 61 call $~lib/env/abort unreachable @@ -142,7 +142,7 @@ if i32.const 0 i32.const 64 - i32.const 162 + i32.const 164 i32.const 4 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/array-access.untouched.wat b/tests/compiler/std/array-access.untouched.wat index b70d96aa..b9f2a087 100644 --- a/tests/compiler/std/array-access.untouched.wat +++ b/tests/compiler/std/array-access.untouched.wat @@ -13,7 +13,6 @@ (data (i32.const 96) "\01\00\00\00\08\00\00\00n\00u\00l\00l\00") (table $0 1 funcref) (elem (i32.const 0) $null) - (global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0)) (global $~lib/runtime/HEADER_SIZE i32 (i32.const 8)) (global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) (global $~lib/memory/HEAP_BASE i32 (i32.const 112)) @@ -24,7 +23,16 @@ (export "stringArrayMethodCall" (func $std/array-access/stringArrayMethodCall)) (export "stringArrayArrayPropertyAccess" (func $std/array-access/stringArrayArrayPropertyAccess)) (export "stringArrayArrayMethodCall" (func $std/array-access/stringArrayArrayMethodCall)) - (func $~lib/array/Array>#__get (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#__unchecked_get (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) + (func $~lib/array/Array>#__get (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -32,7 +40,7 @@ if i32.const 0 i32.const 16 - i32.const 97 + i32.const 95 i32.const 45 call $~lib/env/abort unreachable @@ -46,11 +54,16 @@ if i32.const 0 i32.const 16 - i32.const 100 + i32.const 98 i32.const 61 call $~lib/env/abort unreachable end + local.get $0 + local.get $1 + call $~lib/array/Array>#__unchecked_get + ) + (func $~lib/array/Array#__unchecked_get (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -59,7 +72,7 @@ i32.add i32.load ) - (func $~lib/array/Array#__get (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -69,27 +82,32 @@ if i32.const 0 i32.const 16 - i32.const 100 + i32.const 98 i32.const 61 call $~lib/env/abort unreachable end local.get $0 - i32.load offset=4 local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load + call $~lib/array/Array#__unchecked_get ) - (func $std/array-access/i32ArrayArrayElementAccess (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array-access/i32ArrayArrayElementAccess (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 0 call $~lib/array/Array>#__get i32.const 1 call $~lib/array/Array#__get ) - (func $~lib/array/Array#__get (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) + (func $~lib/array/Array#__get (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -97,7 +115,7 @@ if i32.const 0 i32.const 16 - i32.const 97 + i32.const 95 i32.const 45 call $~lib/env/abort unreachable @@ -111,20 +129,16 @@ if i32.const 0 i32.const 16 - i32.const 100 + i32.const 98 i32.const 61 call $~lib/env/abort unreachable end local.get $0 - i32.load offset=4 local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load + call $~lib/array/Array#__unchecked_get ) - (func $~lib/string/String#get:length (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 global.get $~lib/runtime/HEADER_SIZE i32.sub @@ -132,13 +146,13 @@ i32.const 1 i32.shr_u ) - (func $std/array-access/stringArrayPropertyAccess (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array-access/stringArrayPropertyAccess (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 0 call $~lib/array/Array#__get call $~lib/string/String#get:length ) - (func $~lib/util/string/compareImpl (; 7 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (func $~lib/util/string/compareImpl (; 10 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -191,7 +205,7 @@ end local.get $5 ) - (func $~lib/string/String#startsWith (; 8 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#startsWith (; 11 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -205,7 +219,7 @@ if i32.const 0 i32.const 64 - i32.const 162 + i32.const 164 i32.const 4 call $~lib/env/abort unreachable @@ -258,7 +272,7 @@ call $~lib/util/string/compareImpl i32.eqz ) - (func $std/array-access/stringArrayMethodCall (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array-access/stringArrayMethodCall (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 0 call $~lib/array/Array#__get @@ -266,7 +280,16 @@ i32.const 0 call $~lib/string/String#startsWith ) - (func $~lib/array/Array>#__get (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#__unchecked_get (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) + (func $~lib/array/Array>#__get (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -274,7 +297,7 @@ if i32.const 0 i32.const 16 - i32.const 97 + i32.const 95 i32.const 45 call $~lib/env/abort unreachable @@ -288,20 +311,16 @@ if i32.const 0 i32.const 16 - i32.const 100 + i32.const 98 i32.const 61 call $~lib/env/abort unreachable end local.get $0 - i32.load offset=4 local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load + call $~lib/array/Array>#__unchecked_get ) - (func $std/array-access/stringArrayArrayPropertyAccess (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array-access/stringArrayArrayPropertyAccess (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 0 call $~lib/array/Array>#__get @@ -309,7 +328,7 @@ call $~lib/array/Array#__get call $~lib/string/String#get:length ) - (func $std/array-access/stringArrayArrayMethodCall (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array-access/stringArrayArrayMethodCall (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 0 call $~lib/array/Array>#__get @@ -319,6 +338,6 @@ i32.const 0 call $~lib/string/String#startsWith ) - (func $null (; 13 ;) (type $FUNCSIG$v) + (func $null (; 17 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/array-literal.optimized.wat b/tests/compiler/std/array-literal.optimized.wat index c5076e08..a38833e0 100644 --- a/tests/compiler/std/array-literal.optimized.wat +++ b/tests/compiler/std/array-literal.optimized.wat @@ -2,23 +2,30 @@ (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$v (func)) (type $FUNCSIG$i (func (result i32))) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\01\00\00\00\03\00\00\00\00\01\02") - (data (i32.const 24) "\02\00\00\00\10\00\00\00\10\00\00\00\10\00\00\00\03\00\00\00\03") - (data (i32.const 48) "\03\00\00\00(\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s") - (data (i32.const 96) "\03\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 136) "\01\00\00\00\0c\00\00\00\00\00\00\00\01\00\00\00\02") - (data (i32.const 160) "\04\00\00\00\10\00\00\00\90\00\00\00\90\00\00\00\0c\00\00\00\03") - (data (i32.const 184) "\01") - (data (i32.const 192) "\04\00\00\00\10\00\00\00\c0\00\00\00\c0") - (data (i32.const 216) "\03\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") + (data (i32.const 8) "\01\00\00\00\03") + (data (i32.const 25) "\01\02") + (data (i32.const 32) "\02\00\00\00\10") + (data (i32.const 48) "\18\00\00\00\18\00\00\00\03\00\00\00\03") + (data (i32.const 64) "\03\00\00\00(") + (data (i32.const 80) "s\00t\00d\00/\00a\00r\00r\00a\00y\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s") + (data (i32.const 120) "\03\00\00\00\1a") + (data (i32.const 136) "~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 168) "\01\00\00\00\0c") + (data (i32.const 188) "\01\00\00\00\02") + (data (i32.const 200) "\04\00\00\00\10") + (data (i32.const 216) "\b8\00\00\00\b8\00\00\00\0c\00\00\00\03") + (data (i32.const 232) "\01") + (data (i32.const 248) "\04\00\00\00\10") + (data (i32.const 264) "\f8\00\00\00\f8") + (data (i32.const 280) "\03\00\00\00\1e") + (data (i32.const 296) "~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") (table $0 1 funcref) (elem (i32.const 0) $null) - (global $std/array-literal/emptyArrayI32 (mut i32) (i32.const 200)) + (global $std/array-literal/emptyArrayI32 (mut i32) (i32.const 264)) (global $std/array-literal/i (mut i32) (i32.const 0)) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) @@ -26,8 +33,10 @@ (global $std/array-literal/dynamicArrayI32 (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayRef (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayRefWithCtor (mut i32) (i32.const 0)) + (global $~lib/capabilities i32 (i32.const 2)) (export "memory" (memory $0)) (export "table" (table $0)) + (export ".capabilities" (global $~lib/capabilities)) (start $start) (func $~lib/array/Array#__get (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 @@ -36,15 +45,15 @@ i32.ge_u if i32.const 0 - i32.const 104 - i32.const 100 + i32.const 136 + i32.const 98 i32.const 61 call $~lib/env/abort unreachable end - local.get $1 local.get $0 i32.load offset=4 + local.get $1 i32.add i32.load8_s ) @@ -57,8 +66,8 @@ i32.ge_u if i32.const 0 - i32.const 104 - i32.const 100 + i32.const 136 + i32.const 98 i32.const 61 call $~lib/env/abort unreachable @@ -133,12 +142,12 @@ global.set $~lib/allocator/arena/offset local.get $1 ) - (func $~lib/runtime/doAllocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/allocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) i32.const 1 i32.const 32 local.get $0 - i32.const 7 + i32.const 15 i32.add i32.clz i32.sub @@ -151,183 +160,193 @@ local.get $0 i32.store offset=4 local.get $1 - i32.const 8 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $1 + i32.const 16 i32.add ) - (func $~lib/runtime/assertUnregistered (; 5 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/register (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 - i32.const 256 + i32.const 328 i32.le_u if i32.const 0 - i32.const 224 - i32.const 313 - i32.const 2 + i32.const 296 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 - i32.const 8 + i32.const 16 i32.sub + local.tee $2 i32.load i32.const -1520547049 i32.ne if i32.const 0 - i32.const 224 - i32.const 314 - i32.const 2 + i32.const 296 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $~lib/runtime/doRegister (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/runtime/assertUnregistered - local.get $0 - i32.const 8 - i32.sub + local.get $2 local.get $1 i32.store local.get $0 ) - (func $~lib/runtime/doMakeArray (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/runtime/makeArray (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) i32.const 16 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.get $0 - call $~lib/runtime/doRegister - local.tee $0 + call $~lib/runtime/register + local.set $2 i32.const 3 local.get $1 i32.shl local.tee $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 1 - call $~lib/runtime/doRegister - local.tee $2 - i32.store - local.get $0 + call $~lib/runtime/register + local.tee $3 + local.tee $0 + local.get $2 + i32.load + i32.ne + drop local.get $2 - i32.store offset=4 local.get $0 + i32.store + local.get $2 + local.get $3 + i32.store offset=4 + local.get $2 local.get $1 i32.store offset=8 - local.get $0 + local.get $2 i32.const 3 i32.store offset=12 - local.get $0 + local.get $2 ) - (func $std/array-literal/Ref#constructor (; 8 ;) (type $FUNCSIG$i) (result i32) + (func $std/array-literal/Ref#constructor (; 7 ;) (type $FUNCSIG$i) (result i32) i32.const 0 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 5 - call $~lib/runtime/doRegister + call $~lib/runtime/register ) - (func $std/array-literal/RefWithCtor#constructor (; 9 ;) (type $FUNCSIG$i) (result i32) + (func $std/array-literal/RefWithCtor#constructor (; 8 ;) (type $FUNCSIG$i) (result i32) i32.const 0 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 7 - call $~lib/runtime/doRegister + call $~lib/runtime/register ) - (func $start:std/array-literal (; 10 ;) (type $FUNCSIG$v) + (func $start:std/array-literal (; 9 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) - i32.const 44 + i32.const 60 i32.load i32.const 3 i32.ne if i32.const 0 - i32.const 56 - i32.const 4 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 32 - i32.const 0 - call $~lib/array/Array#__get - if - i32.const 0 - i32.const 56 + i32.const 80 i32.const 5 i32.const 0 call $~lib/env/abort unreachable end - i32.const 32 - i32.const 1 + i32.const 48 + i32.const 0 call $~lib/array/Array#__get - i32.const 1 - i32.ne if i32.const 0 - i32.const 56 + i32.const 80 i32.const 6 i32.const 0 call $~lib/env/abort unreachable end - i32.const 32 + i32.const 48 + i32.const 1 + call $~lib/array/Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 80 + i32.const 7 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 48 i32.const 2 call $~lib/array/Array#__get i32.const 2 i32.ne if i32.const 0 - i32.const 56 - i32.const 7 + i32.const 80 + i32.const 8 i32.const 0 call $~lib/env/abort unreachable end - i32.const 180 + i32.const 228 i32.load i32.const 3 i32.ne if i32.const 0 - i32.const 56 - i32.const 10 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 168 - i32.const 0 - call $~lib/array/Array#__get - if - i32.const 0 - i32.const 56 + i32.const 80 i32.const 11 i32.const 0 call $~lib/env/abort unreachable end - i32.const 168 - i32.const 1 + i32.const 216 + i32.const 0 call $~lib/array/Array#__get - i32.const 1 - i32.ne if i32.const 0 - i32.const 56 + i32.const 80 i32.const 12 i32.const 0 call $~lib/env/abort unreachable end - i32.const 168 + i32.const 216 + i32.const 1 + call $~lib/array/Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 80 + i32.const 13 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 216 i32.const 2 call $~lib/array/Array#__get i32.const 2 i32.ne if i32.const 0 - i32.const 56 - i32.const 13 + i32.const 80 + i32.const 14 i32.const 0 call $~lib/env/abort unreachable @@ -336,41 +355,42 @@ i32.load offset=12 if i32.const 0 - i32.const 56 - i32.const 16 + i32.const 80 + i32.const 17 i32.const 0 call $~lib/env/abort unreachable end - i32.const 256 + i32.const 328 global.set $~lib/allocator/arena/startOffset global.get $~lib/allocator/arena/startOffset global.set $~lib/allocator/arena/offset i32.const 2 i32.const 0 - call $~lib/runtime/doMakeArray - local.tee $0 - i32.load offset=4 + call $~lib/runtime/makeArray local.tee $1 - global.get $std/array-literal/i + i32.load offset=4 local.tee $2 + global.get $std/array-literal/i + local.tee $0 i32.store8 - local.get $2 - i32.const 1 - i32.add - global.set $std/array-literal/i - local.get $1 - global.get $std/array-literal/i - local.tee $2 - i32.store8 offset=1 - local.get $2 - i32.const 1 - i32.add - global.set $std/array-literal/i - local.get $1 - global.get $std/array-literal/i - i32.store8 offset=2 local.get $0 + i32.const 1 + i32.add + local.tee $0 + global.set $std/array-literal/i + local.get $2 + local.get $0 + i32.store8 offset=1 + global.get $std/array-literal/i + i32.const 1 + i32.add + local.tee $0 + global.set $std/array-literal/i + local.get $2 + local.get $0 + i32.store8 offset=2 + local.get $1 global.set $std/array-literal/dynamicArrayI8 global.get $std/array-literal/dynamicArrayI8 i32.load offset=12 @@ -378,8 +398,8 @@ i32.ne if i32.const 0 - i32.const 56 - i32.const 21 + i32.const 80 + i32.const 22 i32.const 0 call $~lib/env/abort unreachable @@ -389,34 +409,34 @@ call $~lib/array/Array#__get if i32.const 0 - i32.const 56 - i32.const 22 - i32.const 0 - call $~lib/env/abort - unreachable - end - global.get $std/array-literal/dynamicArrayI8 - i32.const 1 - call $~lib/array/Array#__get - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 56 + i32.const 80 i32.const 23 i32.const 0 call $~lib/env/abort unreachable end global.get $std/array-literal/dynamicArrayI8 + i32.const 1 + call $~lib/array/Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 80 + i32.const 24 + i32.const 0 + call $~lib/env/abort + unreachable + end + global.get $std/array-literal/dynamicArrayI8 i32.const 2 call $~lib/array/Array#__get i32.const 2 i32.ne if i32.const 0 - i32.const 56 - i32.const 24 + i32.const 80 + i32.const 25 i32.const 0 call $~lib/env/abort unreachable @@ -425,29 +445,30 @@ global.set $std/array-literal/i i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray - local.tee $1 + call $~lib/runtime/makeArray + local.tee $2 i32.load offset=4 + local.tee $1 + global.get $std/array-literal/i local.tee $0 - global.get $std/array-literal/i - local.tee $2 i32.store - local.get $2 + local.get $0 i32.const 1 i32.add + local.tee $0 global.set $std/array-literal/i - local.get $0 - global.get $std/array-literal/i - local.tee $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.add - global.set $std/array-literal/i - local.get $0 - global.get $std/array-literal/i - i32.store offset=8 local.get $1 + local.get $0 + i32.store offset=4 + global.get $std/array-literal/i + i32.const 1 + i32.add + local.tee $0 + global.set $std/array-literal/i + local.get $1 + local.get $0 + i32.store offset=8 + local.get $2 global.set $std/array-literal/dynamicArrayI32 global.get $std/array-literal/dynamicArrayI32 i32.load offset=12 @@ -455,8 +476,8 @@ i32.ne if i32.const 0 - i32.const 56 - i32.const 29 + i32.const 80 + i32.const 30 i32.const 0 call $~lib/env/abort unreachable @@ -466,53 +487,53 @@ call $~lib/array/Array#__get if i32.const 0 - i32.const 56 - i32.const 30 - i32.const 0 - call $~lib/env/abort - unreachable - end - global.get $std/array-literal/dynamicArrayI32 - i32.const 1 - call $~lib/array/Array#__get - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 56 + i32.const 80 i32.const 31 i32.const 0 call $~lib/env/abort unreachable end global.get $std/array-literal/dynamicArrayI32 + i32.const 1 + call $~lib/array/Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 80 + i32.const 32 + i32.const 0 + call $~lib/env/abort + unreachable + end + global.get $std/array-literal/dynamicArrayI32 i32.const 2 call $~lib/array/Array#__get i32.const 2 i32.ne if i32.const 0 - i32.const 56 - i32.const 32 + i32.const 80 + i32.const 33 i32.const 0 call $~lib/env/abort unreachable end i32.const 6 i32.const 2 - call $~lib/runtime/doMakeArray - local.tee $0 - i32.load offset=4 + call $~lib/runtime/makeArray local.tee $1 + i32.load offset=4 + local.tee $2 call $std/array-literal/Ref#constructor i32.store - local.get $1 + local.get $2 call $std/array-literal/Ref#constructor i32.store offset=4 - local.get $1 + local.get $2 call $std/array-literal/Ref#constructor i32.store offset=8 - local.get $0 + local.get $1 global.set $std/array-literal/dynamicArrayRef global.get $std/array-literal/dynamicArrayRef i32.load offset=12 @@ -520,27 +541,27 @@ i32.ne if i32.const 0 - i32.const 56 - i32.const 36 + i32.const 80 + i32.const 37 i32.const 0 call $~lib/env/abort unreachable end i32.const 8 i32.const 2 - call $~lib/runtime/doMakeArray - local.tee $1 + call $~lib/runtime/makeArray + local.tee $2 i32.load offset=4 - local.tee $0 + local.tee $1 call $std/array-literal/RefWithCtor#constructor i32.store - local.get $0 + local.get $1 call $std/array-literal/RefWithCtor#constructor i32.store offset=4 - local.get $0 + local.get $1 call $std/array-literal/RefWithCtor#constructor i32.store offset=8 - local.get $1 + local.get $2 global.set $std/array-literal/dynamicArrayRefWithCtor global.get $std/array-literal/dynamicArrayRefWithCtor i32.load offset=12 @@ -548,17 +569,17 @@ i32.ne if i32.const 0 - i32.const 56 - i32.const 40 + i32.const 80 + i32.const 41 i32.const 0 call $~lib/env/abort unreachable end ) - (func $start (; 11 ;) (type $FUNCSIG$v) + (func $start (; 10 ;) (type $FUNCSIG$v) call $start:std/array-literal ) - (func $null (; 12 ;) (type $FUNCSIG$v) + (func $null (; 11 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/array-literal.ts b/tests/compiler/std/array-literal.ts index 1fdd31d5..89371eb6 100644 --- a/tests/compiler/std/array-literal.ts +++ b/tests/compiler/std/array-literal.ts @@ -1,4 +1,5 @@ import "allocator/arena"; +import "collector/dummy"; const staticArrayI8: i8[] = [0, 1, 2]; assert(staticArrayI8.length == 3); diff --git a/tests/compiler/std/array-literal.untouched.wat b/tests/compiler/std/array-literal.untouched.wat index 6f19a66e..5ff0a182 100644 --- a/tests/compiler/std/array-literal.untouched.wat +++ b/tests/compiler/std/array-literal.untouched.wat @@ -4,27 +4,27 @@ (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$vii (func (param i32 i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\01\00\00\00\03\00\00\00\00\01\02") - (data (i32.const 24) "\02\00\00\00\10\00\00\00\10\00\00\00\10\00\00\00\03\00\00\00\03\00\00\00") - (data (i32.const 48) "\03\00\00\00(\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s\00") - (data (i32.const 96) "\03\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 136) "\01\00\00\00\0c\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00") - (data (i32.const 160) "\04\00\00\00\10\00\00\00\90\00\00\00\90\00\00\00\0c\00\00\00\03\00\00\00") - (data (i32.const 184) "\01\00\00\00\00\00\00\00") - (data (i32.const 192) "\04\00\00\00\10\00\00\00\c0\00\00\00\c0\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 216) "\03\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") + (data (i32.const 8) "\01\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\01\02") + (data (i32.const 32) "\02\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\18\00\00\00\03\00\00\00\03\00\00\00") + (data (i32.const 64) "\03\00\00\00(\00\00\00\00\00\00\00\00\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s\00") + (data (i32.const 120) "\03\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 168) "\01\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00") + (data (i32.const 200) "\04\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\b8\00\00\00\b8\00\00\00\0c\00\00\00\03\00\00\00") + (data (i32.const 232) "\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 248) "\04\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\f8\00\00\00\f8\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 280) "\03\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) - (global $std/array-literal/staticArrayI8 i32 (i32.const 32)) - (global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0)) - (global $~lib/runtime/HEADER_SIZE i32 (i32.const 8)) + (global $std/array-literal/staticArrayI8 i32 (i32.const 48)) + (global $~lib/runtime/HEADER_SIZE i32 (i32.const 16)) (global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) - (global $std/array-literal/staticArrayI32 i32 (i32.const 168)) - (global $std/array-literal/emptyArrayI32 (mut i32) (i32.const 200)) + (global $std/array-literal/staticArrayI32 i32 (i32.const 216)) + (global $std/array-literal/emptyArrayI32 (mut i32) (i32.const 264)) (global $std/array-literal/i (mut i32) (i32.const 0)) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) @@ -33,29 +33,17 @@ (global $std/array-literal/dynamicArrayI32 (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayRef (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayRefWithCtor (mut i32) (i32.const 0)) - (global $~lib/memory/HEAP_BASE i32 (i32.const 256)) + (global $~lib/memory/HEAP_BASE i32 (i32.const 328)) + (global $~lib/capabilities i32 (i32.const 2)) (export "memory" (memory $0)) (export "table" (table $0)) + (export ".capabilities" (global $~lib/capabilities)) (start $start) (func $~lib/array/Array#get:length (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__get (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 0 - i32.shr_u - i32.ge_u - if - i32.const 0 - i32.const 104 - i32.const 100 - i32.const 61 - call $~lib/env/abort - unreachable - end + (func $~lib/array/Array#__unchecked_get (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -64,25 +52,30 @@ i32.add i32.load8_s ) - (func $~lib/array/Array#get:length (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__get (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 - i32.const 2 + i32.const 0 i32.shr_u i32.ge_u if i32.const 0 - i32.const 104 - i32.const 100 + i32.const 136 + i32.const 98 i32.const 61 call $~lib/env/abort unreachable end + local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + ) + (func $~lib/array/Array#get:length (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__unchecked_get (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -91,7 +84,26 @@ i32.add i32.load ) - (func $~lib/runtime/ADJUSTOBLOCK (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#__get (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 0 + i32.const 136 + i32.const 98 + i32.const 61 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + ) + (func $~lib/runtime/ADJUSTOBLOCK (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 1 i32.const 32 local.get $0 @@ -103,7 +115,7 @@ i32.sub i32.shl ) - (func $~lib/memory/memory.allocate (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/memory/memory.allocate (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -188,7 +200,7 @@ end return ) - (func $~lib/runtime/doAllocate (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/allocate (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/runtime/ADJUSTOBLOCK @@ -201,49 +213,63 @@ local.get $0 i32.store offset=4 local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $1 global.get $~lib/runtime/HEADER_SIZE i32.add ) - (func $~lib/runtime/assertUnregistered (; 8 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/collector/dummy/__ref_register (; 10 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $~lib/runtime/register (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 global.get $~lib/memory/HEAP_BASE i32.gt_u i32.eqz if i32.const 0 - i32.const 224 - i32.const 313 - i32.const 2 + i32.const 296 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 global.get $~lib/runtime/HEADER_SIZE i32.sub + local.set $2 + local.get $2 i32.load global.get $~lib/runtime/HEADER_MAGIC i32.eq i32.eqz if i32.const 0 - i32.const 224 - i32.const 314 - i32.const 2 + i32.const 296 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $~lib/runtime/doRegister (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/runtime/assertUnregistered - local.get $0 - global.get $~lib/runtime/HEADER_SIZE - i32.sub + local.get $2 local.get $1 i32.store local.get $0 + call $~lib/collector/dummy/__ref_register + local.get $0 ) - (func $~lib/util/memory/memcpy (; 10 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/collector/dummy/__ref_link (; 12 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/collector/dummy/__ref_unlink (; 13 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/util/memory/memcpy (; 14 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1444,7 +1470,7 @@ i32.store8 end ) - (func $~lib/memory/memory.copy (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 15 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1675,14 +1701,17 @@ end end ) - (func $~lib/runtime/doMakeArray (; 12 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/runtime/makeArray (; 16 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) i32.const 16 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.get $2 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.set $4 local.get $0 local.get $3 @@ -1691,12 +1720,32 @@ local.get $0 local.get $3 i32.shl - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.set $6 local.get $4 + local.tee $7 local.get $6 + local.tee $8 + local.get $7 + i32.load + local.tee $9 + i32.ne + if (result i32) + local.get $9 + if + local.get $9 + local.get $7 + call $~lib/collector/dummy/__ref_unlink + end + local.get $8 + local.get $7 + call $~lib/collector/dummy/__ref_link + local.get $8 + else + local.get $8 + end i32.store local.get $4 local.get $6 @@ -1716,7 +1765,7 @@ end local.get $4 ) - (func $std/array-literal/Ref#constructor (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array-literal/Ref#constructor (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.eqz @@ -1726,22 +1775,22 @@ i32.const 0 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 5 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end local.get $0 ) - (func $~lib/array/Array#get:length (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $std/array-literal/RefWithCtor#constructor (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array-literal/RefWithCtor#constructor (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.eqz @@ -1751,22 +1800,22 @@ i32.const 0 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 7 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end local.get $0 ) - (func $~lib/array/Array#get:length (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $start:std/array-literal (; 17 ;) (type $FUNCSIG$v) + (func $start:std/array-literal (; 21 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -1778,27 +1827,27 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 4 - i32.const 0 - call $~lib/env/abort - unreachable - end - global.get $std/array-literal/staticArrayI8 - i32.const 0 - call $~lib/array/Array#__get - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 56 + i32.const 80 i32.const 5 i32.const 0 call $~lib/env/abort unreachable end global.get $std/array-literal/staticArrayI8 + i32.const 0 + call $~lib/array/Array#__get + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 80 + i32.const 6 + i32.const 0 + call $~lib/env/abort + unreachable + end + global.get $std/array-literal/staticArrayI8 i32.const 1 call $~lib/array/Array#__get i32.const 1 @@ -1806,8 +1855,8 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 6 + i32.const 80 + i32.const 7 i32.const 0 call $~lib/env/abort unreachable @@ -1820,8 +1869,8 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 7 + i32.const 80 + i32.const 8 i32.const 0 call $~lib/env/abort unreachable @@ -1833,27 +1882,27 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 10 - i32.const 0 - call $~lib/env/abort - unreachable - end - global.get $std/array-literal/staticArrayI32 - i32.const 0 - call $~lib/array/Array#__get - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 56 + i32.const 80 i32.const 11 i32.const 0 call $~lib/env/abort unreachable end global.get $std/array-literal/staticArrayI32 + i32.const 0 + call $~lib/array/Array#__get + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 80 + i32.const 12 + i32.const 0 + call $~lib/env/abort + unreachable + end + global.get $std/array-literal/staticArrayI32 i32.const 1 call $~lib/array/Array#__get i32.const 1 @@ -1861,8 +1910,8 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 12 + i32.const 80 + i32.const 13 i32.const 0 call $~lib/env/abort unreachable @@ -1875,8 +1924,8 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 13 + i32.const 80 + i32.const 14 i32.const 0 call $~lib/env/abort unreachable @@ -1888,8 +1937,8 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 16 + i32.const 80 + i32.const 17 i32.const 0 call $~lib/env/abort unreachable @@ -1914,7 +1963,7 @@ local.get $3 i32.const 2 i32.const 0 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end local.set $0 local.get $0 @@ -1928,8 +1977,9 @@ global.get $std/array-literal/i i32.const 1 i32.add + local.tee $3 global.set $std/array-literal/i - global.get $std/array-literal/i + local.get $3 end i32.store8 offset=1 local.get $1 @@ -1937,8 +1987,9 @@ global.get $std/array-literal/i i32.const 1 i32.add + local.tee $3 global.set $std/array-literal/i - global.get $std/array-literal/i + local.get $3 end i32.store8 offset=2 local.get $0 @@ -1951,27 +2002,27 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 21 - i32.const 0 - call $~lib/env/abort - unreachable - end - global.get $std/array-literal/dynamicArrayI8 - i32.const 0 - call $~lib/array/Array#__get - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 56 + i32.const 80 i32.const 22 i32.const 0 call $~lib/env/abort unreachable end global.get $std/array-literal/dynamicArrayI8 + i32.const 0 + call $~lib/array/Array#__get + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 80 + i32.const 23 + i32.const 0 + call $~lib/env/abort + unreachable + end + global.get $std/array-literal/dynamicArrayI8 i32.const 1 call $~lib/array/Array#__get i32.const 1 @@ -1979,8 +2030,8 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 23 + i32.const 80 + i32.const 24 i32.const 0 call $~lib/env/abort unreachable @@ -1993,8 +2044,8 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 24 + i32.const 80 + i32.const 25 i32.const 0 call $~lib/env/abort unreachable @@ -2011,7 +2062,7 @@ local.get $2 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end local.set $1 local.get $1 @@ -2025,8 +2076,9 @@ global.get $std/array-literal/i i32.const 1 i32.add + local.tee $2 global.set $std/array-literal/i - global.get $std/array-literal/i + local.get $2 end i32.store offset=4 local.get $0 @@ -2034,8 +2086,9 @@ global.get $std/array-literal/i i32.const 1 i32.add + local.tee $2 global.set $std/array-literal/i - global.get $std/array-literal/i + local.get $2 end i32.store offset=8 local.get $1 @@ -2048,27 +2101,27 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 29 - i32.const 0 - call $~lib/env/abort - unreachable - end - global.get $std/array-literal/dynamicArrayI32 - i32.const 0 - call $~lib/array/Array#__get - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 56 + i32.const 80 i32.const 30 i32.const 0 call $~lib/env/abort unreachable end global.get $std/array-literal/dynamicArrayI32 + i32.const 0 + call $~lib/array/Array#__get + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 80 + i32.const 31 + i32.const 0 + call $~lib/env/abort + unreachable + end + global.get $std/array-literal/dynamicArrayI32 i32.const 1 call $~lib/array/Array#__get i32.const 1 @@ -2076,8 +2129,8 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 31 + i32.const 80 + i32.const 32 i32.const 0 call $~lib/env/abort unreachable @@ -2090,8 +2143,8 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 32 + i32.const 80 + i32.const 33 i32.const 0 call $~lib/env/abort unreachable @@ -2106,23 +2159,44 @@ local.get $3 i32.const 6 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end local.set $0 local.get $0 i32.load offset=4 local.set $1 local.get $1 - i32.const 0 - call $std/array-literal/Ref#constructor + block (result i32) + i32.const 0 + call $std/array-literal/Ref#constructor + local.set $3 + local.get $3 + local.get $0 + call $~lib/collector/dummy/__ref_link + local.get $3 + end i32.store local.get $1 - i32.const 0 - call $std/array-literal/Ref#constructor + block (result i32) + i32.const 0 + call $std/array-literal/Ref#constructor + local.set $3 + local.get $3 + local.get $0 + call $~lib/collector/dummy/__ref_link + local.get $3 + end i32.store offset=4 local.get $1 - i32.const 0 - call $std/array-literal/Ref#constructor + block (result i32) + i32.const 0 + call $std/array-literal/Ref#constructor + local.set $3 + local.get $3 + local.get $0 + call $~lib/collector/dummy/__ref_link + local.get $3 + end i32.store offset=8 local.get $0 end @@ -2134,8 +2208,8 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 36 + i32.const 80 + i32.const 37 i32.const 0 call $~lib/env/abort unreachable @@ -2150,23 +2224,44 @@ local.get $2 i32.const 8 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end local.set $1 local.get $1 i32.load offset=4 local.set $0 local.get $0 - i32.const 0 - call $std/array-literal/RefWithCtor#constructor + block (result i32) + i32.const 0 + call $std/array-literal/RefWithCtor#constructor + local.set $2 + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $2 + end i32.store local.get $0 - i32.const 0 - call $std/array-literal/RefWithCtor#constructor + block (result i32) + i32.const 0 + call $std/array-literal/RefWithCtor#constructor + local.set $2 + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $2 + end i32.store offset=4 local.get $0 - i32.const 0 - call $std/array-literal/RefWithCtor#constructor + block (result i32) + i32.const 0 + call $std/array-literal/RefWithCtor#constructor + local.set $2 + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $2 + end i32.store offset=8 local.get $1 end @@ -2178,16 +2273,16 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 40 + i32.const 80 + i32.const 41 i32.const 0 call $~lib/env/abort unreachable end ) - (func $start (; 18 ;) (type $FUNCSIG$v) + (func $start (; 22 ;) (type $FUNCSIG$v) call $start:std/array-literal ) - (func $null (; 19 ;) (type $FUNCSIG$v) + (func $null (; 23 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index 14e06c2d..77219d56 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -314,11 +314,11 @@ (data (i32.const 5584) "I\00n\00f\00i\00n\00i\00t\00y") (data (i32.const 5600) "\02\00\00\00\b8\02") (data (i32.const 5616) "\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~anonymous|0) + (table $0 57 funcref) + (elem (i32.const 0) $null $start:std/array~anonymous|0 $start:std/array~anonymous|1 $start:std/array~anonymous|2 $start:std/array~anonymous|3 $start:std/array~anonymous|2 $start:std/array~anonymous|5 $start:std/array~anonymous|6 $start:std/array~anonymous|7 $start:std/array~anonymous|8 $start:std/array~anonymous|9 $start:std/array~anonymous|10 $start:std/array~anonymous|11 $start:std/array~anonymous|12 $start:std/array~anonymous|13 $start:std/array~anonymous|14 $start:std/array~anonymous|15 $start:std/array~anonymous|16 $start:std/array~anonymous|17 $start:std/array~anonymous|16 $start:std/array~anonymous|19 $start:std/array~anonymous|20 $start:std/array~anonymous|21 $start:std/array~anonymous|22 $start:std/array~anonymous|23 $start:std/array~anonymous|24 $start:std/array~anonymous|25 $start:std/array~anonymous|26 $start:std/array~anonymous|27 $start:std/array~anonymous|28 $start:std/array~anonymous|29 $start:std/array~anonymous|29 $start:std/array~anonymous|31 $start:std/array~anonymous|32 $start:std/array~anonymous|33 $start:std/array~anonymous|29 $start:std/array~anonymous|35 $start:std/array~anonymous|29 $start:std/array~anonymous|29 $start:std/array~anonymous|31 $start:std/array~anonymous|32 $start:std/array~anonymous|33 $start:std/array~anonymous|29 $start:std/array~anonymous|35 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $start:std/array~anonymous|44 $~lib/util/sort/COMPARATOR~anonymous|0 $start:std/array~anonymous|44 $start:std/array~anonymous|47 $start:std/array~anonymous|48 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) (global $std/array/arr (mut i32) (i32.const 0)) @@ -527,7 +527,7 @@ global.set $~lib/allocator/arena/offset local.get $1 ) - (func $~lib/runtime/doAllocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) i32.const 1 i32.const 32 @@ -779,44 +779,40 @@ end end ) - (func $~lib/runtime/assertUnregistered (; 5 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/register (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 i32.const 8060 i32.le_u if i32.const 0 i32.const 24 - i32.const 313 - i32.const 2 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 i32.const 16 i32.sub + local.tee $2 i32.load i32.const -1520547049 i32.ne if i32.const 0 i32.const 24 - i32.const 314 - i32.const 2 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $~lib/runtime/doRegister (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/runtime/assertUnregistered - local.get $0 - i32.const 16 - i32.sub + local.get $2 local.get $1 i32.store local.get $0 ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#constructor (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 1073741808 @@ -830,48 +826,17 @@ unreachable end local.get $0 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.tee $1 i32.const 0 local.get $0 call $~lib/memory/memory.fill local.get $1 i32.const 2 - call $~lib/runtime/doRegister + call $~lib/runtime/register ) - (func $~lib/runtime/assertRegistered (; 8 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 320 - i32.const 2 - call $~lib/env/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - i32.load - i32.const -1520547049 - i32.eq - if - i32.const 0 - i32.const 24 - i32.const 321 - i32.const 2 - call $~lib/env/abort - unreachable - end - ) - (func $~lib/runtime/doRetain (; 9 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - local.get $0 - call $~lib/runtime/assertRegistered - local.get $1 - call $~lib/runtime/assertRegistered - ) - (func $~lib/runtime/ArrayBufferView#constructor (; 10 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/runtime/ArrayBufferView#constructor (; 7 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) local.get $1 i32.const 1073741808 local.get $2 @@ -880,7 +845,7 @@ if i32.const 0 i32.const 24 - i32.const 348 + i32.const 244 i32.const 57 call $~lib/env/abort unreachable @@ -890,14 +855,14 @@ i32.shl local.tee $1 call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 + local.set $3 local.get $0 i32.eqz if i32.const 12 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 3 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.set $0 end local.get $0 @@ -909,26 +874,31 @@ local.get $0 i32.const 0 i32.store offset=8 + local.get $0 + local.set $2 + local.get $3 + local.tee $0 + local.get $2 + i32.load + i32.ne + drop local.get $2 local.get $0 - call $~lib/runtime/doRetain - local.get $0 - local.get $2 i32.store - local.get $0 local.get $2 - i32.store offset=4 local.get $0 + i32.store offset=4 + local.get $2 local.get $1 i32.store offset=8 - local.get $0 + local.get $2 ) - (func $~lib/array/Array#constructor (; 11 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/array/Array#constructor (; 8 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 16 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 4 - call $~lib/runtime/doRegister + call $~lib/runtime/register i32.const 0 i32.const 2 call $~lib/runtime/ArrayBufferView#constructor @@ -940,7 +910,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/array/Array#fill (; 12 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/array/Array#fill (; 9 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) (local $5 i32) local.get $0 @@ -1005,7 +975,7 @@ call $~lib/memory/memory.fill end ) - (func $~lib/util/memory/memcpy (; 13 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (; 10 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1902,7 +1872,7 @@ i32.store8 end ) - (func $~lib/memory/memory.copy (; 14 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 @@ -2096,45 +2066,49 @@ end end ) - (func $~lib/runtime/doMakeArray (; 15 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/runtime/makeArray (; 12 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) + (local $5 i32) i32.const 16 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.get $2 - call $~lib/runtime/doRegister - local.set $2 + call $~lib/runtime/register + local.set $4 local.get $0 local.get $3 i32.shl - local.tee $4 - call $~lib/runtime/doAllocate - i32.const 2 - call $~lib/runtime/doRegister local.tee $3 - local.get $2 - call $~lib/runtime/doRetain - local.get $2 - local.get $3 - i32.store - local.get $2 - local.get $3 - i32.store offset=4 - local.get $2 + call $~lib/runtime/allocate + i32.const 2 + call $~lib/runtime/register + local.tee $5 + local.tee $2 + local.get $4 + i32.load + i32.ne + drop local.get $4 - i32.store offset=8 local.get $2 + i32.store + local.get $4 + local.get $5 + i32.store offset=4 + local.get $4 + local.get $3 + i32.store offset=8 + local.get $4 local.get $0 i32.store offset=12 local.get $1 if - local.get $3 + local.get $5 local.get $1 - local.get $4 + local.get $3 call $~lib/memory/memory.copy end - local.get $2 + local.get $4 ) - (func $~lib/array/Array#__get (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -2142,18 +2116,18 @@ if i32.const 0 i32.const 272 - i32.const 100 + i32.const 98 i32.const 61 call $~lib/env/abort unreachable end - local.get $1 local.get $0 i32.load offset=4 + local.get $1 i32.add i32.load8_u ) - (func $std/array/isArraysEqual (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isArraysEqual (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -2200,7 +2174,7 @@ end i32.const 1 ) - (func $~lib/array/Array#fill (; 18 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/array/Array#fill (; 15 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) (local $5 i32) local.get $0 @@ -2273,7 +2247,7 @@ end end ) - (func $~lib/array/Array#__get (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -2283,7 +2257,7 @@ if i32.const 0 i32.const 272 - i32.const 100 + i32.const 98 i32.const 61 call $~lib/env/abort unreachable @@ -2296,7 +2270,7 @@ i32.add i32.load ) - (func $std/array/isArraysEqual (; 20 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual (; 17 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 i32.eqz @@ -2346,7 +2320,7 @@ end i32.const 1 ) - (func $~lib/runtime/doReallocate (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/runtime/reallocate (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2422,7 +2396,7 @@ if i32.const 0 i32.const 24 - i32.const 133 + i32.const 125 i32.const 8 call $~lib/env/abort unreachable @@ -2448,7 +2422,7 @@ i32.store offset=4 local.get $0 ) - (func $~lib/array/ensureCapacity (; 22 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/ensureCapacity (; 19 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $1 @@ -2464,7 +2438,7 @@ if i32.const 0 i32.const 272 - i32.const 14 + i32.const 13 i32.const 64 call $~lib/env/abort unreachable @@ -2476,14 +2450,14 @@ i32.const 2 i32.shl local.tee $3 - call $~lib/runtime/doReallocate + call $~lib/runtime/reallocate local.tee $1 local.get $2 i32.ne if - local.get $1 local.get $0 - call $~lib/runtime/doRetain + i32.load + drop local.get $0 local.get $1 i32.store @@ -2496,30 +2470,30 @@ i32.store offset=8 end ) - (func $~lib/array/Array#push (; 23 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#push (; 20 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) + (local $3 i32) local.get $0 local.get $0 i32.load offset=12 + local.tee $2 i32.const 1 i32.add - local.tee $2 + local.tee $3 call $~lib/array/ensureCapacity local.get $0 - local.get $2 - i32.store offset=12 - local.get $0 i32.load offset=4 local.get $2 - i32.const 1 - i32.sub i32.const 2 i32.shl i32.add local.get $1 i32.store + local.get $0 + local.get $3 + i32.store offset=12 ) - (func $~lib/array/Array#pop (; 24 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#pop (; 21 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -2530,7 +2504,7 @@ if i32.const 0 i32.const 272 - i32.const 245 + i32.const 308 i32.const 20 call $~lib/env/abort unreachable @@ -2551,7 +2525,7 @@ i32.store offset=12 local.get $2 ) - (func $~lib/array/Array#concat (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#concat (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2569,7 +2543,7 @@ i32.const 0 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray local.tee $4 i32.load offset=4 local.tee $5 @@ -2591,7 +2565,7 @@ call $~lib/memory/memory.copy local.get $4 ) - (func $~lib/array/Array#copyWithin (; 26 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/array/Array#copyWithin (; 23 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -2758,7 +2732,7 @@ end local.get $0 ) - (func $~lib/array/Array#unshift (; 27 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#unshift (; 24 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -2787,7 +2761,7 @@ local.get $2 i32.store offset=12 ) - (func $~lib/array/Array#shift (; 28 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#shift (; 25 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -2800,7 +2774,7 @@ if i32.const 0 i32.const 272 - i32.const 306 + i32.const 380 i32.const 20 call $~lib/env/abort unreachable @@ -2832,7 +2806,7 @@ i32.store offset=12 local.get $3 ) - (func $~lib/array/Array#reverse (; 29 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/array/Array#reverse (; 26 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -2879,7 +2853,7 @@ end end ) - (func $~lib/array/Array#indexOf (; 30 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#indexOf (; 27 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -2943,7 +2917,7 @@ end i32.const -1 ) - (func $~lib/array/Array#includes (; 31 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#includes (; 28 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $1 local.get $2 @@ -2951,14 +2925,11 @@ i32.const 0 i32.ge_s ) - (func $~lib/array/Array#splice (; 32 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#splice (; 29 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) local.get $2 local.get $0 i32.load offset=12 @@ -3001,47 +2972,20 @@ i32.const 0 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray - local.tee $6 + call $~lib/runtime/makeArray + local.tee $5 + i32.load offset=4 + drop + local.get $5 i32.load offset=4 - local.set $7 local.get $0 i32.load offset=4 - local.tee $8 + local.tee $6 local.get $1 i32.const 2 i32.shl i32.add - local.set $5 - i32.const 0 - local.set $3 - loop $repeat|0 - block $break|0 - local.get $3 - local.get $2 - i32.ge_s - br_if $break|0 - local.get $3 - i32.const 2 - i32.shl - local.tee $9 - local.get $7 - i32.add - local.get $5 - local.get $9 - i32.add - i32.load - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $repeat|0 - end - end - local.get $6 - i32.load offset=4 - local.get $5 + local.tee $3 local.get $2 i32.const 2 i32.shl @@ -3053,11 +2997,11 @@ local.get $4 i32.ne if - local.get $5 + local.get $3 local.get $1 i32.const 2 i32.shl - local.get $8 + local.get $6 i32.add local.get $4 local.get $1 @@ -3071,9 +3015,9 @@ local.get $2 i32.sub i32.store offset=12 - local.get $6 + local.get $5 ) - (func $~lib/array/Array#__set (; 33 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 30 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $0 i32.load offset=12 @@ -3102,11 +3046,11 @@ i32.store offset=12 end ) - (func $start:std/array~anonymous|0 (; 34 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|0 (; 31 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.eqz ) - (func $~lib/array/Array#findIndex (; 35 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#findIndex (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3154,17 +3098,17 @@ end i32.const -1 ) - (func $start:std/array~anonymous|1 (; 36 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|1 (; 33 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 1 i32.eq ) - (func $start:std/array~anonymous|2 (; 37 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|2 (; 34 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 100 i32.eq ) - (func $start:std/array~anonymous|3 (; 38 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|3 (; 35 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 i32.const 100 call $~lib/array/Array#push @@ -3172,7 +3116,7 @@ i32.const 100 i32.eq ) - (func $start:std/array~anonymous|5 (; 39 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|5 (; 36 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/array/Array#pop drop @@ -3180,12 +3124,12 @@ i32.const 100 i32.eq ) - (func $start:std/array~anonymous|6 (; 40 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|6 (; 37 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 0 i32.ge_s ) - (func $~lib/array/Array#every (; 41 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#every (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3233,12 +3177,12 @@ end i32.const 1 ) - (func $start:std/array~anonymous|7 (; 42 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|7 (; 39 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 0 i32.le_s ) - (func $start:std/array~anonymous|8 (; 43 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|8 (; 40 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 i32.const 100 call $~lib/array/Array#push @@ -3246,12 +3190,12 @@ i32.const 10 i32.lt_s ) - (func $start:std/array~anonymous|9 (; 44 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|9 (; 41 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 10 i32.lt_s ) - (func $start:std/array~anonymous|10 (; 45 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|10 (; 42 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/array/Array#pop drop @@ -3259,12 +3203,12 @@ i32.const 3 i32.lt_s ) - (func $start:std/array~anonymous|11 (; 46 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|11 (; 43 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 3 i32.ge_s ) - (func $~lib/array/Array#some (; 47 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#some (; 44 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3312,12 +3256,12 @@ end i32.const 0 ) - (func $start:std/array~anonymous|12 (; 48 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|12 (; 45 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const -1 i32.le_s ) - (func $start:std/array~anonymous|13 (; 49 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|13 (; 46 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 i32.const 100 call $~lib/array/Array#push @@ -3325,12 +3269,12 @@ i32.const 10 i32.gt_s ) - (func $start:std/array~anonymous|14 (; 50 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|14 (; 47 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 10 i32.gt_s ) - (func $start:std/array~anonymous|15 (; 51 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|15 (; 48 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/array/Array#pop drop @@ -3338,13 +3282,13 @@ i32.const 3 i32.gt_s ) - (func $start:std/array~anonymous|16 (; 52 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|16 (; 49 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) global.get $std/array/i local.get $0 i32.add global.set $std/array/i ) - (func $~lib/array/Array#forEach (; 53 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#forEach (; 50 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3387,7 +3331,7 @@ unreachable end ) - (func $start:std/array~anonymous|17 (; 54 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|17 (; 51 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 i32.const 100 call $~lib/array/Array#push @@ -3396,7 +3340,7 @@ i32.add global.set $std/array/i ) - (func $start:std/array~anonymous|19 (; 55 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|19 (; 52 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 call $~lib/array/Array#pop drop @@ -3405,7 +3349,7 @@ i32.add global.set $std/array/i ) - (func $start:std/array~anonymous|20 (; 56 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|20 (; 53 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 i32.eqz @@ -3502,11 +3446,11 @@ end end ) - (func $start:std/array~anonymous|21 (; 57 ;) (type $FUNCSIG$fiii) (param $0 i32) (param $1 i32) (param $2 i32) (result f32) + (func $start:std/array~anonymous|21 (; 54 ;) (type $FUNCSIG$fiii) (param $0 i32) (param $1 i32) (param $2 i32) (result f32) local.get $0 f32.convert_i32_s ) - (func $~lib/array/Array#map (; 58 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#map (; 55 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3519,7 +3463,7 @@ i32.const 0 i32.const 9 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray local.tee $4 i32.load offset=4 local.set $5 @@ -3564,7 +3508,7 @@ end local.get $4 ) - (func $~lib/array/Array#__get (; 59 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/array/Array#__get (; 56 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) local.get $1 local.get $0 i32.load offset=8 @@ -3574,7 +3518,7 @@ if i32.const 0 i32.const 272 - i32.const 100 + i32.const 98 i32.const 61 call $~lib/env/abort unreachable @@ -3587,7 +3531,7 @@ i32.add f32.load ) - (func $start:std/array~anonymous|22 (; 60 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|22 (; 57 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 i32.const 100 call $~lib/array/Array#push @@ -3597,7 +3541,7 @@ global.set $std/array/i local.get $0 ) - (func $~lib/array/Array#map (; 61 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#map (; 58 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3609,7 +3553,7 @@ i32.const 0 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.load offset=4 local.set $5 loop $repeat|0 @@ -3652,14 +3596,14 @@ end end ) - (func $start:std/array~anonymous|23 (; 62 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|23 (; 59 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) global.get $std/array/i local.get $0 i32.add global.set $std/array/i local.get $0 ) - (func $start:std/array~anonymous|24 (; 63 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|24 (; 60 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/array/Array#pop drop @@ -3669,12 +3613,12 @@ global.set $std/array/i local.get $0 ) - (func $start:std/array~anonymous|25 (; 64 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|25 (; 61 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 2 i32.ge_s ) - (func $~lib/array/Array#filter (; 65 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#filter (; 62 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3683,7 +3627,7 @@ i32.const 0 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray local.set $4 local.get $0 i32.load offset=12 @@ -3730,7 +3674,7 @@ end local.get $4 ) - (func $start:std/array~anonymous|26 (; 66 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|26 (; 63 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 i32.const 100 call $~lib/array/Array#push @@ -3742,7 +3686,7 @@ i32.const 2 i32.ge_s ) - (func $start:std/array~anonymous|27 (; 67 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|27 (; 64 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) global.get $std/array/i local.get $0 i32.add @@ -3751,7 +3695,7 @@ i32.const 2 i32.ge_s ) - (func $start:std/array~anonymous|28 (; 68 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|28 (; 65 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/array/Array#pop drop @@ -3763,12 +3707,12 @@ i32.const 2 i32.ge_s ) - (func $start:std/array~anonymous|29 (; 69 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|29 (; 66 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $~lib/array/Array#reduce (; 70 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#reduce (; 67 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3812,7 +3756,7 @@ end local.get $2 ) - (func $start:std/array~anonymous|31 (; 71 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|31 (; 68 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 i32.eqz if @@ -3823,7 +3767,7 @@ end local.get $0 ) - (func $start:std/array~anonymous|32 (; 72 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|32 (; 69 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 i32.eqz if @@ -3834,7 +3778,7 @@ end local.get $0 ) - (func $start:std/array~anonymous|33 (; 73 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|33 (; 70 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $3 i32.const 1 call $~lib/array/Array#push @@ -3842,7 +3786,7 @@ local.get $1 i32.add ) - (func $start:std/array~anonymous|35 (; 74 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|35 (; 71 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $3 call $~lib/array/Array#pop drop @@ -3850,7 +3794,7 @@ local.get $1 i32.add ) - (func $~lib/array/Array#reduceRight (; 75 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#reduceRight (; 72 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load offset=12 @@ -3887,7 +3831,7 @@ end local.get $2 ) - (func $~lib/math/splitMix32 (; 76 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/math/splitMix32 (; 73 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 1831565813 i32.add @@ -3919,7 +3863,7 @@ i32.shr_u i32.xor ) - (func $~lib/math/NativeMath.seedRandom (; 77 ;) (type $FUNCSIG$vj) (param $0 i64) + (func $~lib/math/NativeMath.seedRandom (; 74 ;) (type $FUNCSIG$vj) (param $0 i64) (local $1 i64) local.get $0 i64.eqz @@ -3984,7 +3928,7 @@ call $~lib/math/splitMix32 global.set $~lib/math/random_state1_32 ) - (func $~lib/util/sort/insertionSort (; 78 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort (; 75 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 f32) @@ -4066,7 +4010,7 @@ unreachable end ) - (func $~lib/util/sort/weakHeapSort (; 79 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/weakHeapSort (; 76 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4322,7 +4266,7 @@ local.get $6 f32.store ) - (func $~lib/array/Array#sort (; 80 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#sort (; 77 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 f32) (local $4 f32) @@ -4331,7 +4275,7 @@ if i32.const 0 i32.const 272 - i32.const 418 + i32.const 525 i32.const 4 call $~lib/env/abort unreachable @@ -4390,7 +4334,7 @@ call $~lib/util/sort/weakHeapSort end ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 81 ;) (type $FUNCSIG$iff) (param $0 f32) (param $1 f32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 78 ;) (type $FUNCSIG$iff) (param $0 f32) (param $1 f32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -4419,7 +4363,7 @@ i32.lt_s i32.sub ) - (func $std/array/isArraysEqual (; 82 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isArraysEqual (; 79 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 f32) (local $4 i32) @@ -4480,7 +4424,7 @@ end i32.const 1 ) - (func $~lib/util/sort/insertionSort (; 83 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort (; 80 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 f64) @@ -4562,7 +4506,7 @@ unreachable end ) - (func $~lib/util/sort/weakHeapSort (; 84 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/weakHeapSort (; 81 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4818,7 +4762,7 @@ local.get $6 f64.store ) - (func $~lib/array/Array#sort (; 85 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#sort (; 82 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 f64) (local $4 f64) @@ -4827,7 +4771,7 @@ if i32.const 0 i32.const 272 - i32.const 418 + i32.const 525 i32.const 4 call $~lib/env/abort unreachable @@ -4886,7 +4830,7 @@ call $~lib/util/sort/weakHeapSort end ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 86 ;) (type $FUNCSIG$idd) (param $0 f64) (param $1 f64) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 83 ;) (type $FUNCSIG$idd) (param $0 f64) (param $1 f64) (result i32) (local $2 i64) (local $3 i64) local.get $0 @@ -4915,7 +4859,7 @@ i64.lt_s i32.sub ) - (func $~lib/array/Array#__get (; 87 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/array/Array#__get (; 84 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) local.get $1 local.get $0 i32.load offset=8 @@ -4925,7 +4869,7 @@ if i32.const 0 i32.const 272 - i32.const 100 + i32.const 98 i32.const 61 call $~lib/env/abort unreachable @@ -4938,7 +4882,7 @@ i32.add f64.load ) - (func $std/array/isArraysEqual (; 88 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isArraysEqual (; 85 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 f64) (local $4 i32) @@ -4999,7 +4943,7 @@ end i32.const 1 ) - (func $~lib/util/sort/insertionSort (; 89 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort (; 86 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5081,7 +5025,7 @@ unreachable end ) - (func $~lib/util/sort/weakHeapSort (; 90 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/weakHeapSort (; 87 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5337,7 +5281,7 @@ local.get $1 i32.store ) - (func $~lib/array/Array#sort (; 91 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (; 88 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5346,7 +5290,7 @@ if i32.const 0 i32.const 272 - i32.const 418 + i32.const 525 i32.const 4 call $~lib/env/abort unreachable @@ -5410,12 +5354,12 @@ end local.get $0 ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 92 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 89 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 i32.sub ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 93 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 90 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 i32.gt_u @@ -5424,14 +5368,14 @@ i32.lt_u i32.sub ) - (func $~lib/array/Array.create (; 94 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array.create (; 91 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 268435452 i32.gt_u if i32.const 0 i32.const 272 - i32.const 44 + i32.const 43 i32.const 62 call $~lib/env/abort unreachable @@ -5440,7 +5384,7 @@ i32.const 0 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray local.tee $0 i32.load offset=4 i32.const 0 @@ -5452,7 +5396,7 @@ i32.store offset=12 local.get $0 ) - (func $std/array/createReverseOrderedArray (; 95 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/createReverseOrderedArray (; 92 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -5481,7 +5425,7 @@ end local.get $2 ) - (func $~lib/math/NativeMath.random (; 96 ;) (type $FUNCSIG$d) (result f64) + (func $~lib/math/NativeMath.random (; 93 ;) (type $FUNCSIG$d) (result f64) (local $0 i64) (local $1 i64) global.get $~lib/math/random_seeded @@ -5528,7 +5472,7 @@ f64.const 1 f64.sub ) - (func $std/array/createRandomOrderedArray (; 97 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/createRandomOrderedArray (; 94 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -5557,7 +5501,7 @@ end local.get $2 ) - (func $std/array/isSorted (; 98 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isSorted (; 95 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) i32.const 1 @@ -5599,7 +5543,7 @@ end i32.const 1 ) - (func $std/array/assertSorted (; 99 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted (; 96 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 local.get $1 call $~lib/array/Array#sort @@ -5615,23 +5559,23 @@ unreachable end ) - (func $std/array/assertSortedDefault (; 100 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $std/array/assertSortedDefault (; 97 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 48 call $std/array/assertSorted ) - (func $start:std/array~anonymous|44 (; 101 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|44 (; 98 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.sub ) - (func $~lib/array/Array.create> (; 102 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/array/Array.create> (; 99 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 512 i32.const 0 i32.const 11 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray local.tee $0 i32.load offset=4 i32.const 0 @@ -5643,19 +5587,18 @@ i32.store offset=12 local.get $0 ) - (func $~lib/array/Array>#__set (; 103 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array>#__set (; 100 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) local.get $1 local.get $0 i32.load offset=12 - local.tee $4 + local.tee $3 i32.gt_u if i32.const 0 i32.const 272 - i32.const 109 + i32.const 110 i32.const 38 call $~lib/env/abort unreachable @@ -5671,27 +5614,17 @@ i32.const 2 i32.shl i32.add - local.tee $5 + local.tee $4 i32.load - local.tee $3 local.get $2 i32.ne if - local.get $3 - if - local.get $3 - local.get $0 - call $~lib/runtime/doRetain - end - local.get $2 - local.get $0 - call $~lib/runtime/doRetain - local.get $5 + local.get $4 local.get $2 i32.store end local.get $1 - local.get $4 + local.get $3 i32.ge_s if local.get $0 @@ -5701,7 +5634,7 @@ i32.store offset=12 end ) - (func $std/array/createReverseOrderedNestedArray (; 104 ;) (type $FUNCSIG$i) (result i32) + (func $std/array/createReverseOrderedNestedArray (; 101 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -5733,7 +5666,7 @@ end local.get $1 ) - (func $start:std/array~anonymous|47 (; 105 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|47 (; 102 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.const 0 call $~lib/array/Array#__get @@ -5742,7 +5675,7 @@ call $~lib/array/Array#__get i32.sub ) - (func $~lib/array/Array>#sort (; 106 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#sort (; 103 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5751,7 +5684,7 @@ if i32.const 0 i32.const 272 - i32.const 418 + i32.const 525 i32.const 4 call $~lib/env/abort unreachable @@ -5803,7 +5736,7 @@ call $~lib/util/sort/insertionSort local.get $0 ) - (func $~lib/array/Array>#__get (; 107 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#__get (; 104 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -5811,7 +5744,7 @@ if i32.const 0 i32.const 272 - i32.const 97 + i32.const 95 i32.const 45 call $~lib/env/abort unreachable @@ -5825,7 +5758,7 @@ if i32.const 0 i32.const 272 - i32.const 100 + i32.const 98 i32.const 61 call $~lib/env/abort unreachable @@ -5838,7 +5771,7 @@ i32.add i32.load ) - (func $std/array/isSorted> (; 108 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isSorted> (; 105 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) i32.const 1 @@ -5880,7 +5813,7 @@ end i32.const 1 ) - (func $std/array/assertSorted> (; 109 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted> (; 106 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 local.get $1 call $~lib/array/Array>#sort @@ -5896,13 +5829,13 @@ unreachable end ) - (func $~lib/array/Array.create> (; 110 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/array/Array.create> (; 107 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 512 i32.const 0 i32.const 12 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray local.tee $0 i32.load offset=4 i32.const 0 @@ -5914,7 +5847,7 @@ i32.store offset=12 local.get $0 ) - (func $std/array/createReverseOrderedElementsArray (; 111 ;) (type $FUNCSIG$i) (result i32) + (func $std/array/createReverseOrderedElementsArray (; 108 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -5926,9 +5859,9 @@ i32.lt_s if i32.const 4 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 13 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $2 i32.const 511 local.get $0 @@ -5947,14 +5880,14 @@ end local.get $1 ) - (func $start:std/array~anonymous|48 (; 112 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|48 (; 109 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load local.get $1 i32.load i32.sub ) - (func $~lib/util/string/compareImpl (; 113 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/compareImpl (; 110 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) loop $continue|0 local.get $2 @@ -5987,7 +5920,7 @@ end local.get $3 ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 114 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 111 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6064,7 +5997,7 @@ select call $~lib/util/string/compareImpl ) - (func $std/array/assertSorted|trampoline (; 115 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $std/array/assertSorted|trampoline (; 112 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) block $1of1 block $0of1 @@ -6081,9 +6014,20 @@ end local.get $0 local.get $1 - call $std/array/assertSorted> + call $~lib/array/Array>#sort + local.get $1 + call $std/array/isSorted + i32.eqz + if + i32.const 0 + i32.const 152 + i32.const 814 + i32.const 2 + call $~lib/env/abort + unreachable + end ) - (func $~lib/string/String.__eq (; 116 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 113 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -6129,7 +6073,7 @@ call $~lib/util/string/compareImpl i32.eqz ) - (func $std/array/isArraysEqual (; 117 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isArraysEqual (; 114 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -6156,10 +6100,10 @@ if local.get $0 local.get $2 - call $~lib/array/Array>#__get + call $~lib/array/Array#__get local.get $1 local.get $2 - call $~lib/array/Array>#__get + call $~lib/array/Array#__get call $~lib/string/String.__eq if local.get $2 @@ -6176,13 +6120,13 @@ end i32.const 1 ) - (func $~lib/array/Array.create (; 118 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/array/Array.create (; 115 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 400 i32.const 0 - i32.const 14 + i32.const 15 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray local.tee $0 i32.load offset=4 i32.const 0 @@ -6194,7 +6138,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/string/String#charAt (; 119 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String#charAt (; 116 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 3020 @@ -6207,7 +6151,7 @@ return end i32.const 2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.tee $1 local.get $0 i32.const 1 @@ -6218,9 +6162,9 @@ i32.store16 local.get $1 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register ) - (func $~lib/string/String#concat (; 120 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 117 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6254,7 +6198,7 @@ return end local.get $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.tee $2 local.get $0 local.get $3 @@ -6267,9 +6211,9 @@ call $~lib/memory/memory.copy local.get $2 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register ) - (func $~lib/string/String.__concat (; 121 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 118 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.const 4424 local.get $0 @@ -6277,7 +6221,7 @@ local.get $1 call $~lib/string/String#concat ) - (func $std/array/createRandomString (; 122 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/createRandomString (; 119 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) i32.const 4200 @@ -6309,7 +6253,7 @@ end local.get $1 ) - (func $std/array/createRandomStringArray (; 123 ;) (type $FUNCSIG$i) (result i32) + (func $std/array/createRandomStringArray (; 120 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) (local $1 i32) call $~lib/array/Array.create @@ -6336,7 +6280,7 @@ end local.get $1 ) - (func $~lib/string/String#substring (; 124 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#substring (; 121 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6345,7 +6289,7 @@ if i32.const 0 i32.const 4376 - i32.const 187 + i32.const 189 i32.const 4 call $~lib/env/abort unreachable @@ -6423,7 +6367,7 @@ return end local.get $3 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.tee $2 local.get $0 local.get $4 @@ -6432,9 +6376,36 @@ call $~lib/memory/memory.copy local.get $2 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register ) - (func $~lib/array/Array#join_bool (; 125 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/discard (; 122 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + i32.const 8060 + i32.le_u + if + i32.const 0 + i32.const 24 + i32.const 185 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.const 16 + i32.sub + i32.load + i32.const -1520547049 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 187 + i32.const 4 + call $~lib/env/abort + unreachable + end + ) + (func $~lib/array/Array#join_bool (; 123 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6481,7 +6452,7 @@ local.tee $7 i32.const 1 i32.shl - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.set $2 i32.const 0 local.set $0 @@ -6578,15 +6549,15 @@ call $~lib/string/String#substring local.set $0 local.get $2 - call $~lib/runtime/assertUnregistered + call $~lib/runtime/discard local.get $0 return end local.get $2 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register ) - (func $~lib/util/number/decimalCount32 (; 126 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 124 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 100000 i32.lt_u @@ -6640,7 +6611,7 @@ end end ) - (func $~lib/util/number/utoa32_lut (; 127 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa32_lut (; 125 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) i32.const 5092 @@ -6750,7 +6721,7 @@ i32.store16 end ) - (func $~lib/util/number/itoa32 (; 128 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 126 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6777,7 +6748,7 @@ local.tee $3 i32.const 1 i32.shl - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.tee $2 local.get $0 local.get $3 @@ -6790,9 +6761,9 @@ end local.get $2 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register ) - (func $~lib/util/number/itoa_stream (; 129 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 127 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 i32.const 1 i32.shl @@ -6836,7 +6807,7 @@ end local.get $2 ) - (func $~lib/array/Array#join_int (; 130 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_int (; 128 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6881,7 +6852,7 @@ local.tee $7 i32.const 1 i32.shl - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.set $3 i32.const 0 local.set $0 @@ -6946,20 +6917,20 @@ call $~lib/string/String#substring local.set $0 local.get $3 - call $~lib/runtime/assertUnregistered + call $~lib/runtime/discard local.get $0 return end local.get $3 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register ) - (func $~lib/array/Array#join (; 131 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 129 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array#join_int ) - (func $~lib/util/number/utoa32 (; 132 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/utoa32 (; 130 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -6973,16 +6944,16 @@ local.tee $1 i32.const 1 i32.shl - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.tee $2 local.get $0 local.get $1 call $~lib/util/number/utoa32_lut local.get $2 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register ) - (func $~lib/util/number/itoa_stream (; 133 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 131 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 i32.const 1 i32.shl @@ -7006,7 +6977,7 @@ call $~lib/util/number/utoa32_lut local.get $0 ) - (func $~lib/array/Array#join_int (; 134 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_int (; 132 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7051,7 +7022,7 @@ local.tee $7 i32.const 1 i32.shl - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.set $3 i32.const 0 local.set $0 @@ -7116,20 +7087,20 @@ call $~lib/string/String#substring local.set $0 local.get $3 - call $~lib/runtime/assertUnregistered + call $~lib/runtime/discard local.get $0 return end local.get $3 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register ) - (func $~lib/array/Array#join (; 135 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 133 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array#join_int ) - (func $~lib/util/number/genDigits (; 136 ;) (type $FUNCSIG$iijijiji) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) + (func $~lib/util/number/genDigits (; 134 ;) (type $FUNCSIG$iijijiji) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) (local $7 i32) (local $8 i64) (local $9 i32) @@ -7540,7 +7511,7 @@ local.get $2 end ) - (func $~lib/util/number/prettify (; 137 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 135 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7802,14 +7773,14 @@ end end ) - (func $~lib/util/number/dtoa_core (; 138 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/util/number/dtoa_core (; 136 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 i64) (local $3 i32) (local $4 i64) - (local $5 i64) + (local $5 i32) (local $6 i64) (local $7 i32) - (local $8 i32) + (local $8 i64) (local $9 i64) (local $10 i64) (local $11 i32) @@ -7819,15 +7790,15 @@ f64.const 0 f64.lt local.tee $11 - if (result f64) + if local.get $0 i32.const 45 i32.store16 local.get $1 f64.neg - else - local.get $1 + local.set $1 end + local.get $1 i64.reinterpret_f64 local.tee $2 i64.const 9218868437227405312 @@ -7835,14 +7806,14 @@ i64.const 52 i64.shr_u i32.wrap_i64 + local.tee $5 + i32.const 0 + i32.ne local.set $7 local.get $2 i64.const 4503599627370495 i64.and local.get $7 - i32.const 0 - i32.ne - local.tee $8 i64.extend_i32_u i64.const 52 i64.shl @@ -7852,43 +7823,43 @@ i64.shl i64.const 1 i64.add - local.tee $5 + local.tee $8 i64.clz i32.wrap_i64 local.set $3 - local.get $5 + local.get $8 local.get $3 i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_plus - local.get $7 + local.get $5 i32.const 1 - local.get $8 + local.get $7 select i32.const 1075 i32.sub - local.tee $7 - i32.const 1 - i32.sub - local.get $3 - i32.sub - local.set $3 + local.set $5 local.get $2 local.get $2 i64.const 4503599627370496 i64.eq i32.const 1 i32.add - local.tee $8 + local.tee $7 i64.extend_i32_s i64.shl i64.const 1 i64.sub + local.get $5 local.get $7 - local.get $8 + i32.sub + local.get $5 + i32.const 1 i32.sub local.get $3 i32.sub + local.tee $3 + i32.sub i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_minus @@ -7918,12 +7889,12 @@ local.tee $3 i32.const 3 i32.shl - local.tee $8 + local.tee $7 i32.sub global.set $~lib/util/number/_K i32.const 6332 i32.load - local.get $8 + local.get $7 i32.add i64.load global.set $~lib/util/number/_frc_pow @@ -7935,6 +7906,16 @@ i32.add i32.load16_s global.set $~lib/util/number/_exp_pow + global.get $~lib/util/number/_frc_pow + local.tee $8 + i64.const 4294967295 + i64.and + local.set $4 + local.get $8 + i64.const 32 + i64.shr_u + local.tee $12 + local.tee $6 local.get $2 local.get $2 i64.clz @@ -7946,30 +7927,20 @@ i64.const 4294967295 i64.and local.tee $9 - global.get $~lib/util/number/_frc_pow - local.tee $5 - i64.const 4294967295 - i64.and - local.tee $10 - i64.mul - local.set $4 - local.get $5 - i64.const 32 - i64.shr_u - local.tee $6 - local.get $9 i64.mul + local.get $4 local.get $2 i64.const 32 i64.shr_u local.tee $2 - local.get $10 i64.mul local.get $4 + local.get $9 + i64.mul i64.const 32 i64.shr_u i64.add - local.tee $4 + local.tee $10 i64.const 4294967295 i64.and i64.add @@ -7980,36 +7951,30 @@ local.get $2 local.get $6 i64.mul - local.get $4 + local.get $10 i64.const 32 i64.shr_u i64.add i64.add local.set $13 - local.get $5 - i64.const 4294967295 - i64.and - local.tee $2 global.get $~lib/util/number/_frc_plus - local.tee $4 + local.tee $10 i64.const 4294967295 i64.and local.tee $6 - i64.mul - local.set $12 - local.get $6 - local.get $5 - i64.const 32 - i64.shr_u + local.get $12 local.tee $9 i64.mul - local.get $2 local.get $4 + local.tee $2 + local.get $10 i64.const 32 i64.shr_u - local.tee $10 + local.tee $4 + i64.mul + local.get $2 + local.get $6 i64.mul - local.get $12 i64.const 32 i64.shr_u i64.add @@ -8021,8 +7986,8 @@ i64.add i64.const 32 i64.shr_u + local.get $4 local.get $9 - local.get $10 i64.mul local.get $2 i64.const 32 @@ -8030,39 +7995,61 @@ i64.add i64.add local.set $6 - global.get $~lib/util/number/_frc_minus - local.tee $12 - i64.const 4294967295 - i64.and - local.tee $9 - local.get $5 + local.get $8 local.tee $2 i64.const 4294967295 i64.and - local.tee $10 - i64.mul local.set $4 + local.get $5 + local.get $3 + i32.sub + local.set $5 + local.get $11 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $0 + local.get $13 + local.get $5 + global.get $~lib/util/number/_exp_pow + local.tee $3 + i32.add + i32.const -64 + i32.sub local.get $6 i64.const 1 i64.sub - local.tee $5 + local.tee $8 + global.get $~lib/util/number/_exp + local.get $3 + i32.add + i32.const -64 + i32.sub + local.get $8 local.get $2 i64.const 32 i64.shr_u local.tee $6 - local.get $9 + global.get $~lib/util/number/_frc_minus + local.tee $2 + i64.const 4294967295 + i64.and + local.tee $9 i64.mul - local.get $12 + local.get $4 + local.get $2 i64.const 32 i64.shr_u local.tee $2 - local.get $10 i64.mul local.get $4 + local.get $9 + i64.mul i64.const 32 i64.shr_u i64.add - local.tee $4 + local.tee $10 i64.const 4294967295 i64.and i64.add @@ -8073,7 +8060,7 @@ local.get $2 local.get $6 i64.mul - local.get $4 + local.get $10 i64.const 32 i64.shr_u i64.add @@ -8081,29 +8068,6 @@ i64.const 1 i64.add i64.sub - local.set $4 - local.get $11 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $0 - local.get $13 - local.get $7 - local.get $3 - i32.sub - global.get $~lib/util/number/_exp_pow - local.tee $3 - i32.add - i32.const -64 - i32.sub - local.get $5 - global.get $~lib/util/number/_exp - local.get $3 - i32.add - i32.const -64 - i32.sub - local.get $4 local.get $11 call $~lib/util/number/genDigits local.get $11 @@ -8113,7 +8077,7 @@ local.get $11 i32.add ) - (func $~lib/util/number/dtoa (; 139 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/util/number/dtoa (; 137 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -8145,7 +8109,7 @@ return end i32.const 56 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.tee $2 local.get $0 call $~lib/util/number/dtoa_core @@ -8155,10 +8119,10 @@ call $~lib/string/String#substring local.set $1 local.get $2 - call $~lib/runtime/assertUnregistered + call $~lib/runtime/discard local.get $1 ) - (func $~lib/util/number/dtoa_stream (; 140 ;) (type $FUNCSIG$iiid) (param $0 i32) (param $1 i32) (param $2 f64) (result i32) + (func $~lib/util/number/dtoa_stream (; 138 ;) (type $FUNCSIG$iiid) (param $0 i32) (param $1 i32) (param $2 f64) (result i32) local.get $1 i32.const 1 i32.shl @@ -8227,7 +8191,7 @@ local.get $2 call $~lib/util/number/dtoa_core ) - (func $~lib/array/Array#join_flt (; 141 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#join_flt (; 139 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -8270,7 +8234,7 @@ local.tee $6 i32.const 1 i32.shl - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.set $2 i32.const 0 local.set $0 @@ -8335,15 +8299,15 @@ call $~lib/string/String#substring local.set $0 local.get $2 - call $~lib/runtime/assertUnregistered + call $~lib/runtime/discard local.get $0 return end local.get $2 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register ) - (func $~lib/array/Array#join_str (; 142 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_str (; 140 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8420,7 +8384,7 @@ i32.add i32.const 1 i32.shl - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.set $2 i32.const 0 local.set $0 @@ -8508,20 +8472,20 @@ end local.get $2 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register ) - (func $~lib/array/Array#join (; 143 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 141 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array#join_str ) - (func $std/array/Ref#constructor (; 144 ;) (type $FUNCSIG$i) (result i32) + (func $std/array/Ref#constructor (; 142 ;) (type $FUNCSIG$i) (result i32) i32.const 0 - call $~lib/runtime/doAllocate - i32.const 18 - call $~lib/runtime/doRegister + call $~lib/runtime/allocate + i32.const 19 + call $~lib/runtime/register ) - (func $~lib/array/Array#join_ref (; 145 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#join_ref (; 143 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -8562,7 +8526,7 @@ local.tee $6 i32.const 1 i32.shl - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.set $2 i32.const 0 local.set $0 @@ -8646,20 +8610,20 @@ call $~lib/string/String#substring local.set $0 local.get $2 - call $~lib/runtime/assertUnregistered + call $~lib/runtime/discard local.get $0 return end local.get $2 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register ) - (func $~lib/array/Array#toString (; 146 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 144 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 4528 call $~lib/array/Array#join ) - (func $~lib/util/number/itoa_stream (; 147 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 145 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $1 i32.const 1 @@ -8714,7 +8678,7 @@ end local.get $1 ) - (func $~lib/array/Array#join_int (; 148 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#join_int (; 146 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -8757,7 +8721,7 @@ local.tee $6 i32.const 1 i32.shl - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.set $2 i32.const 0 local.set $0 @@ -8818,15 +8782,15 @@ call $~lib/string/String#substring local.set $0 local.get $2 - call $~lib/runtime/assertUnregistered + call $~lib/runtime/discard local.get $0 return end local.get $2 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register ) - (func $~lib/util/number/itoa_stream (; 149 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 147 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 i32.const 1 i32.shl @@ -8856,7 +8820,7 @@ call $~lib/util/number/utoa32_lut local.get $1 ) - (func $~lib/array/Array#join_int (; 150 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#join_int (; 148 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -8899,7 +8863,7 @@ local.tee $6 i32.const 1 i32.shl - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.set $2 i32.const 0 local.set $0 @@ -8964,15 +8928,15 @@ call $~lib/string/String#substring local.set $0 local.get $2 - call $~lib/runtime/assertUnregistered + call $~lib/runtime/discard local.get $0 return end local.get $2 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register ) - (func $~lib/util/number/decimalCount64 (; 151 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/decimalCount64 (; 149 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) local.get $0 i64.const 1000000000000000 i64.lt_u @@ -9026,7 +8990,7 @@ end end ) - (func $~lib/util/number/utoa64_lut (; 152 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa64_lut (; 150 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -9123,7 +9087,7 @@ local.get $2 call $~lib/util/number/utoa32_lut ) - (func $~lib/util/number/utoa64 (; 153 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/utoa64 (; 151 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9144,7 +9108,7 @@ local.tee $1 i32.const 1 i32.shl - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.tee $2 local.get $3 local.get $1 @@ -9155,7 +9119,7 @@ local.tee $1 i32.const 1 i32.shl - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.tee $2 local.get $0 local.get $1 @@ -9163,9 +9127,9 @@ end local.get $2 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register ) - (func $~lib/util/number/itoa_stream (; 154 ;) (type $FUNCSIG$iiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) + (func $~lib/util/number/itoa_stream (; 152 ;) (type $FUNCSIG$iiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) (local $3 i32) local.get $1 i32.const 1 @@ -9205,7 +9169,7 @@ end local.get $1 ) - (func $~lib/array/Array#join_int (; 155 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#join_int (; 153 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9248,7 +9212,7 @@ local.tee $6 i32.const 1 i32.shl - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.set $2 i32.const 0 local.set $0 @@ -9313,15 +9277,15 @@ call $~lib/string/String#substring local.set $0 local.get $2 - call $~lib/runtime/assertUnregistered + call $~lib/runtime/discard local.get $0 return end local.get $2 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register ) - (func $~lib/util/number/itoa64 (; 156 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa64 (; 154 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9357,7 +9321,7 @@ local.tee $2 i32.const 1 i32.shl - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.tee $3 local.get $4 local.get $2 @@ -9370,7 +9334,7 @@ local.tee $2 i32.const 1 i32.shl - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.tee $3 local.get $0 local.get $2 @@ -9384,9 +9348,9 @@ end local.get $3 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register ) - (func $~lib/util/number/itoa_stream (; 157 ;) (type $FUNCSIG$iiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) + (func $~lib/util/number/itoa_stream (; 155 ;) (type $FUNCSIG$iiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -9449,7 +9413,7 @@ end local.get $1 ) - (func $~lib/array/Array#join_int (; 158 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#join_int (; 156 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9492,7 +9456,7 @@ local.tee $6 i32.const 1 i32.shl - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.set $2 i32.const 0 local.set $0 @@ -9557,20 +9521,20 @@ call $~lib/string/String#substring local.set $0 local.get $2 - call $~lib/runtime/assertUnregistered + call $~lib/runtime/discard local.get $0 return end local.get $2 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register ) - (func $~lib/array/Array#toString (; 159 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 157 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 4528 call $~lib/array/Array#join ) - (func $~lib/array/Array>#join_arr (; 160 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array>#join_arr (; 158 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9663,7 +9627,7 @@ local.get $1 end ) - (func $~lib/util/number/itoa_stream (; 161 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 159 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 i32.const 1 i32.shl @@ -9693,7 +9657,7 @@ call $~lib/util/number/utoa32_lut local.get $1 ) - (func $~lib/array/Array#join_int (; 162 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#join_int (; 160 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9736,7 +9700,7 @@ local.tee $6 i32.const 1 i32.shl - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.set $2 i32.const 0 local.set $0 @@ -9797,15 +9761,15 @@ call $~lib/string/String#substring local.set $0 local.get $2 - call $~lib/runtime/assertUnregistered + call $~lib/runtime/discard local.get $0 return end local.get $2 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register ) - (func $~lib/array/Array>#join_arr (; 163 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array>#join_arr (; 161 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9895,7 +9859,7 @@ local.get $1 end ) - (func $~lib/array/Array>#join_arr (; 164 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array>#join_arr (; 162 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9988,7 +9952,7 @@ local.get $1 end ) - (func $~lib/array/Array>>#join_arr (; 165 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array>>#join_arr (; 163 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10078,12 +10042,10 @@ local.get $1 end ) - (func $start:std/array (; 166 ;) (type $FUNCSIG$v) + (func $start:std/array (; 164 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) i32.const 8064 global.set $~lib/allocator/arena/startOffset global.get $~lib/allocator/arena/startOffset @@ -10113,14 +10075,14 @@ unreachable end i32.const 0 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 5 - call $~lib/runtime/doRegister + call $~lib/runtime/register drop i32.const 12 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 6 - call $~lib/runtime/doRegister + call $~lib/runtime/register i32.const 1 i32.const 0 call $~lib/runtime/ArrayBufferView#constructor @@ -10135,7 +10097,7 @@ i32.const 248 i32.const 7 i32.const 0 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray call $std/array/isArraysEqual i32.eqz if @@ -10156,7 +10118,7 @@ i32.const 320 i32.const 7 i32.const 0 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray call $std/array/isArraysEqual i32.eqz if @@ -10177,7 +10139,7 @@ i32.const 344 i32.const 7 i32.const 0 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray call $std/array/isArraysEqual i32.eqz if @@ -10198,7 +10160,7 @@ i32.const 368 i32.const 7 i32.const 0 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray call $std/array/isArraysEqual i32.eqz if @@ -10219,7 +10181,7 @@ i32.const 392 i32.const 7 i32.const 0 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray call $std/array/isArraysEqual i32.eqz if @@ -10240,7 +10202,7 @@ i32.const 488 i32.const 8 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -10262,7 +10224,7 @@ i32.const 528 i32.const 8 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -10284,7 +10246,7 @@ i32.const 568 i32.const 8 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -10306,7 +10268,7 @@ i32.const 608 i32.const 8 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -10328,7 +10290,7 @@ i32.const 648 i32.const 8 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -10677,7 +10639,7 @@ i32.const 688 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray call $~lib/array/Array#concat drop global.get $std/array/arr @@ -10936,7 +10898,7 @@ i32.const 752 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray global.set $std/array/cwArr global.get $std/array/cwArr i32.const 0 @@ -10947,7 +10909,7 @@ i32.const 792 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -10963,7 +10925,7 @@ i32.const 832 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray global.set $std/array/cwArr global.get $std/array/cwArr i32.const 1 @@ -10974,7 +10936,7 @@ i32.const 872 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -10990,7 +10952,7 @@ i32.const 912 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray global.set $std/array/cwArr global.get $std/array/cwArr i32.const 1 @@ -11001,7 +10963,7 @@ i32.const 952 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11017,7 +10979,7 @@ i32.const 992 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray global.set $std/array/cwArr global.get $std/array/cwArr i32.const 2 @@ -11028,7 +10990,7 @@ i32.const 1032 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11044,7 +11006,7 @@ i32.const 1072 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray global.set $std/array/cwArr global.get $std/array/cwArr i32.const 0 @@ -11055,7 +11017,7 @@ i32.const 1112 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11071,7 +11033,7 @@ i32.const 1152 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray global.set $std/array/cwArr global.get $std/array/cwArr i32.const 1 @@ -11082,7 +11044,7 @@ i32.const 1192 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11098,7 +11060,7 @@ i32.const 1232 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray global.set $std/array/cwArr global.get $std/array/cwArr i32.const 1 @@ -11109,7 +11071,7 @@ i32.const 1272 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11125,7 +11087,7 @@ i32.const 1312 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray global.set $std/array/cwArr global.get $std/array/cwArr i32.const 0 @@ -11136,7 +11098,7 @@ i32.const 1352 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11152,7 +11114,7 @@ i32.const 1392 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray global.set $std/array/cwArr global.get $std/array/cwArr i32.const 0 @@ -11163,7 +11125,7 @@ i32.const 1432 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11179,7 +11141,7 @@ i32.const 1472 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray global.set $std/array/cwArr global.get $std/array/cwArr i32.const -4 @@ -11190,7 +11152,7 @@ i32.const 1512 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11206,7 +11168,7 @@ i32.const 1552 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray global.set $std/array/cwArr global.get $std/array/cwArr i32.const -4 @@ -11217,7 +11179,7 @@ i32.const 1592 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11233,7 +11195,7 @@ i32.const 1632 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray global.set $std/array/cwArr global.get $std/array/cwArr i32.const -4 @@ -11244,7 +11206,7 @@ i32.const 1672 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12072,7 +12034,7 @@ i32.const 1784 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12089,7 +12051,7 @@ i32.const 1824 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12105,7 +12067,7 @@ i32.const 1840 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray global.set $std/array/sarr global.get $std/array/sarr i32.const 2 @@ -12115,7 +12077,7 @@ i32.const 1880 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12132,7 +12094,7 @@ i32.const 1912 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12148,7 +12110,7 @@ i32.const 1936 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray global.set $std/array/sarr global.get $std/array/sarr i32.const 2 @@ -12158,7 +12120,7 @@ i32.const 1976 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12175,7 +12137,7 @@ i32.const 2000 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12191,7 +12153,7 @@ i32.const 2032 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray global.set $std/array/sarr global.get $std/array/sarr i32.const 0 @@ -12201,7 +12163,7 @@ i32.const 2072 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12218,7 +12180,7 @@ i32.const 2096 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12234,7 +12196,7 @@ i32.const 2128 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray global.set $std/array/sarr global.get $std/array/sarr i32.const -1 @@ -12244,7 +12206,7 @@ i32.const 2168 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12261,7 +12223,7 @@ i32.const 2192 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12277,7 +12239,7 @@ i32.const 2224 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray global.set $std/array/sarr global.get $std/array/sarr i32.const -2 @@ -12287,7 +12249,7 @@ i32.const 2264 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12304,7 +12266,7 @@ i32.const 2288 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12320,7 +12282,7 @@ i32.const 2320 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray global.set $std/array/sarr global.get $std/array/sarr i32.const -2 @@ -12330,7 +12292,7 @@ i32.const 2360 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12347,7 +12309,7 @@ i32.const 2384 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12363,7 +12325,7 @@ i32.const 2416 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray global.set $std/array/sarr global.get $std/array/sarr i32.const -7 @@ -12373,7 +12335,7 @@ i32.const 2456 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12390,7 +12352,7 @@ i32.const 2480 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12406,7 +12368,7 @@ i32.const 2512 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray global.set $std/array/sarr global.get $std/array/sarr i32.const -2 @@ -12416,7 +12378,7 @@ i32.const 2552 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12433,7 +12395,7 @@ i32.const 2568 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12449,7 +12411,7 @@ i32.const 2608 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray global.set $std/array/sarr global.get $std/array/sarr i32.const 1 @@ -12459,7 +12421,7 @@ i32.const 2648 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12476,7 +12438,7 @@ i32.const 2664 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12492,7 +12454,7 @@ i32.const 2704 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray global.set $std/array/sarr global.get $std/array/sarr i32.const 4 @@ -12502,7 +12464,7 @@ i32.const 2744 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12519,7 +12481,7 @@ i32.const 2760 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12535,7 +12497,7 @@ i32.const 2800 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray global.set $std/array/sarr global.get $std/array/sarr i32.const 7 @@ -12545,7 +12507,7 @@ i32.const 2840 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12562,7 +12524,7 @@ i32.const 2856 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12578,7 +12540,7 @@ i32.const 2896 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray global.set $std/array/sarr global.get $std/array/sarr i32.const 7 @@ -12588,7 +12550,7 @@ i32.const 2936 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12605,7 +12567,7 @@ i32.const 2952 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13709,7 +13671,7 @@ i32.const 3304 i32.const 9 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray call $std/array/isArraysEqual i32.eqz if @@ -13745,7 +13707,7 @@ i32.const 3464 i32.const 10 i32.const 3 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray call $std/array/isArraysEqual i32.eqz if @@ -13782,7 +13744,7 @@ i32.const 3616 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13820,7 +13782,7 @@ i32.const 3728 i32.const 8 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13856,7 +13818,7 @@ i32.const 4056 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13875,7 +13837,7 @@ i32.const 4080 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13995,10 +13957,10 @@ i32.const 1 global.set $~lib/argc global.get $std/array/randomStringsActual - call $std/array/assertSorted|trampoline + call $std/array/assertSorted|trampoline global.get $std/array/randomStringsActual global.get $std/array/randomStringsExpected - call $std/array/isArraysEqual + call $std/array/isArraysEqual i32.eqz if i32.const 0 @@ -14013,12 +13975,30 @@ i32.const 1 global.set $~lib/argc global.get $std/array/randomStrings400 - call $std/array/assertSorted|trampoline + local.set $1 + i32.const 0 + local.set $0 + block $1of152 + block $0of153 + block $outOfRange54 + global.get $~lib/argc + i32.const 1 + i32.sub + br_table $0of153 $1of152 $outOfRange54 + end + unreachable + end + i32.const 56 + local.set $0 + end + local.get $1 + local.get $0 + call $std/array/assertSorted> i32.const 2 i32.const 4552 - i32.const 15 + i32.const 16 i32.const 0 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray call $~lib/array/Array#join_bool i32.const 4576 call $~lib/string/String.__eq @@ -14035,7 +14015,7 @@ i32.const 5120 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 4200 call $~lib/array/Array#join i32.const 5152 @@ -14053,7 +14033,7 @@ i32.const 5240 i32.const 8 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 5216 call $~lib/array/Array#join i32.const 5152 @@ -14071,7 +14051,7 @@ i32.const 5320 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 5296 call $~lib/array/Array#join i32.const 5344 @@ -14089,7 +14069,7 @@ i32.const 6672 i32.const 10 i32.const 3 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray call $~lib/array/Array#join_flt i32.const 6736 call $~lib/string/String.__eq @@ -14104,9 +14084,9 @@ end i32.const 3 i32.const 6888 - i32.const 14 + i32.const 15 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray i32.const 4200 call $~lib/array/Array#join i32.const 6832 @@ -14122,35 +14102,19 @@ end i32.const 3 i32.const 0 - i32.const 19 + i32.const 20 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray local.tee $0 i32.load offset=4 - local.tee $2 - local.set $3 - call $std/array/Ref#constructor local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/runtime/doRetain - end - local.get $3 - local.get $1 + call $std/array/Ref#constructor i32.store - local.get $2 + local.get $1 i32.const 0 i32.store offset=4 - call $std/array/Ref#constructor - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/runtime/doRetain - end - local.get $2 local.get $1 + call $std/array/Ref#constructor i32.store offset=8 local.get $0 global.set $std/array/refArr @@ -14221,9 +14185,9 @@ end i32.const 3 i32.const 7128 - i32.const 20 + i32.const 21 i32.const 0 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray call $~lib/array/Array#join_int i32.const 7152 call $~lib/string/String.__eq @@ -14238,9 +14202,9 @@ end i32.const 3 i32.const 7208 - i32.const 21 + i32.const 22 i32.const 1 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray call $~lib/array/Array#join_int i32.const 7232 call $~lib/string/String.__eq @@ -14255,9 +14219,9 @@ end i32.const 3 i32.const 7312 - i32.const 16 + i32.const 17 i32.const 3 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray call $~lib/array/Array#join_int i32.const 7352 call $~lib/string/String.__eq @@ -14272,9 +14236,9 @@ end i32.const 4 i32.const 7464 - i32.const 22 + i32.const 23 i32.const 3 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray call $~lib/array/Array#join_int i32.const 7512 call $~lib/string/String.__eq @@ -14288,7 +14252,7 @@ unreachable end global.get $std/array/randomStringsExpected - call $~lib/array/Array#toString + call $~lib/array/Array#toString i32.const 7616 call $~lib/string/String.__eq i32.eqz @@ -14302,10 +14266,10 @@ end i32.const 4 i32.const 7744 - i32.const 14 + i32.const 15 i32.const 2 - call $~lib/runtime/doMakeArray - call $~lib/array/Array#toString + call $~lib/runtime/makeArray + call $~lib/array/Array#toString i32.const 7776 call $~lib/string/String.__eq i32.eqz @@ -14321,31 +14285,22 @@ i32.const 0 i32.const 11 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray local.tee $0 i32.load offset=4 - local.set $2 + local.tee $1 i32.const 2 i32.const 7832 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray - local.tee $1 - local.get $0 - call $~lib/runtime/doRetain - local.get $2 - local.get $1 + call $~lib/runtime/makeArray i32.store + local.get $1 i32.const 2 i32.const 7856 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray - local.tee $3 - local.get $0 - call $~lib/runtime/doRetain - local.get $2 - local.get $3 + call $~lib/runtime/makeArray i32.store offset=4 local.get $0 global.set $std/array/subarr32 @@ -14364,33 +14319,24 @@ end i32.const 2 i32.const 0 - i32.const 23 + i32.const 24 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray local.tee $0 i32.load offset=4 - local.set $2 + local.tee $1 i32.const 2 i32.const 7936 i32.const 7 i32.const 0 - call $~lib/runtime/doMakeArray - local.tee $3 - local.get $0 - call $~lib/runtime/doRetain - local.get $2 - local.get $3 + call $~lib/runtime/makeArray i32.store + local.get $1 i32.const 2 i32.const 7960 i32.const 7 i32.const 0 - call $~lib/runtime/doMakeArray - local.tee $1 - local.get $0 - call $~lib/runtime/doRetain - local.get $2 - local.get $1 + call $~lib/runtime/makeArray i32.store offset=4 local.get $0 global.set $std/array/subarr8 @@ -14409,38 +14355,29 @@ end i32.const 1 i32.const 0 - i32.const 25 + i32.const 26 i32.const 2 - call $~lib/runtime/doMakeArray - local.tee $2 + call $~lib/runtime/makeArray + local.tee $1 i32.load offset=4 local.set $0 i32.const 1 i32.const 0 - i32.const 24 + i32.const 25 i32.const 2 - call $~lib/runtime/doMakeArray - local.tee $1 + call $~lib/runtime/makeArray + local.tee $2 i32.load offset=4 - local.set $3 i32.const 1 i32.const 8056 i32.const 8 i32.const 2 - call $~lib/runtime/doMakeArray - local.tee $4 - local.get $1 - call $~lib/runtime/doRetain - local.get $3 - local.get $4 + call $~lib/runtime/makeArray i32.store - local.get $1 - local.get $2 - call $~lib/runtime/doRetain local.get $0 - local.get $1 - i32.store local.get $2 + i32.store + local.get $1 global.set $std/array/subarrU32 global.get $std/array/subarrU32 call $~lib/array/Array>>#join_arr @@ -14456,7 +14393,7 @@ unreachable end ) - (func $std/array/main (; 167 ;) (type $FUNCSIG$v) + (func $std/array/main (; 165 ;) (type $FUNCSIG$v) global.get $~lib/started i32.eqz if @@ -14465,7 +14402,7 @@ global.set $~lib/started end ) - (func $null (; 168 ;) (type $FUNCSIG$v) + (func $null (; 166 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/array.ts b/tests/compiler/std/array.ts index b72b3055..6306cbef 100644 --- a/tests/compiler/std/array.ts +++ b/tests/compiler/std/array.ts @@ -901,8 +901,8 @@ assertSorted>(reversedElements512, (a: Proxy, b: Proxy): i3 var randomStringsActual: (string | null)[] = ["a", "b", "a", "ab", "ba", "", null]; var randomStringsExpected: (string | null)[] = ["", "a", "a", "ab", "b", "ba", null]; -assertSorted(randomStringsActual); -assert(isArraysEqual(randomStringsActual, randomStringsExpected)); +assertSorted(randomStringsActual); +assert(isArraysEqual(randomStringsActual, randomStringsExpected)); var randomStrings400 = createRandomStringArray(400); assertSorted(randomStrings400); diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index e0b4592a..bdfc3fb5 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -19,6 +19,7 @@ (type $FUNCSIG$id (func (param f64) (result i32))) (type $FUNCSIG$iiiiii (func (param i32 i32 i32 i32 i32) (result i32))) (type $FUNCSIG$iid (func (param i32 f64) (result i32))) + (type $FUNCSIG$jii (func (param i32 i32) (result i64))) (type $FUNCSIG$iijijiji (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $FUNCSIG$iiid (func (param i32 i32 f64) (result i32))) (type $FUNCSIG$ij (func (param i64) (result i32))) @@ -177,9 +178,9 @@ (data (i32.const 5528) "\01\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00") (data (i32.const 5568) "\01\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00") (data (i32.const 5600) "\02\00\00\00\b8\02\00\00\00\00\00\00\00\00\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~anonymous|0) - (global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 1)) + (table $0 57 funcref) + (elem (i32.const 0) $null $start:std/array~anonymous|0 $start:std/array~anonymous|1 $start:std/array~anonymous|2 $start:std/array~anonymous|3 $start:std/array~anonymous|4 $start:std/array~anonymous|5 $start:std/array~anonymous|6 $start:std/array~anonymous|7 $start:std/array~anonymous|8 $start:std/array~anonymous|9 $start:std/array~anonymous|10 $start:std/array~anonymous|11 $start:std/array~anonymous|12 $start:std/array~anonymous|13 $start:std/array~anonymous|14 $start:std/array~anonymous|15 $start:std/array~anonymous|16 $start:std/array~anonymous|17 $start:std/array~anonymous|18 $start:std/array~anonymous|19 $start:std/array~anonymous|20 $start:std/array~anonymous|21 $start:std/array~anonymous|22 $start:std/array~anonymous|23 $start:std/array~anonymous|24 $start:std/array~anonymous|25 $start:std/array~anonymous|26 $start:std/array~anonymous|27 $start:std/array~anonymous|28 $start:std/array~anonymous|29 $start:std/array~anonymous|30 $start:std/array~anonymous|31 $start:std/array~anonymous|32 $start:std/array~anonymous|33 $start:std/array~anonymous|34 $start:std/array~anonymous|35 $start:std/array~anonymous|36 $start:std/array~anonymous|37 $start:std/array~anonymous|38 $start:std/array~anonymous|39 $start:std/array~anonymous|40 $start:std/array~anonymous|41 $start:std/array~anonymous|42 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|1 $start:std/array~anonymous|43 $start:std/array~anonymous|44 $start:std/array~anonymous|45 $start:std/array~anonymous|46 $start:std/array~anonymous|47 $start:std/array~anonymous|48 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0) (global $~lib/runtime/HEADER_SIZE i32 (i32.const 16)) (global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) (global $~lib/runtime/MAX_BYTELENGTH i32 (i32.const 1073741808)) @@ -394,7 +394,7 @@ end return ) - (func $~lib/runtime/doAllocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/allocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/runtime/ADJUSTOBLOCK @@ -673,7 +673,11 @@ end end ) - (func $~lib/runtime/assertUnregistered (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/collector/dummy/__ref_register (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $~lib/runtime/register (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 global.get $~lib/memory/HEAP_BASE i32.gt_u @@ -681,14 +685,16 @@ if i32.const 0 i32.const 24 - i32.const 313 - i32.const 2 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 global.get $~lib/runtime/HEADER_SIZE i32.sub + local.set $2 + local.get $2 i32.load global.get $~lib/runtime/HEADER_MAGIC i32.eq @@ -696,28 +702,19 @@ if i32.const 0 i32.const 24 - i32.const 314 - i32.const 2 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $~lib/collector/dummy/__gc_register (; 7 ;) (type $FUNCSIG$vi) (param $0 i32) - nop - ) - (func $~lib/runtime/doRegister (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/runtime/assertUnregistered - local.get $0 - global.get $~lib/runtime/HEADER_SIZE - i32.sub + local.get $2 local.get $1 i32.store local.get $0 - call $~lib/collector/dummy/__gc_register + call $~lib/collector/dummy/__ref_register local.get $0 ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#constructor (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -735,7 +732,7 @@ local.get $1 local.set $2 local.get $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $3 local.get $3 @@ -747,53 +744,20 @@ local.set $2 local.get $2 i32.const 2 - call $~lib/runtime/doRegister + call $~lib/runtime/register end ) - (func $~lib/runtime/assertRegistered (; 10 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 320 - i32.const 2 - call $~lib/env/abort - unreachable - end - local.get $0 - global.get $~lib/runtime/HEADER_SIZE - i32.sub - i32.load - global.get $~lib/runtime/HEADER_MAGIC - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 321 - i32.const 2 - call $~lib/env/abort - unreachable - end - ) - (func $~lib/collector/dummy/__gc_retain (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/collector/dummy/__ref_link (; 9 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/runtime/doRetain (; 12 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - local.get $0 - call $~lib/runtime/assertRegistered - local.get $1 - call $~lib/runtime/assertRegistered - local.get $0 - local.get $1 - call $~lib/collector/dummy/__gc_retain + (func $~lib/collector/dummy/__ref_unlink (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop ) - (func $~lib/runtime/ArrayBufferView#constructor (; 13 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/runtime/ArrayBufferView#constructor (; 11 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $1 global.get $~lib/runtime/MAX_BYTELENGTH local.get $2 @@ -802,7 +766,7 @@ if i32.const 0 i32.const 24 - i32.const 348 + i32.const 244 i32.const 57 call $~lib/env/abort unreachable @@ -823,12 +787,12 @@ i32.const 12 local.set $4 local.get $4 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $4 local.get $4 i32.const 3 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -844,11 +808,25 @@ local.get $0 end local.tee $4 - block $~lib/runtime/RETAIN|inlined.0 (result i32) - local.get $3 + local.get $3 + local.tee $5 + local.get $4 + i32.load + local.tee $6 + i32.ne + if (result i32) + local.get $6 + if + local.get $6 + local.get $4 + call $~lib/collector/dummy/__ref_unlink + end + local.get $5 local.get $4 - call $~lib/runtime/doRetain - local.get $3 + call $~lib/collector/dummy/__ref_link + local.get $5 + else + local.get $5 end i32.store local.get $0 @@ -859,7 +837,7 @@ i32.store offset=8 local.get $0 ) - (func $~lib/array/Array#constructor (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 if (result i32) @@ -869,12 +847,12 @@ i32.const 16 local.set $2 local.get $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $2 local.get $2 i32.const 4 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.get $1 i32.const 2 @@ -888,7 +866,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/array/Array.isArray | null> (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array.isArray | null> (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 1 if (result i32) local.get $0 @@ -898,7 +876,7 @@ i32.const 1 end ) - (func $~lib/array/Array.isArray> (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array.isArray> (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 1 if (result i32) local.get $0 @@ -908,7 +886,7 @@ i32.const 1 end ) - (func $std/array/P#constructor (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/P#constructor (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.eqz @@ -918,18 +896,18 @@ i32.const 0 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 5 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end local.get $0 ) - (func $~lib/array/Array.isArray

(; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array.isArray

(; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 0 if (result i32) local.get $0 @@ -939,7 +917,7 @@ i32.const 0 end ) - (func $~lib/typedarray/Uint8Array#constructor (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#constructor (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 if (result i32) @@ -949,12 +927,12 @@ i32.const 12 local.set $2 local.get $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $2 local.get $2 i32.const 6 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.get $1 i32.const 0 @@ -962,7 +940,7 @@ local.set $0 local.get $0 ) - (func $~lib/array/Array.isArray (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array.isArray (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 0 if (result i32) local.get $0 @@ -972,7 +950,7 @@ i32.const 0 end ) - (func $~lib/array/Array.isArray (; 21 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array.isArray (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 0 if (result i32) local.get $0 @@ -982,7 +960,7 @@ i32.const 0 end ) - (func $~lib/array/Array.isArray (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array.isArray (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 0 if (result i32) local.get $0 @@ -992,7 +970,7 @@ i32.const 0 end ) - (func $~lib/array/Array#fill (; 23 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/array/Array#fill (; 21 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -1068,7 +1046,7 @@ end local.get $0 ) - (func $~lib/util/memory/memcpy (; 24 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (; 22 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2269,7 +2247,7 @@ i32.store8 end ) - (func $~lib/memory/memory.copy (; 25 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 23 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2500,15 +2478,17 @@ end end ) - (func $~lib/runtime/doMakeArray (; 26 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/runtime/makeArray (; 24 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) + (local $9 i32) i32.const 16 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.get $2 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.set $4 local.get $0 local.get $3 @@ -2517,17 +2497,31 @@ local.get $0 local.get $3 i32.shl - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 2 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.set $6 local.get $4 local.tee $7 - block $~lib/runtime/RETAIN|inlined.1 (result i32) - local.get $6 + local.get $6 + local.tee $8 + local.get $7 + i32.load + local.tee $9 + i32.ne + if (result i32) + local.get $9 + if + local.get $9 + local.get $7 + call $~lib/collector/dummy/__ref_unlink + end + local.get $8 local.get $7 - call $~lib/runtime/doRetain - local.get $6 + call $~lib/collector/dummy/__ref_link + local.get $8 + else + local.get $8 end i32.store local.get $4 @@ -2548,11 +2542,20 @@ end local.get $4 ) - (func $~lib/array/Array#get:length (; 27 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 25 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__get (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 26 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + i32.shl + i32.add + i32.load8_u + ) + (func $~lib/array/Array#__get (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -2562,20 +2565,16 @@ if i32.const 0 i32.const 272 - i32.const 100 + i32.const 98 i32.const 61 call $~lib/env/abort unreachable end local.get $0 - i32.load offset=4 local.get $1 - i32.const 0 - i32.shl - i32.add - i32.load8_u + call $~lib/array/Array#__unchecked_get ) - (func $std/array/isArraysEqual (; 29 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual (; 28 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 i32.eqz @@ -2630,7 +2629,7 @@ end i32.const 1 ) - (func $~lib/array/Array#fill (; 30 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/array/Array#fill (; 29 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -2716,10 +2715,19 @@ end local.get $0 ) - (func $~lib/array/Array#get:length (; 31 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 30 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) + (func $~lib/array/Array#__unchecked_get (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) (func $~lib/array/Array#__get (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 @@ -2730,18 +2738,14 @@ if i32.const 0 i32.const 272 - i32.const 100 + i32.const 98 i32.const 61 call $~lib/env/abort unreachable end local.get $0 - i32.load offset=4 local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load + call $~lib/array/Array#__unchecked_get ) (func $std/array/isArraysEqual (; 33 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -2823,7 +2827,7 @@ local.get $0 local.set $1 ) - (func $~lib/runtime/doReallocate (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/runtime/reallocate (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2894,7 +2898,7 @@ if i32.const 0 i32.const 24 - i32.const 133 + i32.const 125 i32.const 8 call $~lib/env/abort unreachable @@ -2903,7 +2907,7 @@ call $~lib/memory/memory.free else local.get $0 - call $~lib/collector/dummy/__gc_register + call $~lib/collector/dummy/__ref_register end local.get $5 local.set $2 @@ -2932,6 +2936,8 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $1 local.get $0 i32.load offset=8 @@ -2947,7 +2953,7 @@ if i32.const 0 i32.const 272 - i32.const 14 + i32.const 13 i32.const 64 call $~lib/env/abort unreachable @@ -2966,7 +2972,7 @@ local.set $5 local.get $6 local.get $5 - call $~lib/runtime/doReallocate + call $~lib/runtime/reallocate end local.set $5 local.get $5 @@ -2975,11 +2981,25 @@ if local.get $0 local.tee $6 - block $~lib/runtime/RETAIN|inlined.2 (result i32) - local.get $5 + local.get $5 + local.tee $7 + local.get $6 + i32.load + local.tee $8 + i32.ne + if (result i32) + local.get $8 + if + local.get $8 + local.get $6 + call $~lib/collector/dummy/__ref_unlink + end + local.get $7 local.get $6 - call $~lib/runtime/doRetain - local.get $5 + call $~lib/collector/dummy/__ref_link + local.get $7 + else + local.get $7 end i32.store local.get $0 @@ -2993,31 +3013,41 @@ ) (func $~lib/array/Array#push (; 40 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $0 i32.load offset=12 + local.set $2 + local.get $2 i32.const 1 i32.add - local.set $2 + local.set $3 local.get $0 - local.get $2 + local.get $3 i32.const 2 call $~lib/array/ensureCapacity local.get $0 - local.get $2 - i32.store offset=12 - local.get $0 i32.load offset=4 local.get $2 - i32.const 1 - i32.sub i32.const 2 i32.shl i32.add local.get $1 i32.store - local.get $2 + local.get $0 + local.get $3 + i32.store offset=12 + local.get $3 ) - (func $~lib/array/Array#__get (; 41 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 41 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) + (func $~lib/array/Array#__get (; 42 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -3027,20 +3057,16 @@ if i32.const 0 i32.const 272 - i32.const 100 + i32.const 98 i32.const 61 call $~lib/env/abort unreachable end local.get $0 - i32.load offset=4 local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load + call $~lib/array/Array#__unchecked_get ) - (func $~lib/array/Array#pop (; 42 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#pop (; 43 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -3052,7 +3078,7 @@ if i32.const 0 i32.const 272 - i32.const 245 + i32.const 308 i32.const 20 call $~lib/env/abort unreachable @@ -3073,7 +3099,7 @@ i32.store offset=12 local.get $2 ) - (func $~lib/array/Array#concat (; 43 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#concat (; 44 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3103,7 +3129,7 @@ local.get $4 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end local.set $6 local.get $6 @@ -3129,7 +3155,7 @@ call $~lib/memory/memory.copy local.get $6 ) - (func $~lib/array/Array#copyWithin (; 44 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/array/Array#copyWithin (; 45 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -3319,7 +3345,7 @@ end local.get $0 ) - (func $std/array/isArraysEqual (; 45 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual (; 46 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 i32.eqz @@ -3374,7 +3400,7 @@ end i32.const 1 ) - (func $~lib/array/Array#unshift (; 46 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#unshift (; 47 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -3407,7 +3433,7 @@ i32.store offset=12 local.get $2 ) - (func $~lib/array/Array#shift (; 47 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#shift (; 48 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3421,7 +3447,7 @@ if i32.const 0 i32.const 272 - i32.const 306 + i32.const 380 i32.const 20 call $~lib/env/abort unreachable @@ -3456,7 +3482,7 @@ i32.store offset=12 local.get $3 ) - (func $~lib/array/Array#reverse (; 48 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#reverse (; 49 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3511,7 +3537,7 @@ end local.get $0 ) - (func $~lib/array/Array#indexOf (; 49 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#indexOf (; 50 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3583,7 +3609,7 @@ end i32.const -1 ) - (func $~lib/array/Array#includes (; 50 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#includes (; 51 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $1 local.get $2 @@ -3591,7 +3617,7 @@ i32.const 0 i32.ge_s ) - (func $~lib/array/Array#splice (; 51 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#splice (; 52 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3655,7 +3681,7 @@ local.get $4 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end local.set $6 local.get $6 @@ -3670,36 +3696,6 @@ i32.shl i32.add local.set $9 - block $break|0 - i32.const 0 - local.set $4 - loop $repeat|0 - local.get $4 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $7 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.get $9 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $repeat|0 - unreachable - end - unreachable - end local.get $6 i32.load offset=4 local.get $9 @@ -3735,7 +3731,17 @@ i32.store offset=12 local.get $6 ) - (func $~lib/array/Array#__set (; 52 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__unchecked_set (; 53 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + ) + (func $~lib/array/Array#__set (; 54 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $0 i32.load offset=12 @@ -3747,13 +3753,9 @@ i32.const 2 call $~lib/array/ensureCapacity local.get $0 - i32.load offset=4 local.get $1 - i32.const 2 - i32.shl - i32.add local.get $2 - i32.store + call $~lib/array/Array#__unchecked_set local.get $1 local.get $3 i32.ge_s @@ -3765,12 +3767,12 @@ i32.store offset=12 end ) - (func $start:std/array~anonymous|0 (; 53 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|0 (; 55 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 0 i32.eq ) - (func $~lib/array/Array#findIndex (; 54 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#findIndex (; 56 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3829,17 +3831,17 @@ end i32.const -1 ) - (func $start:std/array~anonymous|1 (; 55 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|1 (; 57 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 1 i32.eq ) - (func $start:std/array~anonymous|2 (; 56 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|2 (; 58 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 100 i32.eq ) - (func $start:std/array~anonymous|3 (; 57 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|3 (; 59 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 i32.const 100 call $~lib/array/Array#push @@ -3848,12 +3850,12 @@ i32.const 100 i32.eq ) - (func $start:std/array~anonymous|4 (; 58 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|4 (; 60 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 100 i32.eq ) - (func $start:std/array~anonymous|5 (; 59 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|5 (; 61 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/array/Array#pop drop @@ -3861,12 +3863,12 @@ i32.const 100 i32.eq ) - (func $start:std/array~anonymous|6 (; 60 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|6 (; 62 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 0 i32.ge_s ) - (func $~lib/array/Array#every (; 61 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#every (; 63 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3926,12 +3928,12 @@ end i32.const 1 ) - (func $start:std/array~anonymous|7 (; 62 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|7 (; 64 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 0 i32.le_s ) - (func $start:std/array~anonymous|8 (; 63 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|8 (; 65 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 i32.const 100 call $~lib/array/Array#push @@ -3940,12 +3942,12 @@ i32.const 10 i32.lt_s ) - (func $start:std/array~anonymous|9 (; 64 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|9 (; 66 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 10 i32.lt_s ) - (func $start:std/array~anonymous|10 (; 65 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|10 (; 67 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/array/Array#pop drop @@ -3953,12 +3955,12 @@ i32.const 3 i32.lt_s ) - (func $start:std/array~anonymous|11 (; 66 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|11 (; 68 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 3 i32.ge_s ) - (func $~lib/array/Array#some (; 67 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#some (; 69 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4017,12 +4019,12 @@ end i32.const 0 ) - (func $start:std/array~anonymous|12 (; 68 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|12 (; 70 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const -1 i32.le_s ) - (func $start:std/array~anonymous|13 (; 69 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|13 (; 71 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 i32.const 100 call $~lib/array/Array#push @@ -4031,12 +4033,12 @@ i32.const 10 i32.gt_s ) - (func $start:std/array~anonymous|14 (; 70 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|14 (; 72 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 10 i32.gt_s ) - (func $start:std/array~anonymous|15 (; 71 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|15 (; 73 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/array/Array#pop drop @@ -4044,13 +4046,13 @@ i32.const 3 i32.gt_s ) - (func $start:std/array~anonymous|16 (; 72 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|16 (; 74 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) global.get $std/array/i local.get $0 i32.add global.set $std/array/i ) - (func $~lib/array/Array#forEach (; 73 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#forEach (; 75 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4102,7 +4104,7 @@ unreachable end ) - (func $start:std/array~anonymous|17 (; 74 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|17 (; 76 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 i32.const 100 call $~lib/array/Array#push @@ -4112,13 +4114,13 @@ i32.add global.set $std/array/i ) - (func $start:std/array~anonymous|18 (; 75 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|18 (; 77 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) global.get $std/array/i local.get $0 i32.add global.set $std/array/i ) - (func $start:std/array~anonymous|19 (; 76 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|19 (; 78 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 call $~lib/array/Array#pop drop @@ -4127,7 +4129,7 @@ i32.add global.set $std/array/i ) - (func $start:std/array~anonymous|20 (; 77 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|20 (; 79 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 i32.const 0 @@ -4242,18 +4244,17 @@ end end ) - (func $start:std/array~anonymous|21 (; 78 ;) (type $FUNCSIG$fiii) (param $0 i32) (param $1 i32) (param $2 i32) (result f32) + (func $start:std/array~anonymous|21 (; 80 ;) (type $FUNCSIG$fiii) (param $0 i32) (param $1 i32) (param $2 i32) (result f32) local.get $0 f32.convert_i32_s ) - (func $~lib/array/Array#map (; 79 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#map (; 81 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 f32) local.get $0 i32.load offset=12 local.set $2 @@ -4266,7 +4267,7 @@ local.get $3 i32.const 9 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end local.set $5 local.get $5 @@ -4298,6 +4299,11 @@ i32.add i32.load local.set $4 + local.get $6 + local.get $3 + i32.const 2 + i32.shl + i32.add block (result f32) i32.const 3 global.set $~lib/argc @@ -4307,13 +4313,6 @@ local.get $1 call_indirect (type $FUNCSIG$fiii) end - local.set $8 - local.get $6 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.get $8 f32.store end local.get $3 @@ -4327,11 +4326,20 @@ end local.get $5 ) - (func $~lib/array/Array#get:length (; 80 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 82 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__get (; 81 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/array/Array#__unchecked_get (; 83 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + ) + (func $~lib/array/Array#__get (; 84 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) local.get $1 local.get $0 i32.load offset=8 @@ -4341,20 +4349,16 @@ if i32.const 0 i32.const 272 - i32.const 100 + i32.const 98 i32.const 61 call $~lib/env/abort unreachable end local.get $0 - i32.load offset=4 local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load + call $~lib/array/Array#__unchecked_get ) - (func $start:std/array~anonymous|22 (; 82 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|22 (; 85 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 i32.const 100 call $~lib/array/Array#push @@ -4365,7 +4369,7 @@ global.set $std/array/i local.get $0 ) - (func $~lib/array/Array#map (; 83 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#map (; 86 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4384,7 +4388,7 @@ local.get $3 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end local.set $5 local.get $5 @@ -4416,6 +4420,11 @@ i32.add i32.load local.set $4 + local.get $6 + local.get $3 + i32.const 2 + i32.shl + i32.add block (result i32) i32.const 3 global.set $~lib/argc @@ -4425,13 +4434,6 @@ local.get $1 call_indirect (type $FUNCSIG$iiii) end - local.set $7 - local.get $6 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.get $7 i32.store end local.get $3 @@ -4445,14 +4447,14 @@ end local.get $5 ) - (func $start:std/array~anonymous|23 (; 84 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|23 (; 87 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) global.get $std/array/i local.get $0 i32.add global.set $std/array/i local.get $0 ) - (func $start:std/array~anonymous|24 (; 85 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|24 (; 88 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/array/Array#pop drop @@ -4462,12 +4464,12 @@ global.set $std/array/i local.get $0 ) - (func $start:std/array~anonymous|25 (; 86 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|25 (; 89 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 2 i32.ge_s ) - (func $~lib/array/Array#filter (; 87 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#filter (; 90 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4482,7 +4484,7 @@ local.get $2 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end local.set $4 block $break|0 @@ -4545,7 +4547,7 @@ end local.get $4 ) - (func $start:std/array~anonymous|26 (; 88 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|26 (; 91 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 i32.const 100 call $~lib/array/Array#push @@ -4558,7 +4560,7 @@ i32.const 2 i32.ge_s ) - (func $start:std/array~anonymous|27 (; 89 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|27 (; 92 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) global.get $std/array/i local.get $0 i32.add @@ -4567,7 +4569,7 @@ i32.const 2 i32.ge_s ) - (func $start:std/array~anonymous|28 (; 90 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|28 (; 93 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/array/Array#pop drop @@ -4579,12 +4581,12 @@ i32.const 2 i32.ge_s ) - (func $start:std/array~anonymous|29 (; 91 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|29 (; 94 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $~lib/array/Array#reduce (; 92 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#reduce (; 95 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4642,12 +4644,12 @@ end local.get $3 ) - (func $start:std/array~anonymous|30 (; 93 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|30 (; 96 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $start:std/array~anonymous|31 (; 94 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|31 (; 97 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 i32.const 0 i32.ne @@ -4659,7 +4661,7 @@ i32.gt_s end ) - (func $~lib/array/Array#reduce (; 95 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#reduce (; 98 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4717,7 +4719,7 @@ end local.get $3 ) - (func $start:std/array~anonymous|32 (; 96 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|32 (; 99 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 i32.const 0 i32.ne @@ -4729,7 +4731,7 @@ i32.gt_s end ) - (func $start:std/array~anonymous|33 (; 97 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|33 (; 100 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $3 i32.const 1 call $~lib/array/Array#push @@ -4738,12 +4740,12 @@ local.get $1 i32.add ) - (func $start:std/array~anonymous|34 (; 98 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|34 (; 101 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $start:std/array~anonymous|35 (; 99 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|35 (; 102 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $3 call $~lib/array/Array#pop drop @@ -4751,12 +4753,12 @@ local.get $1 i32.add ) - (func $start:std/array~anonymous|36 (; 100 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|36 (; 103 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $~lib/array/Array#reduceRight (; 101 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#reduceRight (; 104 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $2 @@ -4801,12 +4803,12 @@ end local.get $3 ) - (func $start:std/array~anonymous|37 (; 102 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|37 (; 105 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $start:std/array~anonymous|38 (; 103 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|38 (; 106 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 i32.const 0 i32.ne @@ -4818,7 +4820,7 @@ i32.gt_s end ) - (func $~lib/array/Array#reduceRight (; 104 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#reduceRight (; 107 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $2 @@ -4863,7 +4865,7 @@ end local.get $3 ) - (func $start:std/array~anonymous|39 (; 105 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|39 (; 108 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 i32.const 0 i32.ne @@ -4875,7 +4877,7 @@ i32.gt_s end ) - (func $start:std/array~anonymous|40 (; 106 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|40 (; 109 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $3 i32.const 1 call $~lib/array/Array#push @@ -4884,12 +4886,12 @@ local.get $1 i32.add ) - (func $start:std/array~anonymous|41 (; 107 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|41 (; 110 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $start:std/array~anonymous|42 (; 108 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|42 (; 111 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $3 call $~lib/array/Array#pop drop @@ -4897,7 +4899,7 @@ local.get $1 i32.add ) - (func $~lib/math/murmurHash3 (; 109 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) + (func $~lib/math/murmurHash3 (; 112 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) local.get $0 local.get $0 i64.const 33 @@ -4926,7 +4928,7 @@ local.set $0 local.get $0 ) - (func $~lib/math/splitMix32 (; 110 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/math/splitMix32 (; 113 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 1831565813 i32.add @@ -4961,7 +4963,7 @@ i32.shr_u i32.xor ) - (func $~lib/math/NativeMath.seedRandom (; 111 ;) (type $FUNCSIG$vj) (param $0 i64) + (func $~lib/math/NativeMath.seedRandom (; 114 ;) (type $FUNCSIG$vj) (param $0 i64) local.get $0 i64.eqz if @@ -4990,7 +4992,7 @@ call $~lib/math/splitMix32 global.set $~lib/math/random_state1_32 ) - (func $~lib/util/sort/insertionSort (; 112 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort (; 115 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 f32) (local $5 i32) @@ -5086,7 +5088,7 @@ unreachable end ) - (func $~lib/util/sort/weakHeapSort (; 113 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/weakHeapSort (; 116 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5386,7 +5388,7 @@ local.get $10 f32.store ) - (func $~lib/array/Array#sort (; 114 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (; 117 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 f32) @@ -5399,7 +5401,7 @@ if i32.const 0 i32.const 272 - i32.const 418 + i32.const 525 i32.const 4 call $~lib/env/abort unreachable @@ -5472,7 +5474,7 @@ end local.get $0 ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 115 ;) (type $FUNCSIG$iff) (param $0 f32) (param $1 f32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 118 ;) (type $FUNCSIG$iff) (param $0 f32) (param $1 f32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -5505,7 +5507,7 @@ i32.lt_s i32.sub ) - (func $~lib/array/Array#sort|trampoline (; 116 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort|trampoline (; 119 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -5524,12 +5526,12 @@ local.get $1 call $~lib/array/Array#sort ) - (func $~lib/builtins/isNaN (; 117 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + (func $~lib/builtins/isNaN (; 120 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) local.get $0 local.get $0 f32.ne ) - (func $std/array/isArraysEqual (; 118 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual (; 121 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 i32.eqz @@ -5600,7 +5602,7 @@ end i32.const 1 ) - (func $~lib/util/sort/insertionSort (; 119 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort (; 122 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 f64) (local $5 i32) @@ -5696,7 +5698,7 @@ unreachable end ) - (func $~lib/util/sort/weakHeapSort (; 120 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/weakHeapSort (; 123 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5996,7 +5998,7 @@ local.get $10 f64.store ) - (func $~lib/array/Array#sort (; 121 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (; 124 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 f64) @@ -6009,7 +6011,7 @@ if i32.const 0 i32.const 272 - i32.const 418 + i32.const 525 i32.const 4 call $~lib/env/abort unreachable @@ -6082,7 +6084,7 @@ end local.get $0 ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 122 ;) (type $FUNCSIG$idd) (param $0 f64) (param $1 f64) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 125 ;) (type $FUNCSIG$idd) (param $0 f64) (param $1 f64) (result i32) (local $2 i64) (local $3 i64) local.get $0 @@ -6115,7 +6117,7 @@ i64.lt_s i32.sub ) - (func $~lib/array/Array#sort|trampoline (; 123 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort|trampoline (; 126 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -6134,11 +6136,20 @@ local.get $1 call $~lib/array/Array#sort ) - (func $~lib/array/Array#get:length (; 124 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 127 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__get (; 125 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/array/Array#__unchecked_get (; 128 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + ) + (func $~lib/array/Array#__get (; 129 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) local.get $1 local.get $0 i32.load offset=8 @@ -6148,25 +6159,21 @@ if i32.const 0 i32.const 272 - i32.const 100 + i32.const 98 i32.const 61 call $~lib/env/abort unreachable end local.get $0 - i32.load offset=4 local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load + call $~lib/array/Array#__unchecked_get ) - (func $~lib/builtins/isNaN (; 126 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/builtins/isNaN (; 130 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 local.get $0 f64.ne ) - (func $std/array/isArraysEqual (; 127 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual (; 131 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 i32.eqz @@ -6237,7 +6244,7 @@ end i32.const 1 ) - (func $~lib/util/sort/insertionSort (; 128 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort (; 132 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6333,7 +6340,7 @@ unreachable end ) - (func $~lib/util/sort/weakHeapSort (; 129 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/weakHeapSort (; 133 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6633,7 +6640,7 @@ local.get $10 i32.store ) - (func $~lib/array/Array#sort (; 130 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (; 134 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6644,7 +6651,7 @@ if i32.const 0 i32.const 272 - i32.const 418 + i32.const 525 i32.const 4 call $~lib/env/abort unreachable @@ -6717,12 +6724,12 @@ end local.get $0 ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 131 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 135 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 i32.sub ) - (func $~lib/array/Array#sort|trampoline (; 132 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort|trampoline (; 136 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -6741,7 +6748,7 @@ local.get $1 call $~lib/array/Array#sort ) - (func $~lib/util/sort/insertionSort (; 133 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort (; 137 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6837,7 +6844,7 @@ unreachable end ) - (func $~lib/util/sort/weakHeapSort (; 134 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/weakHeapSort (; 138 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7137,7 +7144,7 @@ local.get $10 i32.store ) - (func $~lib/array/Array#sort (; 135 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (; 139 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7148,7 +7155,7 @@ if i32.const 0 i32.const 272 - i32.const 418 + i32.const 525 i32.const 4 call $~lib/env/abort unreachable @@ -7221,7 +7228,7 @@ end local.get $0 ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 136 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 140 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 i32.gt_u @@ -7230,7 +7237,7 @@ i32.lt_u i32.sub ) - (func $~lib/array/Array#sort|trampoline (; 137 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort|trampoline (; 141 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -7249,7 +7256,7 @@ local.get $1 call $~lib/array/Array#sort ) - (func $~lib/array/Array.create (; 138 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array.create (; 142 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -7261,7 +7268,7 @@ if i32.const 0 i32.const 272 - i32.const 44 + i32.const 43 i32.const 62 call $~lib/env/abort unreachable @@ -7275,7 +7282,7 @@ local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end local.set $3 local.get $3 @@ -7289,7 +7296,7 @@ i32.store offset=12 local.get $3 ) - (func $std/array/createReverseOrderedArray (; 139 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/createReverseOrderedArray (; 143 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -7323,7 +7330,7 @@ end local.get $1 ) - (func $~lib/math/NativeMath.random (; 140 ;) (type $FUNCSIG$d) (result f64) + (func $~lib/math/NativeMath.random (; 144 ;) (type $FUNCSIG$d) (result f64) (local $0 i64) (local $1 i64) (local $2 i64) @@ -7380,7 +7387,7 @@ f64.const 1 f64.sub ) - (func $std/array/createRandomOrderedArray (; 141 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/createRandomOrderedArray (; 145 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -7414,12 +7421,12 @@ end local.get $1 ) - (func $~lib/util/sort/COMPARATOR~anonymous|1 (; 142 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|1 (; 146 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 i32.sub ) - (func $std/array/isSorted (; 143 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isSorted (; 147 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) block $break|0 @@ -7467,7 +7474,7 @@ end i32.const 1 ) - (func $std/array/assertSorted (; 144 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted (; 148 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 local.get $1 call $~lib/array/Array#sort @@ -7483,7 +7490,7 @@ unreachable end ) - (func $std/array/assertSortedDefault (; 145 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $std/array/assertSortedDefault (; 149 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 block $~lib/util/sort/COMPARATOR|inlined.1 (result i32) i32.const 48 @@ -7491,27 +7498,27 @@ end call $std/array/assertSorted ) - (func $start:std/array~anonymous|43 (; 146 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|43 (; 150 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 i32.sub ) - (func $start:std/array~anonymous|44 (; 147 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|44 (; 151 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.sub ) - (func $start:std/array~anonymous|45 (; 148 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|45 (; 152 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 i32.sub ) - (func $start:std/array~anonymous|46 (; 149 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|46 (; 153 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.sub ) - (func $~lib/array/Array.create> (; 150 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array.create> (; 154 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -7523,7 +7530,7 @@ if i32.const 0 i32.const 272 - i32.const 44 + i32.const 43 i32.const 62 call $~lib/env/abort unreachable @@ -7537,7 +7544,7 @@ local.get $1 i32.const 11 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end local.set $3 local.get $3 @@ -7551,24 +7558,41 @@ i32.store offset=12 local.get $3 ) - (func $~lib/collector/dummy/__gc_release (; 151 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/runtime/doRelease (; 152 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - local.get $0 - call $~lib/runtime/assertRegistered - local.get $1 - call $~lib/runtime/assertRegistered - local.get $0 - local.get $1 - call $~lib/collector/dummy/__gc_release - ) - (func $~lib/array/Array>#__set (; 153 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array>#__unchecked_set (; 155 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.set $3 + local.get $3 + i32.load + local.set $4 + local.get $2 + local.get $4 + i32.ne + if + local.get $3 + local.get $2 + i32.store + local.get $4 + i32.const 0 + i32.ne + if + local.get $4 + local.get $0 + call $~lib/collector/dummy/__ref_unlink + end + local.get $2 + local.get $0 + call $~lib/collector/dummy/__ref_link + end + ) + (func $~lib/array/Array>#__set (; 156 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) local.get $0 i32.load offset=12 local.set $3 @@ -7578,7 +7602,7 @@ if i32.const 0 i32.const 272 - i32.const 109 + i32.const 110 i32.const 38 call $~lib/env/abort unreachable @@ -7590,44 +7614,9 @@ i32.const 2 call $~lib/array/ensureCapacity local.get $0 - i32.load offset=4 local.get $1 - i32.const 2 - i32.shl - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 local.get $2 - local.get $5 - i32.ne - if - local.get $5 - i32.const 0 - i32.ne - if - local.get $5 - local.set $7 - local.get $0 - local.set $6 - local.get $7 - local.get $6 - call $~lib/runtime/doRelease - end - local.get $4 - block $~lib/runtime/RETAIN,Array>>|inlined.0 (result i32) - local.get $2 - local.set $7 - local.get $0 - local.set $6 - local.get $7 - local.get $6 - call $~lib/runtime/doRetain - local.get $7 - end - i32.store - end + call $~lib/array/Array>#__unchecked_set local.get $1 local.get $3 i32.ge_s @@ -7639,7 +7628,7 @@ i32.store offset=12 end ) - (func $std/array/createReverseOrderedNestedArray (; 154 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/createReverseOrderedNestedArray (; 157 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -7683,7 +7672,7 @@ end local.get $1 ) - (func $start:std/array~anonymous|47 (; 155 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|47 (; 158 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.const 0 call $~lib/array/Array#__get @@ -7692,7 +7681,7 @@ call $~lib/array/Array#__get i32.sub ) - (func $~lib/util/sort/insertionSort> (; 156 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort> (; 159 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7788,7 +7777,7 @@ unreachable end ) - (func $~lib/array/Array>#sort (; 157 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#sort (; 160 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7799,7 +7788,7 @@ if i32.const 0 i32.const 272 - i32.const 418 + i32.const 525 i32.const 4 call $~lib/env/abort unreachable @@ -7862,11 +7851,20 @@ end local.get $0 ) - (func $~lib/array/Array>#get:length (; 158 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array>#get:length (; 161 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array>#__get (; 159 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#__unchecked_get (; 162 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) + (func $~lib/array/Array>#__get (; 163 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -7874,7 +7872,7 @@ if i32.const 0 i32.const 272 - i32.const 97 + i32.const 95 i32.const 45 call $~lib/env/abort unreachable @@ -7888,20 +7886,16 @@ if i32.const 0 i32.const 272 - i32.const 100 + i32.const 98 i32.const 61 call $~lib/env/abort unreachable end local.get $0 - i32.load offset=4 local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load + call $~lib/array/Array>#__unchecked_get ) - (func $std/array/isSorted> (; 160 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isSorted> (; 164 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) block $break|0 @@ -7949,7 +7943,7 @@ end i32.const 1 ) - (func $std/array/assertSorted> (; 161 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted> (; 165 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 local.get $1 call $~lib/array/Array>#sort @@ -7965,7 +7959,7 @@ unreachable end ) - (func $~lib/array/Array.create> (; 162 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array.create> (; 166 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -7977,7 +7971,7 @@ if i32.const 0 i32.const 272 - i32.const 44 + i32.const 43 i32.const 62 call $~lib/env/abort unreachable @@ -7991,7 +7985,7 @@ local.get $1 i32.const 12 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end local.set $3 local.get $3 @@ -8005,7 +7999,7 @@ i32.store offset=12 local.get $3 ) - (func $std/array/Proxy#constructor (; 163 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/Proxy#constructor (; 167 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 i32.eqz @@ -8015,12 +8009,12 @@ i32.const 4 local.set $2 local.get $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $2 local.get $2 i32.const 13 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -8029,12 +8023,41 @@ i32.store local.get $0 ) - (func $~lib/array/Array>#__set (; 164 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array>#__unchecked_set (; 168 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.set $3 + local.get $3 + i32.load + local.set $4 + local.get $2 + local.get $4 + i32.ne + if + local.get $3 + local.get $2 + i32.store + local.get $4 + i32.const 0 + i32.ne + if + local.get $4 + local.get $0 + call $~lib/collector/dummy/__ref_unlink + end + local.get $2 + local.get $0 + call $~lib/collector/dummy/__ref_link + end + ) + (func $~lib/array/Array>#__set (; 169 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) local.get $0 i32.load offset=12 local.set $3 @@ -8044,7 +8067,7 @@ if i32.const 0 i32.const 272 - i32.const 109 + i32.const 110 i32.const 38 call $~lib/env/abort unreachable @@ -8056,44 +8079,9 @@ i32.const 2 call $~lib/array/ensureCapacity local.get $0 - i32.load offset=4 local.get $1 - i32.const 2 - i32.shl - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 local.get $2 - local.get $5 - i32.ne - if - local.get $5 - i32.const 0 - i32.ne - if - local.get $5 - local.set $7 - local.get $0 - local.set $6 - local.get $7 - local.get $6 - call $~lib/runtime/doRelease - end - local.get $4 - block $~lib/runtime/RETAIN,Array>>|inlined.0 (result i32) - local.get $2 - local.set $7 - local.get $0 - local.set $6 - local.get $7 - local.get $6 - call $~lib/runtime/doRetain - local.get $7 - end - i32.store - end + call $~lib/array/Array>#__unchecked_set local.get $1 local.get $3 i32.ge_s @@ -8105,7 +8093,7 @@ i32.store offset=12 end ) - (func $std/array/createReverseOrderedElementsArray (; 165 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/createReverseOrderedElementsArray (; 170 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -8141,14 +8129,14 @@ end local.get $1 ) - (func $start:std/array~anonymous|48 (; 166 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|48 (; 171 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load local.get $1 i32.load i32.sub ) - (func $~lib/util/sort/insertionSort> (; 167 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort> (; 172 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -8244,7 +8232,7 @@ unreachable end ) - (func $~lib/array/Array>#sort (; 168 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#sort (; 173 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8255,7 +8243,7 @@ if i32.const 0 i32.const 272 - i32.const 418 + i32.const 525 i32.const 4 call $~lib/env/abort unreachable @@ -8318,11 +8306,20 @@ end local.get $0 ) - (func $~lib/array/Array>#get:length (; 169 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array>#get:length (; 174 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array>#__get (; 170 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#__unchecked_get (; 175 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) + (func $~lib/array/Array>#__get (; 176 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -8330,7 +8327,7 @@ if i32.const 0 i32.const 272 - i32.const 97 + i32.const 95 i32.const 45 call $~lib/env/abort unreachable @@ -8344,20 +8341,16 @@ if i32.const 0 i32.const 272 - i32.const 100 + i32.const 98 i32.const 61 call $~lib/env/abort unreachable end local.get $0 - i32.load offset=4 local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load + call $~lib/array/Array>#__unchecked_get ) - (func $std/array/isSorted> (; 171 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isSorted> (; 177 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) block $break|0 @@ -8405,7 +8398,7 @@ end i32.const 1 ) - (func $std/array/assertSorted> (; 172 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted> (; 178 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 local.get $1 call $~lib/array/Array>#sort @@ -8421,7 +8414,7 @@ unreachable end ) - (func $~lib/util/sort/insertionSort (; 173 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort (; 179 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -8517,7 +8510,7 @@ unreachable end ) - (func $~lib/array/Array#sort (; 174 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (; 180 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8528,7 +8521,7 @@ if i32.const 0 i32.const 272 - i32.const 418 + i32.const 525 i32.const 4 call $~lib/env/abort unreachable @@ -8577,7 +8570,7 @@ local.get $0 return end - block $~lib/util/sort/SORT|inlined.0 + block $~lib/util/sort/SORT|inlined.0 local.get $3 local.set $6 local.get $2 @@ -8587,27 +8580,24 @@ local.get $6 local.get $4 local.get $5 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end local.get $0 ) - (func $~lib/array/Array#get:length (; 175 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 181 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__get (; 176 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 182 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 0 - i32.const 272 - i32.const 97 - i32.const 45 - call $~lib/env/abort - unreachable - end + i32.const 2 + i32.shl + i32.add + i32.load + ) + (func $~lib/array/Array#__get (; 183 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -8617,20 +8607,16 @@ if i32.const 0 i32.const 272 - i32.const 100 + i32.const 98 i32.const 61 call $~lib/env/abort unreachable end local.get $0 - i32.load offset=4 local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load + call $~lib/array/Array#__unchecked_get ) - (func $std/array/isSorted (; 177 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isSorted (; 184 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) block $break|0 @@ -8638,7 +8624,7 @@ i32.const 1 local.set $2 local.get $0 - call $~lib/array/Array#get:length + call $~lib/array/Array#get:length local.set $3 end loop $repeat|0 @@ -8654,10 +8640,10 @@ local.get $2 i32.const 1 i32.sub - call $~lib/array/Array#__get + call $~lib/array/Array#__get local.get $0 local.get $2 - call $~lib/array/Array#__get + call $~lib/array/Array#__get local.get $1 call_indirect (type $FUNCSIG$iii) end @@ -8678,12 +8664,12 @@ end i32.const 1 ) - (func $std/array/assertSorted (; 178 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted (; 185 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 local.get $1 - call $~lib/array/Array#sort + call $~lib/array/Array#sort local.get $1 - call $std/array/isSorted + call $std/array/isSorted i32.eqz if i32.const 0 @@ -8694,7 +8680,7 @@ unreachable end ) - (func $~lib/string/String#get:length (; 179 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 186 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 global.get $~lib/runtime/HEADER_SIZE i32.sub @@ -8702,7 +8688,7 @@ i32.const 1 i32.shr_u ) - (func $~lib/util/string/compareImpl (; 180 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (func $~lib/util/string/compareImpl (; 187 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -8755,7 +8741,7 @@ end local.get $5 ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 181 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 188 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8828,7 +8814,7 @@ select call $~lib/util/string/compareImpl ) - (func $std/array/assertSorted|trampoline (; 182 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted|trampoline (; 189 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) block $1of1 block $0of1 block $outOfRange @@ -8839,17 +8825,17 @@ end unreachable end - block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) + block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) i32.const 55 - br $~lib/util/sort/COMPARATOR|inlined.0 + br $~lib/util/sort/COMPARATOR|inlined.0 end local.set $1 end local.get $0 local.get $1 - call $std/array/assertSorted + call $std/array/assertSorted ) - (func $~lib/string/String.__eq (; 183 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 190 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -8893,23 +8879,23 @@ call $~lib/util/string/compareImpl i32.eqz ) - (func $~lib/string/String.__ne (; 184 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__ne (; 191 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/string/String.__eq i32.eqz ) - (func $std/array/isArraysEqual (; 185 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual (; 192 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 i32.eqz if local.get $0 - call $~lib/array/Array#get:length + call $~lib/array/Array#get:length local.set $2 local.get $2 local.get $1 - call $~lib/array/Array#get:length + call $~lib/array/Array#get:length i32.ne if i32.const 0 @@ -8934,10 +8920,10 @@ br_if $break|0 local.get $0 local.get $3 - call $~lib/array/Array#__get + call $~lib/array/Array#__get local.get $1 local.get $3 - call $~lib/array/Array#__get + call $~lib/array/Array#__get call $~lib/string/String.__ne if i32.const 0 @@ -8954,7 +8940,7 @@ end i32.const 1 ) - (func $~lib/array/Array.create (; 186 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array.create (; 193 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -8966,7 +8952,7 @@ if i32.const 0 i32.const 272 - i32.const 44 + i32.const 43 i32.const 62 call $~lib/env/abort unreachable @@ -8978,9 +8964,9 @@ local.set $1 local.get $2 local.get $1 - i32.const 14 + i32.const 15 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end local.set $3 local.get $3 @@ -8994,7 +8980,7 @@ i32.store offset=12 local.get $3 ) - (func $~lib/string/String#charAt (; 187 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#charAt (; 194 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -9004,7 +8990,7 @@ if i32.const 0 i32.const 4376 - i32.const 37 + i32.const 39 i32.const 4 call $~lib/env/abort unreachable @@ -9021,7 +9007,7 @@ i32.const 2 local.set $2 local.get $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $3 local.get $3 @@ -9037,10 +9023,10 @@ local.set $2 local.get $2 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end ) - (func $~lib/string/String#concat (; 188 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 195 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9078,7 +9064,7 @@ local.get $4 local.set $5 local.get $5 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $6 local.get $6 @@ -9096,10 +9082,10 @@ local.set $5 local.get $5 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end ) - (func $~lib/string/String.__concat (; 189 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 196 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.const 4424 local.get $0 @@ -9109,7 +9095,7 @@ local.get $1 call $~lib/string/String#concat ) - (func $std/array/createRandomString (; 190 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/createRandomString (; 197 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 f64) @@ -9151,12 +9137,41 @@ end local.get $1 ) - (func $~lib/array/Array#__set (; 191 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__unchecked_set (; 198 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.set $3 + local.get $3 + i32.load + local.set $4 + local.get $2 + local.get $4 + i32.ne + if + local.get $3 + local.get $2 + i32.store + local.get $4 + i32.const 0 + i32.ne + if + local.get $4 + local.get $0 + call $~lib/collector/dummy/__ref_unlink + end + local.get $2 + local.get $0 + call $~lib/collector/dummy/__ref_link + end + ) + (func $~lib/array/Array#__set (; 199 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) local.get $0 i32.load offset=12 local.set $3 @@ -9166,7 +9181,7 @@ if i32.const 0 i32.const 272 - i32.const 109 + i32.const 110 i32.const 38 call $~lib/env/abort unreachable @@ -9178,44 +9193,9 @@ i32.const 2 call $~lib/array/ensureCapacity local.get $0 - i32.load offset=4 local.get $1 - i32.const 2 - i32.shl - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 local.get $2 - local.get $5 - i32.ne - if - local.get $5 - i32.const 0 - i32.ne - if - local.get $5 - local.set $7 - local.get $0 - local.set $6 - local.get $7 - local.get $6 - call $~lib/runtime/doRelease - end - local.get $4 - block $~lib/runtime/RETAIN>|inlined.0 (result i32) - local.get $2 - local.set $7 - local.get $0 - local.set $6 - local.get $7 - local.get $6 - call $~lib/runtime/doRetain - local.get $7 - end - i32.store - end + call $~lib/array/Array#__unchecked_set local.get $1 local.get $3 i32.ge_s @@ -9227,7 +9207,7 @@ i32.store offset=12 end ) - (func $std/array/createRandomStringArray (; 192 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/createRandomStringArray (; 200 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -9261,7 +9241,379 @@ end local.get $1 ) - (func $~lib/string/String#substring (; 193 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/sort/insertionSort (; 201 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + block $break|0 + i32.const 0 + local.set $3 + loop $repeat|0 + local.get $3 + local.get $1 + i32.lt_s + i32.eqz + br_if $break|0 + block + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $4 + local.get $3 + i32.const 1 + i32.sub + local.set $5 + block $break|1 + loop $continue|1 + local.get $5 + i32.const 0 + i32.ge_s + if + block + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $6 + block (result i32) + i32.const 2 + global.set $~lib/argc + local.get $4 + local.get $6 + local.get $2 + call_indirect (type $FUNCSIG$iii) + end + i32.const 0 + i32.lt_s + if + local.get $0 + block (result i32) + local.get $5 + local.tee $7 + i32.const 1 + i32.sub + local.set $5 + local.get $7 + end + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store + else + br $break|1 + end + end + br $continue|1 + end + end + end + local.get $0 + local.get $5 + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $repeat|0 + unreachable + end + unreachable + end + ) + (func $~lib/array/Array#sort (; 202 ;) (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 $1 + i32.eqz + if + i32.const 0 + i32.const 272 + i32.const 525 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.load offset=12 + local.set $2 + local.get $2 + i32.const 1 + i32.le_s + if + local.get $0 + return + end + local.get $0 + i32.load offset=4 + local.set $3 + local.get $2 + i32.const 2 + i32.eq + if + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load + local.set $5 + block (result i32) + i32.const 2 + global.set $~lib/argc + local.get $4 + local.get $5 + local.get $1 + call_indirect (type $FUNCSIG$iii) + end + i32.const 0 + i32.lt_s + if + local.get $3 + local.get $5 + i32.store offset=4 + local.get $3 + local.get $4 + i32.store + end + local.get $0 + return + end + block $~lib/util/sort/SORT|inlined.0 + local.get $3 + local.set $6 + local.get $2 + local.set $4 + local.get $1 + local.set $5 + local.get $6 + local.get $4 + local.get $5 + call $~lib/util/sort/insertionSort + end + local.get $0 + ) + (func $~lib/array/Array#get:length (; 203 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__unchecked_get (; 204 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) + (func $~lib/array/Array#__get (; 205 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 0 + i32.const 272 + i32.const 95 + i32.const 45 + call $~lib/env/abort + unreachable + end + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 0 + i32.const 272 + i32.const 98 + i32.const 61 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + ) + (func $std/array/isSorted (; 206 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + block $break|0 + block + i32.const 1 + local.set $2 + local.get $0 + call $~lib/array/Array#get:length + local.set $3 + end + loop $repeat|0 + local.get $2 + local.get $3 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 2 + global.set $~lib/argc + local.get $0 + local.get $2 + i32.const 1 + i32.sub + call $~lib/array/Array#__get + local.get $0 + local.get $2 + call $~lib/array/Array#__get + local.get $1 + call_indirect (type $FUNCSIG$iii) + end + i32.const 0 + i32.gt_s + if + i32.const 0 + return + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $repeat|0 + unreachable + end + unreachable + end + i32.const 1 + ) + (func $std/array/assertSorted (; 207 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/array/Array#sort + local.get $1 + call $std/array/isSorted + i32.eqz + if + i32.const 0 + i32.const 152 + i32.const 814 + i32.const 2 + call $~lib/env/abort + unreachable + end + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 208 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + i32.eq + local.tee $2 + if (result i32) + local.get $2 + else + local.get $0 + i32.const 0 + i32.eq + end + local.tee $2 + if (result i32) + local.get $2 + else + local.get $1 + i32.const 0 + i32.eq + end + if + i32.const 0 + return + end + local.get $0 + call $~lib/string/String#get:length + local.set $3 + local.get $1 + call $~lib/string/String#get:length + local.set $4 + local.get $3 + i32.eqz + local.tee $2 + if (result i32) + local.get $4 + i32.eqz + else + local.get $2 + end + if + i32.const 0 + return + end + local.get $3 + i32.eqz + if + i32.const -1 + return + end + local.get $4 + i32.eqz + if + i32.const 1 + return + end + local.get $0 + i32.const 0 + local.get $1 + i32.const 0 + local.get $3 + local.tee $2 + local.get $4 + local.tee $5 + local.get $2 + local.get $5 + i32.lt_s + select + call $~lib/util/string/compareImpl + ) + (func $std/array/assertSorted|trampoline (; 209 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~lib/argc + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) + i32.const 56 + br $~lib/util/sort/COMPARATOR|inlined.0 + end + local.set $1 + end + local.get $0 + local.get $1 + call $std/array/assertSorted + ) + (func $~lib/string/String#substring (; 210 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -9277,7 +9629,7 @@ if i32.const 0 i32.const 4376 - i32.const 187 + i32.const 189 i32.const 4 call $~lib/env/abort unreachable @@ -9370,7 +9722,7 @@ local.get $3 local.set $4 local.get $4 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $10 local.get $10 @@ -9384,18 +9736,44 @@ local.set $4 local.get $4 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end ) - (func $~lib/runtime/doDiscard (; 194 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/discard (; 211 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) local.get $0 - call $~lib/runtime/assertUnregistered + global.get $~lib/memory/HEAP_BASE + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 185 + i32.const 4 + call $~lib/env/abort + unreachable + end local.get $0 global.get $~lib/runtime/HEADER_SIZE i32.sub + local.set $1 + local.get $1 + i32.load + global.get $~lib/runtime/HEADER_MAGIC + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 187 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 call $~lib/memory/memory.free ) - (func $~lib/array/Array#join_bool (; 195 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_bool (; 212 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9452,7 +9830,7 @@ i32.shl local.set $7 local.get $7 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $8 i32.const 0 @@ -9569,7 +9947,7 @@ local.get $8 local.set $11 local.get $11 - call $~lib/runtime/doDiscard + call $~lib/runtime/discard end local.get $7 return @@ -9579,16 +9957,16 @@ local.set $7 local.get $7 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end ) - (func $~lib/array/Array#join (; 196 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 213 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array#join_bool return ) - (func $~lib/util/number/decimalCount32 (; 197 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 214 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 100000 @@ -9657,7 +10035,7 @@ unreachable unreachable ) - (func $~lib/util/number/utoa32_lut (; 198 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa32_lut (; 215 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -9800,7 +10178,7 @@ i32.store16 end ) - (func $~lib/util/number/itoa32 (; 199 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 216 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9835,7 +10213,7 @@ i32.shl local.set $3 local.get $3 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $4 block $~lib/util/number/utoa32_core|inlined.0 @@ -9861,15 +10239,15 @@ local.set $3 local.get $3 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end ) - (func $~lib/util/number/itoa (; 200 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 217 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/util/number/itoa32 return ) - (func $~lib/util/number/itoa_stream (; 201 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 218 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -9928,7 +10306,7 @@ end local.get $3 ) - (func $~lib/array/Array#join_int (; 202 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_int (; 219 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9978,7 +10356,7 @@ i32.shl local.set $6 local.get $6 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $7 i32.const 0 @@ -10061,7 +10439,7 @@ local.get $7 local.set $10 local.get $10 - call $~lib/runtime/doDiscard + call $~lib/runtime/discard end local.get $6 return @@ -10071,16 +10449,16 @@ local.set $6 local.get $6 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end ) - (func $~lib/array/Array#join (; 203 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 220 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array#join_int return ) - (func $~lib/util/number/utoa32 (; 204 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/utoa32 (; 221 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10101,7 +10479,7 @@ i32.shl local.set $2 local.get $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $3 block $~lib/util/number/utoa32_core|inlined.2 @@ -10121,15 +10499,15 @@ local.set $2 local.get $2 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end ) - (func $~lib/util/number/itoa (; 205 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 222 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/util/number/utoa32 return ) - (func $~lib/util/number/itoa_stream (; 206 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 223 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -10168,7 +10546,7 @@ end local.get $3 ) - (func $~lib/array/Array#join_int (; 207 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_int (; 224 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10218,7 +10596,7 @@ i32.shl local.set $6 local.get $6 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $7 i32.const 0 @@ -10301,7 +10679,7 @@ local.get $7 local.set $10 local.get $10 - call $~lib/runtime/doDiscard + call $~lib/runtime/discard end local.get $6 return @@ -10311,23 +10689,41 @@ local.set $6 local.get $6 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end ) - (func $~lib/array/Array#join (; 208 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 225 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array#join_int return ) - (func $~lib/builtins/isFinite (; 209 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/builtins/isFinite (; 226 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 local.get $0 f64.sub f64.const 0 f64.eq ) - (func $~lib/util/number/genDigits (; 210 ;) (type $FUNCSIG$iijijiji) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 227 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + ) + (func $~lib/array/Array#__unchecked_get (; 228 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + ) + (func $~lib/util/number/genDigits (; 229 ;) (type $FUNCSIG$iijijiji) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) (local $7 i32) (local $8 i64) (local $9 i64) @@ -10898,7 +11294,7 @@ end local.get $15 ) - (func $~lib/util/number/prettify (; 211 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 230 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -11231,7 +11627,7 @@ unreachable unreachable ) - (func $~lib/util/number/dtoa_core (; 212 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/util/number/dtoa_core (; 231 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 i32) (local $3 f64) (local $4 i32) @@ -11401,20 +11797,12 @@ i32.sub global.set $~lib/util/number/_K i32.const 6328 - i32.load offset=4 local.get $13 - i32.const 3 - i32.shl - i32.add - i64.load + call $~lib/array/Array#__unchecked_get global.set $~lib/util/number/_frc_pow i32.const 6552 - i32.load offset=4 local.get $13 - i32.const 1 - i32.shl - i32.add - i32.load16_s + call $~lib/array/Array#__unchecked_get global.set $~lib/util/number/_exp_pow end local.get $9 @@ -11677,7 +12065,7 @@ local.get $2 i32.add ) - (func $~lib/util/number/dtoa (; 213 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/util/number/dtoa (; 232 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -11713,7 +12101,7 @@ i32.shl local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $2 local.get $2 @@ -11729,11 +12117,11 @@ local.get $2 local.set $1 local.get $1 - call $~lib/runtime/doDiscard + call $~lib/runtime/discard end local.get $4 ) - (func $~lib/util/number/dtoa_stream (; 214 ;) (type $FUNCSIG$iiid) (param $0 i32) (param $1 i32) (param $2 f64) (result i32) + (func $~lib/util/number/dtoa_stream (; 233 ;) (type $FUNCSIG$iiid) (param $0 i32) (param $1 i32) (param $2 f64) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -11807,7 +12195,7 @@ local.get $2 call $~lib/util/number/dtoa_core ) - (func $~lib/array/Array#join_flt (; 215 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_flt (; 234 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11857,7 +12245,7 @@ i32.shl local.set $6 local.get $6 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $7 i32.const 0 @@ -11940,7 +12328,7 @@ local.get $7 local.set $10 local.get $10 - call $~lib/runtime/doDiscard + call $~lib/runtime/discard end local.get $6 return @@ -11950,16 +12338,16 @@ local.set $6 local.get $6 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end ) - (func $~lib/array/Array#join (; 216 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 235 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array#join_flt return ) - (func $~lib/array/Array#join_str (; 217 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_str (; 236 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12051,7 +12439,7 @@ i32.shl local.set $8 local.get $8 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $10 block $break|1 @@ -12148,16 +12536,16 @@ local.set $8 local.get $8 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end ) - (func $~lib/array/Array#join (; 218 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 237 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array#join_str return ) - (func $std/array/Ref#constructor (; 219 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/Ref#constructor (; 238 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.eqz @@ -12167,18 +12555,18 @@ i32.const 0 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 - i32.const 18 - call $~lib/runtime/doRegister + i32.const 19 + call $~lib/runtime/register end local.set $0 end local.get $0 ) - (func $~lib/array/Array#join_ref (; 220 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_ref (; 239 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12226,7 +12614,7 @@ i32.shl local.set $6 local.get $6 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $7 i32.const 0 @@ -12327,7 +12715,7 @@ local.get $7 local.set $10 local.get $10 - call $~lib/runtime/doDiscard + call $~lib/runtime/discard end local.get $6 return @@ -12337,21 +12725,21 @@ local.set $6 local.get $6 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end ) - (func $~lib/array/Array#join (; 221 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 240 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array#join_ref return ) - (func $~lib/array/Array#toString (; 222 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 241 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 4528 call $~lib/array/Array#join ) - (func $~lib/util/number/itoa (; 223 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 242 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 24 i32.shl @@ -12360,7 +12748,7 @@ call $~lib/util/number/itoa32 return ) - (func $~lib/util/number/itoa_stream (; 224 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 243 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -12435,7 +12823,7 @@ end local.get $3 ) - (func $~lib/array/Array#join_int (; 225 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_int (; 244 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12485,7 +12873,7 @@ i32.shl local.set $6 local.get $6 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $7 i32.const 0 @@ -12568,7 +12956,7 @@ local.get $7 local.set $10 local.get $10 - call $~lib/runtime/doDiscard + call $~lib/runtime/discard end local.get $6 return @@ -12578,28 +12966,28 @@ local.set $6 local.get $6 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end ) - (func $~lib/array/Array#join (; 226 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 245 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array#join_int return ) - (func $~lib/array/Array#toString (; 227 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 246 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 4528 call $~lib/array/Array#join ) - (func $~lib/util/number/itoa (; 228 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 247 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 65535 i32.and call $~lib/util/number/utoa32 return ) - (func $~lib/util/number/itoa_stream (; 229 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 248 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -12644,7 +13032,7 @@ end local.get $3 ) - (func $~lib/array/Array#join_int (; 230 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_int (; 249 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12694,7 +13082,7 @@ i32.shl local.set $6 local.get $6 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $7 i32.const 0 @@ -12777,7 +13165,7 @@ local.get $7 local.set $10 local.get $10 - call $~lib/runtime/doDiscard + call $~lib/runtime/discard end local.get $6 return @@ -12787,21 +13175,21 @@ local.set $6 local.get $6 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end ) - (func $~lib/array/Array#join (; 231 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 250 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array#join_int return ) - (func $~lib/array/Array#toString (; 232 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 251 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 4528 call $~lib/array/Array#join ) - (func $~lib/util/number/decimalCount64 (; 233 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/decimalCount64 (; 252 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) local.get $0 i64.const 1000000000000000 @@ -12870,7 +13258,7 @@ unreachable unreachable ) - (func $~lib/util/number/utoa64_lut (; 234 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa64_lut (; 253 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) (local $4 i64) (local $5 i32) @@ -12998,7 +13386,7 @@ local.get $2 call $~lib/util/number/utoa32_lut ) - (func $~lib/util/number/utoa64 (; 235 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/utoa64 (; 254 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -13029,7 +13417,7 @@ i32.shl local.set $4 local.get $4 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 block $~lib/util/number/utoa32_core|inlined.8 @@ -13054,7 +13442,7 @@ i32.shl local.set $2 local.get $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 block $~lib/util/number/utoa64_core|inlined.0 @@ -13075,15 +13463,15 @@ local.set $3 local.get $3 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end ) - (func $~lib/util/number/itoa (; 236 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa (; 255 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) local.get $0 call $~lib/util/number/utoa64 return ) - (func $~lib/util/number/itoa_stream (; 237 ;) (type $FUNCSIG$iiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) + (func $~lib/util/number/itoa_stream (; 256 ;) (type $FUNCSIG$iiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -13149,7 +13537,7 @@ end local.get $3 ) - (func $~lib/array/Array#join_int (; 238 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_int (; 257 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13199,7 +13587,7 @@ i32.shl local.set $6 local.get $6 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $7 i32.const 0 @@ -13282,7 +13670,7 @@ local.get $7 local.set $10 local.get $10 - call $~lib/runtime/doDiscard + call $~lib/runtime/discard end local.get $6 return @@ -13292,21 +13680,21 @@ local.set $6 local.get $6 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end ) - (func $~lib/array/Array#join (; 239 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 258 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array#join_int return ) - (func $~lib/array/Array#toString (; 240 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 259 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 4528 call $~lib/array/Array#join ) - (func $~lib/util/number/itoa64 (; 241 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa64 (; 260 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -13351,7 +13739,7 @@ i32.shl local.set $5 local.get $5 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $2 block $~lib/util/number/utoa32_core|inlined.10 @@ -13378,7 +13766,7 @@ i32.shl local.set $3 local.get $3 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $2 block $~lib/util/number/utoa64_core|inlined.2 @@ -13405,15 +13793,15 @@ local.set $4 local.get $4 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end ) - (func $~lib/util/number/itoa (; 242 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa (; 261 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) local.get $0 call $~lib/util/number/itoa64 return ) - (func $~lib/util/number/itoa_stream (; 243 ;) (type $FUNCSIG$iiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) + (func $~lib/util/number/itoa_stream (; 262 ;) (type $FUNCSIG$iiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -13501,7 +13889,7 @@ end local.get $3 ) - (func $~lib/array/Array#join_int (; 244 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_int (; 263 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13551,7 +13939,7 @@ i32.shl local.set $6 local.get $6 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $7 i32.const 0 @@ -13634,7 +14022,7 @@ local.get $7 local.set $10 local.get $10 - call $~lib/runtime/doDiscard + call $~lib/runtime/discard end local.get $6 return @@ -13644,26 +14032,229 @@ local.set $6 local.get $6 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end ) - (func $~lib/array/Array#join (; 245 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 264 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array#join_int return ) - (func $~lib/array/Array#toString (; 246 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 265 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 4528 call $~lib/array/Array#join ) - (func $~lib/array/Array#toString (; 247 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#join_str (; 266 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + local.get $0 + i32.load offset=12 + i32.const 1 + i32.sub + local.set $2 + local.get $2 + i32.const 0 + i32.lt_s + if + i32.const 4200 + return + end + local.get $0 + i32.load offset=4 + local.set $3 + local.get $2 + i32.eqz + if + local.get $3 + i32.load + return + end + local.get $1 + call $~lib/string/String#get:length + local.set $4 + i32.const 0 + local.set $5 + block $break|0 + block + i32.const 0 + local.set $7 + local.get $2 + i32.const 1 + i32.add + local.set $8 + end + loop $repeat|0 + local.get $7 + local.get $8 + i32.lt_s + i32.eqz + br_if $break|0 + block + local.get $3 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $6 + local.get $6 + i32.const 0 + i32.ne + if + local.get $5 + local.get $6 + call $~lib/string/String#get:length + i32.add + local.set $5 + end + end + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $repeat|0 + unreachable + end + unreachable + end + i32.const 0 + local.set $9 + block $~lib/runtime/ALLOCATE|inlined.27 (result i32) + local.get $5 + local.get $4 + local.get $2 + i32.mul + i32.add + i32.const 1 + i32.shl + local.set $8 + local.get $8 + call $~lib/runtime/allocate + end + local.set $10 + block $break|1 + i32.const 0 + local.set $8 + loop $repeat|1 + local.get $8 + local.get $2 + i32.lt_s + i32.eqz + br_if $break|1 + block + local.get $3 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $6 + local.get $6 + i32.const 0 + i32.ne + if + local.get $6 + call $~lib/string/String#get:length + local.set $7 + local.get $10 + local.get $9 + i32.const 1 + i32.shl + i32.add + local.get $6 + local.get $7 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $9 + local.get $7 + i32.add + local.set $9 + end + local.get $4 + if + local.get $10 + local.get $9 + i32.const 1 + i32.shl + i32.add + local.get $1 + local.get $4 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $9 + local.get $4 + i32.add + local.set $9 + end + end + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $repeat|1 + unreachable + end + unreachable + end + local.get $3 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $6 + local.get $6 + i32.const 0 + i32.ne + if + local.get $10 + local.get $9 + i32.const 1 + i32.shl + i32.add + local.get $6 + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + end + block $~lib/runtime/REGISTER|inlined.17 (result i32) + local.get $10 + local.set $8 + local.get $8 + i32.const 1 + call $~lib/runtime/register + end + ) + (func $~lib/array/Array#join (; 267 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + call $~lib/array/Array#join_str + return + ) + (func $~lib/array/Array#toString (; 268 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 4528 + call $~lib/array/Array#join + ) + (func $~lib/array/Array#toString (; 269 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 4528 call $~lib/array/Array#join ) - (func $~lib/array/Array>#join_arr (; 248 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#join_arr (; 270 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13767,25 +14358,25 @@ end local.get $3 ) - (func $~lib/array/Array>#join (; 249 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#join (; 271 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array>#join_arr return ) - (func $~lib/array/Array>#toString (; 250 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array>#toString (; 272 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 4528 call $~lib/array/Array>#join ) - (func $~lib/util/number/itoa (; 251 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 273 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 255 i32.and call $~lib/util/number/utoa32 return ) - (func $~lib/util/number/itoa_stream (; 252 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 274 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -13830,7 +14421,7 @@ end local.get $3 ) - (func $~lib/array/Array#join_int (; 253 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_int (; 275 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13874,13 +14465,13 @@ i32.const 10 i32.add local.set $5 - block $~lib/runtime/ALLOCATE|inlined.27 (result i32) + block $~lib/runtime/ALLOCATE|inlined.28 (result i32) local.get $5 i32.const 1 i32.shl local.set $6 local.get $6 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $7 i32.const 0 @@ -13963,26 +14554,26 @@ local.get $7 local.set $10 local.get $10 - call $~lib/runtime/doDiscard + call $~lib/runtime/discard end local.get $6 return end - block $~lib/runtime/REGISTER|inlined.17 (result i32) + block $~lib/runtime/REGISTER|inlined.18 (result i32) local.get $7 local.set $6 local.get $6 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end ) - (func $~lib/array/Array#join (; 254 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 276 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array#join_int return ) - (func $~lib/array/Array>#join_arr (; 255 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#join_arr (; 277 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14086,18 +14677,18 @@ end local.get $3 ) - (func $~lib/array/Array>#join (; 256 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#join (; 278 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array>#join_arr return ) - (func $~lib/array/Array>#toString (; 257 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array>#toString (; 279 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 4528 call $~lib/array/Array>#join ) - (func $~lib/array/Array>#join_arr (; 258 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#join_arr (; 280 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14201,13 +14792,13 @@ end local.get $3 ) - (func $~lib/array/Array>#join (; 259 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#join (; 281 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array>#join_arr return ) - (func $~lib/array/Array>>#join_arr (; 260 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>>#join_arr (; 282 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14311,18 +14902,18 @@ end local.get $3 ) - (func $~lib/array/Array>>#join (; 261 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>>#join (; 283 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array>>#join_arr return ) - (func $~lib/array/Array>>#toString (; 262 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array>>#toString (; 284 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 4528 call $~lib/array/Array>>#join ) - (func $start:std/array (; 263 ;) (type $FUNCSIG$v) + (func $start:std/array (; 285 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14440,7 +15031,7 @@ local.get $1 i32.const 7 i32.const 0 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -14469,7 +15060,7 @@ local.get $0 i32.const 7 i32.const 0 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -14498,7 +15089,7 @@ local.get $1 i32.const 7 i32.const 0 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -14527,7 +15118,7 @@ local.get $0 i32.const 7 i32.const 0 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -14556,7 +15147,7 @@ local.get $1 i32.const 7 i32.const 0 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -14585,7 +15176,7 @@ local.get $0 i32.const 8 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -14614,7 +15205,7 @@ local.get $1 i32.const 8 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -14643,7 +15234,7 @@ local.get $0 i32.const 8 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -14672,7 +15263,7 @@ local.get $1 i32.const 8 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -14701,7 +15292,7 @@ local.get $0 i32.const 8 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -15056,7 +15647,7 @@ local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end call $~lib/array/Array#concat drop @@ -15335,7 +15926,7 @@ local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end global.set $std/array/cwArr global.get $std/array/cwArr @@ -15352,7 +15943,7 @@ local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -15374,7 +15965,7 @@ local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end global.set $std/array/cwArr global.get $std/array/cwArr @@ -15391,7 +15982,7 @@ local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -15413,7 +16004,7 @@ local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end global.set $std/array/cwArr global.get $std/array/cwArr @@ -15430,7 +16021,7 @@ local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -15452,7 +16043,7 @@ local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end global.set $std/array/cwArr global.get $std/array/cwArr @@ -15469,7 +16060,7 @@ local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -15491,7 +16082,7 @@ local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end global.set $std/array/cwArr global.get $std/array/cwArr @@ -15508,7 +16099,7 @@ local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -15530,7 +16121,7 @@ local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end global.set $std/array/cwArr global.get $std/array/cwArr @@ -15547,7 +16138,7 @@ local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -15569,7 +16160,7 @@ local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end global.set $std/array/cwArr global.get $std/array/cwArr @@ -15586,7 +16177,7 @@ local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -15608,7 +16199,7 @@ local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end global.set $std/array/cwArr global.get $std/array/cwArr @@ -15625,7 +16216,7 @@ local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -15647,7 +16238,7 @@ local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end global.set $std/array/cwArr global.get $std/array/cwArr @@ -15664,7 +16255,7 @@ local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -15686,7 +16277,7 @@ local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end global.set $std/array/cwArr global.get $std/array/cwArr @@ -15703,7 +16294,7 @@ local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -15725,7 +16316,7 @@ local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end global.set $std/array/cwArr global.get $std/array/cwArr @@ -15742,7 +16333,7 @@ local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -15764,7 +16355,7 @@ local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end global.set $std/array/cwArr global.get $std/array/cwArr @@ -15781,7 +16372,7 @@ local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -16651,7 +17242,7 @@ local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -16674,7 +17265,7 @@ local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -16696,7 +17287,7 @@ local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end global.set $std/array/sarr global.get $std/array/sarr @@ -16712,7 +17303,7 @@ local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -16735,7 +17326,7 @@ local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -16757,7 +17348,7 @@ local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end global.set $std/array/sarr global.get $std/array/sarr @@ -16773,7 +17364,7 @@ local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -16796,7 +17387,7 @@ local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -16818,7 +17409,7 @@ local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end global.set $std/array/sarr global.get $std/array/sarr @@ -16834,7 +17425,7 @@ local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -16857,7 +17448,7 @@ local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -16879,7 +17470,7 @@ local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end global.set $std/array/sarr global.get $std/array/sarr @@ -16895,7 +17486,7 @@ local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -16918,7 +17509,7 @@ local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -16940,7 +17531,7 @@ local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end global.set $std/array/sarr global.get $std/array/sarr @@ -16956,7 +17547,7 @@ local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -16979,7 +17570,7 @@ local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -17001,7 +17592,7 @@ local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end global.set $std/array/sarr global.get $std/array/sarr @@ -17017,7 +17608,7 @@ local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -17040,7 +17631,7 @@ local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -17062,7 +17653,7 @@ local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end global.set $std/array/sarr global.get $std/array/sarr @@ -17078,7 +17669,7 @@ local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -17101,7 +17692,7 @@ local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -17123,7 +17714,7 @@ local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end global.set $std/array/sarr global.get $std/array/sarr @@ -17139,7 +17730,7 @@ local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -17162,7 +17753,7 @@ local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -17184,7 +17775,7 @@ local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end global.set $std/array/sarr global.get $std/array/sarr @@ -17200,7 +17791,7 @@ local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -17223,7 +17814,7 @@ local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -17245,7 +17836,7 @@ local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end global.set $std/array/sarr global.get $std/array/sarr @@ -17261,7 +17852,7 @@ local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -17284,7 +17875,7 @@ local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -17306,7 +17897,7 @@ local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end global.set $std/array/sarr global.get $std/array/sarr @@ -17322,7 +17913,7 @@ local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -17345,7 +17936,7 @@ local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -17367,7 +17958,7 @@ local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end global.set $std/array/sarr global.get $std/array/sarr @@ -17383,7 +17974,7 @@ local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -17406,7 +17997,7 @@ local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -18614,7 +19205,7 @@ local.get $0 i32.const 9 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -18645,7 +19236,7 @@ local.get $1 i32.const 10 i32.const 3 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -18676,7 +19267,7 @@ local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -18707,7 +19298,7 @@ local.get $1 i32.const 8 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -18749,7 +19340,7 @@ local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -18774,7 +19365,7 @@ local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 0 call $std/array/isArraysEqual @@ -18899,12 +19490,12 @@ global.set $~lib/argc global.get $std/array/randomStringsActual i32.const 0 - call $std/array/assertSorted|trampoline + call $std/array/assertSorted|trampoline end global.get $std/array/randomStringsActual global.get $std/array/randomStringsExpected i32.const 0 - call $std/array/isArraysEqual + call $std/array/isArraysEqual i32.eqz if i32.const 0 @@ -18931,9 +19522,9 @@ local.set $1 local.get $0 local.get $1 - i32.const 15 + i32.const 16 i32.const 0 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 4528 call $~lib/array/Array#join @@ -18957,7 +19548,7 @@ local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 4200 call $~lib/array/Array#join @@ -18981,7 +19572,7 @@ local.get $1 i32.const 8 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 5216 call $~lib/array/Array#join @@ -19005,7 +19596,7 @@ local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 5296 call $~lib/array/Array#join @@ -19029,7 +19620,7 @@ local.get $1 i32.const 10 i32.const 3 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 5472 call $~lib/array/Array#join @@ -19051,9 +19642,9 @@ local.set $1 local.get $0 local.get $1 - i32.const 14 + i32.const 15 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end i32.const 4200 call $~lib/array/Array#join @@ -19076,57 +19667,51 @@ local.set $3 local.get $2 local.get $3 - i32.const 19 + i32.const 20 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end local.set $1 local.get $1 i32.load offset=4 local.set $0 local.get $0 - block $~lib/runtime/RETAIN>|inlined.0 (result i32) + block (result i32) i32.const 0 call $std/array/Ref#constructor local.set $3 local.get $3 - i32.const 0 - i32.ne if local.get $3 local.get $1 - call $~lib/runtime/doRetain + call $~lib/collector/dummy/__ref_link end local.get $3 end i32.store local.get $0 - block $~lib/runtime/RETAIN>|inlined.1 (result i32) + block (result i32) i32.const 0 local.set $3 local.get $3 - i32.const 0 - i32.ne if local.get $3 local.get $1 - call $~lib/runtime/doRetain + call $~lib/collector/dummy/__ref_link end local.get $3 end i32.store offset=4 local.get $0 - block $~lib/runtime/RETAIN>|inlined.2 (result i32) + block (result i32) i32.const 0 call $std/array/Ref#constructor local.set $3 local.get $3 - i32.const 0 - i32.ne if local.get $3 local.get $1 - call $~lib/runtime/doRetain + call $~lib/collector/dummy/__ref_link end local.get $3 end @@ -19207,9 +19792,9 @@ local.set $0 local.get $1 local.get $0 - i32.const 20 + i32.const 21 i32.const 0 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end call $~lib/array/Array#toString i32.const 7152 @@ -19230,9 +19815,9 @@ local.set $0 local.get $1 local.get $0 - i32.const 21 + i32.const 22 i32.const 1 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end call $~lib/array/Array#toString i32.const 7232 @@ -19253,9 +19838,9 @@ local.set $0 local.get $1 local.get $0 - i32.const 16 + i32.const 17 i32.const 3 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end call $~lib/array/Array#toString i32.const 7352 @@ -19276,9 +19861,9 @@ local.set $0 local.get $1 local.get $0 - i32.const 22 + i32.const 23 i32.const 3 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end call $~lib/array/Array#toString i32.const 7512 @@ -19293,7 +19878,7 @@ unreachable end global.get $std/array/randomStringsExpected - call $~lib/array/Array#toString + call $~lib/array/Array#toString i32.const 7616 call $~lib/string/String.__eq i32.eqz @@ -19312,9 +19897,9 @@ local.set $0 local.get $1 local.get $0 - i32.const 14 + i32.const 15 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end call $~lib/array/Array#toString i32.const 7776 @@ -19338,14 +19923,14 @@ local.get $2 i32.const 11 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end local.set $1 local.get $1 i32.load offset=4 local.set $0 local.get $0 - block $~lib/runtime/RETAIN,Array>>|inlined.1 (result i32) + block (result i32) block $~lib/runtime/MAKEARRAY|inlined.76 (result i32) i32.const 2 local.set $2 @@ -19355,17 +19940,17 @@ local.get $3 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end local.set $3 local.get $3 local.get $1 - call $~lib/runtime/doRetain + call $~lib/collector/dummy/__ref_link local.get $3 end i32.store local.get $0 - block $~lib/runtime/RETAIN,Array>>|inlined.2 (result i32) + block (result i32) block $~lib/runtime/MAKEARRAY|inlined.77 (result i32) i32.const 2 local.set $3 @@ -19375,12 +19960,12 @@ local.get $2 i32.const 4 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end local.set $2 local.get $2 local.get $1 - call $~lib/runtime/doRetain + call $~lib/collector/dummy/__ref_link local.get $2 end i32.store offset=4 @@ -19408,16 +19993,16 @@ local.set $3 local.get $2 local.get $3 - i32.const 23 + i32.const 24 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end local.set $1 local.get $1 i32.load offset=4 local.set $0 local.get $0 - block $~lib/runtime/RETAIN,Array>>|inlined.0 (result i32) + block (result i32) block $~lib/runtime/MAKEARRAY|inlined.6 (result i32) i32.const 2 local.set $3 @@ -19427,17 +20012,17 @@ local.get $2 i32.const 7 i32.const 0 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end local.set $2 local.get $2 local.get $1 - call $~lib/runtime/doRetain + call $~lib/collector/dummy/__ref_link local.get $2 end i32.store local.get $0 - block $~lib/runtime/RETAIN,Array>>|inlined.1 (result i32) + block (result i32) block $~lib/runtime/MAKEARRAY|inlined.7 (result i32) i32.const 2 local.set $2 @@ -19447,12 +20032,12 @@ local.get $3 i32.const 7 i32.const 0 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end local.set $3 local.get $3 local.get $1 - call $~lib/runtime/doRetain + call $~lib/collector/dummy/__ref_link local.get $3 end i32.store offset=4 @@ -19480,16 +20065,16 @@ local.set $2 local.get $3 local.get $2 - i32.const 25 + i32.const 26 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end local.set $0 local.get $0 i32.load offset=4 local.set $1 local.get $1 - block $~lib/runtime/RETAIN>,Array>>>|inlined.0 (result i32) + block (result i32) block (result i32) block $~lib/runtime/MAKEARRAY>|inlined.1 (result i32) i32.const 1 @@ -19498,16 +20083,16 @@ local.set $5 local.get $4 local.get $5 - i32.const 24 + i32.const 25 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end local.set $3 local.get $3 i32.load offset=4 local.set $2 local.get $2 - block $~lib/runtime/RETAIN,Array>>|inlined.1 (result i32) + block (result i32) block $~lib/runtime/MAKEARRAY|inlined.11 (result i32) i32.const 1 local.set $5 @@ -19517,12 +20102,12 @@ local.get $4 i32.const 8 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end local.set $4 local.get $4 local.get $3 - call $~lib/runtime/doRetain + call $~lib/collector/dummy/__ref_link local.get $4 end i32.store @@ -19531,7 +20116,7 @@ local.set $2 local.get $2 local.get $0 - call $~lib/runtime/doRetain + call $~lib/collector/dummy/__ref_link local.get $2 end i32.store @@ -19552,7 +20137,7 @@ unreachable end ) - (func $std/array/main (; 264 ;) (type $FUNCSIG$v) + (func $std/array/main (; 286 ;) (type $FUNCSIG$v) global.get $~lib/started i32.eqz if @@ -19561,9 +20146,9 @@ global.set $~lib/started end ) - (func $start (; 265 ;) (type $FUNCSIG$v) + (func $start (; 287 ;) (type $FUNCSIG$v) call $start:std/array ) - (func $null (; 266 ;) (type $FUNCSIG$v) + (func $null (; 288 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/arraybuffer.optimized.wat b/tests/compiler/std/arraybuffer.optimized.wat index 9ae8355e..22b3f93c 100644 --- a/tests/compiler/std/arraybuffer.optimized.wat +++ b/tests/compiler/std/arraybuffer.optimized.wat @@ -3,7 +3,6 @@ (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$v (func)) (type $FUNCSIG$vii (func (param i32 i32))) @@ -87,7 +86,7 @@ global.set $~lib/allocator/arena/offset local.get $1 ) - (func $~lib/runtime/doAllocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) i32.const 1 i32.const 32 @@ -319,44 +318,40 @@ end end ) - (func $~lib/runtime/assertUnregistered (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/register (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 i32.const 200 i32.le_u if i32.const 0 i32.const 64 - i32.const 313 - i32.const 2 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 i32.const 8 i32.sub + local.tee $2 i32.load i32.const -1520547049 i32.ne if i32.const 0 i32.const 64 - i32.const 314 - i32.const 2 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $~lib/runtime/doRegister (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/runtime/assertUnregistered - local.get $0 - i32.const 8 - i32.sub + local.get $2 local.get $1 i32.store local.get $0 ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#constructor (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 1073741816 @@ -370,15 +365,15 @@ unreachable end local.get $0 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.tee $1 local.get $0 call $~lib/memory/memory.fill local.get $1 i32.const 2 - call $~lib/runtime/doRegister + call $~lib/runtime/register ) - (func $~lib/util/memory/memcpy (; 7 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (; 6 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1275,7 +1270,7 @@ i32.store8 end ) - (func $~lib/memory/memory.copy (; 8 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 7 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 @@ -1469,7 +1464,7 @@ end end ) - (func $~lib/arraybuffer/ArrayBuffer#slice (; 9 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#slice (; 8 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -1531,7 +1526,7 @@ i32.gt_s select local.tee $3 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.tee $2 local.get $0 local.get $1 @@ -1540,9 +1535,9 @@ call $~lib/memory/memory.copy local.get $2 i32.const 2 - call $~lib/runtime/doRegister + call $~lib/runtime/register ) - (func $~lib/runtime/ArrayBufferView#constructor (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/runtime/ArrayBufferView#constructor (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) i32.const 1 i32.const 1073741816 @@ -1552,7 +1547,7 @@ if i32.const 0 i32.const 64 - i32.const 348 + i32.const 244 i32.const 57 call $~lib/env/abort unreachable @@ -1567,9 +1562,9 @@ i32.eqz if i32.const 12 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 3 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.set $0 end local.get $0 @@ -1592,18 +1587,18 @@ i32.store offset=8 local.get $0 ) - (func $~lib/runtime/doMakeArray (; 11 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/runtime/makeArray (; 10 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) (local $1 i32) i32.const 16 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 5 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $0 i32.const 8 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 2 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $1 i32.store local.get $0 @@ -1621,7 +1616,7 @@ call $~lib/memory/memory.copy local.get $0 ) - (func $~lib/dataview/DataView#constructor (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/dataview/DataView#constructor (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -1647,9 +1642,9 @@ unreachable end i32.const 12 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 7 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $1 i32.const 0 i32.store @@ -1670,7 +1665,7 @@ i32.store offset=8 local.get $1 ) - (func $start:std/arraybuffer (; 13 ;) (type $FUNCSIG$v) + (func $start:std/arraybuffer (; 12 ;) (type $FUNCSIG$v) i32.const 200 global.set $~lib/allocator/arena/startOffset global.get $~lib/allocator/arena/startOffset @@ -1864,13 +1859,13 @@ unreachable end i32.const 12 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 4 - call $~lib/runtime/doRegister + call $~lib/runtime/register i32.const 0 call $~lib/runtime/ArrayBufferView#constructor global.set $std/arraybuffer/arr8 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray drop global.get $std/arraybuffer/arr8 if (result i32) @@ -1890,9 +1885,9 @@ block $__inlined_func$~lib/arraybuffer/ArrayBuffer.isView13 (result i32) i32.const 1 i32.const 12 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 6 - call $~lib/runtime/doRegister + call $~lib/runtime/register i32.const 2 call $~lib/runtime/ArrayBufferView#constructor br_if $__inlined_func$~lib/arraybuffer/ArrayBuffer.isView13 @@ -1927,10 +1922,10 @@ unreachable end ) - (func $start (; 14 ;) (type $FUNCSIG$v) + (func $start (; 13 ;) (type $FUNCSIG$v) call $start:std/arraybuffer ) - (func $null (; 15 ;) (type $FUNCSIG$v) + (func $null (; 14 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/arraybuffer.untouched.wat b/tests/compiler/std/arraybuffer.untouched.wat index 22b2ee62..2e376b9a 100644 --- a/tests/compiler/std/arraybuffer.untouched.wat +++ b/tests/compiler/std/arraybuffer.untouched.wat @@ -3,7 +3,6 @@ (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) (type $FUNCSIG$v (func)) @@ -16,7 +15,6 @@ (data (i32.const 160) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) - (global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0)) (global $~lib/runtime/HEADER_SIZE i32 (i32.const 8)) (global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) (global $~lib/runtime/MAX_BYTELENGTH i32 (i32.const 1073741816)) @@ -128,7 +126,7 @@ end return ) - (func $~lib/runtime/doAllocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/runtime/ADJUSTOBLOCK @@ -401,7 +399,8 @@ end end ) - (func $~lib/runtime/assertUnregistered (; 5 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/register (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 global.get $~lib/memory/HEAP_BASE i32.gt_u @@ -409,14 +408,16 @@ if i32.const 0 i32.const 64 - i32.const 313 - i32.const 2 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 global.get $~lib/runtime/HEADER_SIZE i32.sub + local.set $2 + local.get $2 i32.load global.get $~lib/runtime/HEADER_MAGIC i32.eq @@ -424,23 +425,17 @@ if i32.const 0 i32.const 64 - i32.const 314 - i32.const 2 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $~lib/runtime/doRegister (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/runtime/assertUnregistered - local.get $0 - global.get $~lib/runtime/HEADER_SIZE - i32.sub + local.get $2 local.get $1 i32.store local.get $0 ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#constructor (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -458,7 +453,7 @@ local.get $1 local.set $2 local.get $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $3 local.get $3 @@ -470,16 +465,16 @@ local.set $2 local.get $2 i32.const 2 - call $~lib/runtime/doRegister + call $~lib/runtime/register end ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 global.get $~lib/runtime/HEADER_SIZE i32.sub i32.load offset=4 ) - (func $~lib/util/memory/memcpy (; 9 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (; 8 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1680,7 +1675,7 @@ i32.store8 end ) - (func $~lib/memory/memory.copy (; 10 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 9 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1911,7 +1906,7 @@ end end ) - (func $~lib/arraybuffer/ArrayBuffer#slice (; 11 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#slice (; 10 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1985,7 +1980,7 @@ local.get $6 local.set $4 local.get $4 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $7 local.get $7 @@ -1999,24 +1994,24 @@ local.set $4 local.get $4 i32.const 2 - call $~lib/runtime/doRegister + call $~lib/runtime/register end ) - (func $~lib/arraybuffer/ArrayBuffer.isView> (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer.isView> (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 if nop end i32.const 0 ) - (func $~lib/arraybuffer/ArrayBuffer.isView (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer.isView (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 if nop end i32.const 0 ) - (func $~lib/arraybuffer/ArrayBuffer.isView (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer.isView (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 if i32.const 1 @@ -2024,7 +2019,7 @@ end i32.const 0 ) - (func $~lib/arraybuffer/ArrayBuffer.isView (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer.isView (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 if i32.const 1 @@ -2032,7 +2027,7 @@ end i32.const 0 ) - (func $~lib/arraybuffer/ArrayBuffer.isView (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer.isView (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 if i32.const 1 @@ -2040,7 +2035,7 @@ end i32.const 0 ) - (func $~lib/runtime/ArrayBufferView#constructor (; 17 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/runtime/ArrayBufferView#constructor (; 16 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -2051,7 +2046,7 @@ if i32.const 0 i32.const 64 - i32.const 348 + i32.const 244 i32.const 57 call $~lib/env/abort unreachable @@ -2072,12 +2067,12 @@ i32.const 12 local.set $4 local.get $4 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $4 local.get $4 i32.const 3 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -2102,7 +2097,7 @@ i32.store offset=8 local.get $0 ) - (func $~lib/typedarray/Uint8Array#constructor (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#constructor (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 if (result i32) @@ -2112,12 +2107,12 @@ i32.const 12 local.set $2 local.get $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $2 local.get $2 i32.const 4 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.get $1 i32.const 0 @@ -2125,14 +2120,14 @@ local.set $0 local.get $0 ) - (func $~lib/runtime/doMakeArray (; 19 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/runtime/makeArray (; 18 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) i32.const 16 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.get $2 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.set $4 local.get $0 local.get $3 @@ -2141,9 +2136,9 @@ local.get $0 local.get $3 i32.shl - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 2 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.set $6 local.get $4 local.get $6 @@ -2166,7 +2161,7 @@ end local.get $4 ) - (func $~lib/typedarray/Int32Array#constructor (; 20 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#constructor (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 if (result i32) @@ -2176,12 +2171,12 @@ i32.const 12 local.set $2 local.get $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $2 local.get $2 i32.const 6 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.get $1 i32.const 2 @@ -2189,7 +2184,7 @@ local.set $0 local.get $0 ) - (func $~lib/dataview/DataView#constructor (; 21 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/dataview/DataView#constructor (; 20 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) local.get $3 @@ -2229,12 +2224,12 @@ i32.const 12 local.set $4 local.get $4 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $4 local.get $4 i32.const 7 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -2263,11 +2258,11 @@ i32.store offset=8 local.get $0 ) - (func $~lib/typedarray/Uint8Array#get:buffer (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#get:buffer (; 21 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load ) - (func $start:std/arraybuffer (; 23 ;) (type $FUNCSIG$v) + (func $start:std/arraybuffer (; 22 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) global.get $~lib/memory/HEAP_BASE @@ -2538,7 +2533,7 @@ local.get $1 i32.const 5 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end call $~lib/arraybuffer/ArrayBuffer.isView> i32.eqz @@ -2592,9 +2587,9 @@ unreachable end ) - (func $start (; 24 ;) (type $FUNCSIG$v) + (func $start (; 23 ;) (type $FUNCSIG$v) call $start:std/arraybuffer ) - (func $null (; 25 ;) (type $FUNCSIG$v) + (func $null (; 24 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/dataview.optimized.wat b/tests/compiler/std/dataview.optimized.wat index 5ec57987..fd7eadd7 100644 --- a/tests/compiler/std/dataview.optimized.wat +++ b/tests/compiler/std/dataview.optimized.wat @@ -4,10 +4,10 @@ (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$fiii (func (param i32 i32 i32) (result f32))) (type $FUNCSIG$jj (func (param i64) (result i64))) (type $FUNCSIG$v (func)) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$dii (func (param i32 i32) (result f64))) (type $FUNCSIG$jii (func (param i32 i32) (result i64))) (type $FUNCSIG$vifi (func (param i32 f32 i32))) @@ -91,7 +91,7 @@ global.set $~lib/allocator/arena/offset local.get $1 ) - (func $~lib/runtime/doAllocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) i32.const 1 i32.const 32 @@ -156,60 +156,56 @@ i32.const 0 i32.store8 ) - (func $~lib/runtime/assertUnregistered (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/register (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 i32.const 224 i32.le_u if i32.const 0 i32.const 16 - i32.const 313 - i32.const 2 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 i32.const 8 i32.sub + local.tee $2 i32.load i32.const -1520547049 i32.ne if i32.const 0 i32.const 16 - i32.const 314 - i32.const 2 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $~lib/runtime/doRegister (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/runtime/assertUnregistered - local.get $0 - i32.const 8 - i32.sub + local.get $2 local.get $1 i32.store local.get $0 ) - (func $~lib/runtime/ArrayBufferView#constructor (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/ArrayBufferView#constructor (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) i32.const 8 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.tee $1 call $~lib/memory/memory.fill local.get $1 i32.const 2 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.set $1 local.get $0 i32.eqz if i32.const 12 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 3 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.set $0 end local.get $0 @@ -232,7 +228,7 @@ i32.store offset=8 local.get $0 ) - (func $~lib/typedarray/Uint8Array#__set (; 7 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint8Array#__set (; 6 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -252,7 +248,7 @@ local.get $2 i32.store8 ) - (func $~lib/dataview/DataView#constructor (; 8 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/dataview/DataView#constructor (; 7 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) block (result i32) local.get $2 @@ -289,9 +285,9 @@ unreachable end i32.const 12 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 5 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $3 i32.const 0 i32.store @@ -314,7 +310,7 @@ i32.store offset=8 local.get $3 ) - (func $~lib/dataview/DataView#getFloat32 (; 9 ;) (type $FUNCSIG$fiii) (param $0 i32) (param $1 i32) (param $2 i32) (result f32) + (func $~lib/dataview/DataView#getFloat32 (; 8 ;) (type $FUNCSIG$fiii) (param $0 i32) (param $1 i32) (param $2 i32) (result f32) local.get $1 i32.const 0 i32.lt_s @@ -360,7 +356,7 @@ f32.reinterpret_i32 end ) - (func $~lib/polyfills/bswap (; 10 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) + (func $~lib/polyfills/bswap (; 9 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) local.get $0 i64.const 8 i64.shr_u @@ -386,7 +382,7 @@ i64.const 32 i64.rotr ) - (func $~lib/dataview/DataView#getFloat64 (; 11 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/dataview/DataView#getFloat64 (; 10 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) i32.const 8 local.get $0 i32.load offset=8 @@ -412,7 +408,7 @@ f64.reinterpret_i64 end ) - (func $~lib/dataview/DataView#getInt8 (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/dataview/DataView#getInt8 (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -431,7 +427,7 @@ i32.add i32.load8_s ) - (func $~lib/dataview/DataView#getInt16 (; 13 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/dataview/DataView#getInt16 (; 12 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 i32.const 0 i32.lt_s @@ -473,7 +469,7 @@ i32.or end ) - (func $~lib/dataview/DataView#getInt32 (; 14 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/dataview/DataView#getInt32 (; 13 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 i32.const 0 i32.lt_s @@ -515,7 +511,7 @@ i32.or end ) - (func $~lib/dataview/DataView#getInt64 (; 15 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/dataview/DataView#getInt64 (; 14 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i64) i32.const 8 local.get $0 @@ -541,7 +537,7 @@ call $~lib/polyfills/bswap end ) - (func $~lib/dataview/DataView#getUint8 (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/dataview/DataView#getUint8 (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -560,7 +556,7 @@ i32.add i32.load8_u ) - (func $~lib/dataview/DataView#getUint16 (; 17 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/dataview/DataView#getUint16 (; 16 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 i32.const 0 i32.lt_s @@ -600,7 +596,7 @@ i32.or end ) - (func $~lib/dataview/DataView#getUint32 (; 18 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/dataview/DataView#getUint32 (; 17 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 i32.const 0 i32.lt_s @@ -642,7 +638,7 @@ i32.or end ) - (func $~lib/dataview/DataView#getUint64 (; 19 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/dataview/DataView#getUint64 (; 18 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i64) i32.const 8 local.get $0 @@ -668,7 +664,7 @@ call $~lib/polyfills/bswap end ) - (func $~lib/dataview/DataView#setFloat32 (; 20 ;) (type $FUNCSIG$vifi) (param $0 i32) (param $1 f32) (param $2 i32) + (func $~lib/dataview/DataView#setFloat32 (; 19 ;) (type $FUNCSIG$vifi) (param $0 i32) (param $1 f32) (param $2 i32) i32.const 4 local.get $0 i32.load offset=8 @@ -706,7 +702,7 @@ i32.store end ) - (func $~lib/dataview/DataView#setFloat64 (; 21 ;) (type $FUNCSIG$vidi) (param $0 i32) (param $1 f64) (param $2 i32) + (func $~lib/dataview/DataView#setFloat64 (; 20 ;) (type $FUNCSIG$vidi) (param $0 i32) (param $1 f64) (param $2 i32) i32.const 8 local.get $0 i32.load offset=8 @@ -734,7 +730,7 @@ i64.store end ) - (func $~lib/dataview/DataView#setInt8 (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/dataview/DataView#setInt8 (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) i32.const 0 local.get $0 i32.load offset=8 @@ -752,7 +748,7 @@ i32.const 108 i32.store8 ) - (func $~lib/dataview/DataView#setInt16 (; 23 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/dataview/DataView#setInt16 (; 22 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) i32.const 2 local.get $0 i32.load offset=8 @@ -788,7 +784,7 @@ local.get $1 i32.store16 ) - (func $~lib/dataview/DataView#setInt32 (; 24 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/dataview/DataView#setInt32 (; 23 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) i32.const 4 local.get $0 i32.load offset=8 @@ -824,7 +820,7 @@ local.get $1 i32.store ) - (func $~lib/dataview/DataView#setInt64 (; 25 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/dataview/DataView#setInt64 (; 24 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) i32.const 8 local.get $0 i32.load offset=8 @@ -848,7 +844,7 @@ end i64.store ) - (func $~lib/dataview/DataView#setUint8 (; 26 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/dataview/DataView#setUint8 (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) i32.const 0 local.get $0 i32.load offset=8 @@ -866,7 +862,7 @@ i32.const 238 i32.store8 ) - (func $~lib/dataview/DataView#setUint16 (; 27 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/dataview/DataView#setUint16 (; 26 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) i32.const 2 local.get $0 i32.load offset=8 @@ -900,7 +896,7 @@ local.get $1 i32.store16 ) - (func $~lib/dataview/DataView#setUint32 (; 28 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/dataview/DataView#setUint32 (; 27 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) i32.const 4 local.get $0 i32.load offset=8 @@ -936,7 +932,7 @@ local.get $1 i32.store ) - (func $~lib/dataview/DataView#setUint64 (; 29 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/dataview/DataView#setUint64 (; 28 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) i32.const 8 local.get $0 i32.load offset=8 @@ -960,16 +956,16 @@ end i64.store ) - (func $start:std/dataview (; 30 ;) (type $FUNCSIG$v) + (func $start:std/dataview (; 29 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 224 global.set $~lib/allocator/arena/startOffset global.get $~lib/allocator/arena/startOffset global.set $~lib/allocator/arena/offset i32.const 12 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 4 - call $~lib/runtime/doRegister + call $~lib/runtime/register call $~lib/runtime/ArrayBufferView#constructor global.set $std/dataview/array global.get $std/dataview/array @@ -2491,10 +2487,10 @@ unreachable end ) - (func $start (; 31 ;) (type $FUNCSIG$v) + (func $start (; 30 ;) (type $FUNCSIG$v) call $start:std/dataview ) - (func $null (; 32 ;) (type $FUNCSIG$v) + (func $null (; 31 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/dataview.untouched.wat b/tests/compiler/std/dataview.untouched.wat index 76ae06d9..01e8b4d8 100644 --- a/tests/compiler/std/dataview.untouched.wat +++ b/tests/compiler/std/dataview.untouched.wat @@ -4,7 +4,6 @@ (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) (type $FUNCSIG$fiii (func (param i32 i32 i32) (result f32))) (type $FUNCSIG$diii (func (param i32 i32 i32) (result f64))) @@ -23,7 +22,6 @@ (data (i32.const 184) "\01\00\00\00\1e\00\00\00s\00t\00d\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) - (global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0)) (global $~lib/runtime/HEADER_SIZE i32 (i32.const 8)) (global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) (global $~lib/runtime/MAX_BYTELENGTH i32 (i32.const 1073741816)) @@ -134,7 +132,7 @@ end return ) - (func $~lib/runtime/doAllocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/runtime/ADJUSTOBLOCK @@ -407,7 +405,8 @@ end end ) - (func $~lib/runtime/assertUnregistered (; 5 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/register (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 global.get $~lib/memory/HEAP_BASE i32.gt_u @@ -415,14 +414,16 @@ if i32.const 0 i32.const 16 - i32.const 313 - i32.const 2 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 global.get $~lib/runtime/HEADER_SIZE i32.sub + local.set $2 + local.get $2 i32.load global.get $~lib/runtime/HEADER_MAGIC i32.eq @@ -430,23 +431,17 @@ if i32.const 0 i32.const 16 - i32.const 314 - i32.const 2 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $~lib/runtime/doRegister (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/runtime/assertUnregistered - local.get $0 - global.get $~lib/runtime/HEADER_SIZE - i32.sub + local.get $2 local.get $1 i32.store local.get $0 ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#constructor (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -464,7 +459,7 @@ local.get $1 local.set $2 local.get $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $3 local.get $3 @@ -476,10 +471,10 @@ local.set $2 local.get $2 i32.const 2 - call $~lib/runtime/doRegister + call $~lib/runtime/register end ) - (func $~lib/runtime/ArrayBufferView#constructor (; 8 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/runtime/ArrayBufferView#constructor (; 7 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -490,7 +485,7 @@ if i32.const 0 i32.const 16 - i32.const 348 + i32.const 244 i32.const 57 call $~lib/env/abort unreachable @@ -511,12 +506,12 @@ i32.const 12 local.set $4 local.get $4 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $4 local.get $4 i32.const 3 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -541,7 +536,7 @@ i32.store offset=8 local.get $0 ) - (func $~lib/typedarray/Uint8Array#constructor (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#constructor (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 if (result i32) @@ -551,12 +546,12 @@ i32.const 12 local.set $2 local.get $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $2 local.get $2 i32.const 4 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.get $1 i32.const 0 @@ -564,7 +559,7 @@ local.set $0 local.get $0 ) - (func $~lib/typedarray/Uint8Array#__set (; 10 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint8Array#__set (; 9 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -584,13 +579,13 @@ local.get $2 i32.store8 ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 global.get $~lib/runtime/HEADER_SIZE i32.sub i32.load offset=4 ) - (func $~lib/dataview/DataView#constructor (; 12 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/dataview/DataView#constructor (; 11 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) local.get $3 @@ -630,12 +625,12 @@ i32.const 12 local.set $4 local.get $4 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $4 local.get $4 i32.const 5 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -664,22 +659,22 @@ i32.store offset=8 local.get $0 ) - (func $~lib/typedarray/Uint8Array#get:buffer (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#get:buffer (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load ) - (func $~lib/runtime/ArrayBufferView#get:byteOffset (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/ArrayBufferView#get:byteOffset (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 i32.load i32.sub ) - (func $~lib/runtime/ArrayBufferView#get:byteLength (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/ArrayBufferView#get:byteLength (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=8 ) - (func $~lib/polyfills/bswap (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/polyfills/bswap (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const -16711936 i32.and @@ -693,7 +688,7 @@ i32.or return ) - (func $~lib/dataview/DataView#getFloat32 (; 17 ;) (type $FUNCSIG$fiii) (param $0 i32) (param $1 i32) (param $2 i32) (result f32) + (func $~lib/dataview/DataView#getFloat32 (; 16 ;) (type $FUNCSIG$fiii) (param $0 i32) (param $1 i32) (param $2 i32) (result f32) local.get $1 i32.const 0 i32.lt_s @@ -731,7 +726,7 @@ f32.reinterpret_i32 end ) - (func $~lib/polyfills/bswap (; 18 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) + (func $~lib/polyfills/bswap (; 17 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) (local $1 i64) (local $2 i64) (local $3 i64) @@ -770,7 +765,7 @@ i64.rotr return ) - (func $~lib/dataview/DataView#getFloat64 (; 19 ;) (type $FUNCSIG$diii) (param $0 i32) (param $1 i32) (param $2 i32) (result f64) + (func $~lib/dataview/DataView#getFloat64 (; 18 ;) (type $FUNCSIG$diii) (param $0 i32) (param $1 i32) (param $2 i32) (result f64) local.get $1 i32.const 0 i32.lt_s @@ -808,7 +803,7 @@ f64.reinterpret_i64 end ) - (func $~lib/dataview/DataView#getInt8 (; 20 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/dataview/DataView#getInt8 (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -827,7 +822,7 @@ i32.add i32.load8_s ) - (func $~lib/polyfills/bswap (; 21 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/polyfills/bswap (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 8 i32.shl @@ -843,7 +838,7 @@ i32.or return ) - (func $~lib/dataview/DataView#getInt16 (; 22 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/dataview/DataView#getInt16 (; 21 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $1 i32.const 0 @@ -879,7 +874,7 @@ call $~lib/polyfills/bswap end ) - (func $~lib/polyfills/bswap (; 23 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/polyfills/bswap (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const -16711936 i32.and @@ -893,7 +888,7 @@ i32.or return ) - (func $~lib/dataview/DataView#getInt32 (; 24 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/dataview/DataView#getInt32 (; 23 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $1 i32.const 0 @@ -929,7 +924,7 @@ call $~lib/polyfills/bswap end ) - (func $~lib/polyfills/bswap (; 25 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) + (func $~lib/polyfills/bswap (; 24 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) (local $1 i64) (local $2 i64) (local $3 i64) @@ -968,7 +963,7 @@ i64.rotr return ) - (func $~lib/dataview/DataView#getInt64 (; 26 ;) (type $FUNCSIG$jiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i64) + (func $~lib/dataview/DataView#getInt64 (; 25 ;) (type $FUNCSIG$jiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i64) (local $3 i64) local.get $1 i32.const 0 @@ -1004,7 +999,7 @@ call $~lib/polyfills/bswap end ) - (func $~lib/dataview/DataView#getUint8 (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/dataview/DataView#getUint8 (; 26 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -1023,7 +1018,7 @@ i32.add i32.load8_u ) - (func $~lib/polyfills/bswap (; 28 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/polyfills/bswap (; 27 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 8 i32.shl @@ -1037,7 +1032,7 @@ i32.or return ) - (func $~lib/dataview/DataView#getUint16 (; 29 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/dataview/DataView#getUint16 (; 28 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $1 i32.const 0 @@ -1073,7 +1068,7 @@ call $~lib/polyfills/bswap end ) - (func $~lib/dataview/DataView#getUint32 (; 30 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/dataview/DataView#getUint32 (; 29 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $1 i32.const 0 @@ -1109,7 +1104,7 @@ call $~lib/polyfills/bswap end ) - (func $~lib/dataview/DataView#getUint64 (; 31 ;) (type $FUNCSIG$jiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i64) + (func $~lib/dataview/DataView#getUint64 (; 30 ;) (type $FUNCSIG$jiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i64) (local $3 i64) local.get $1 i32.const 0 @@ -1145,7 +1140,7 @@ call $~lib/polyfills/bswap end ) - (func $~lib/dataview/DataView#setFloat32 (; 32 ;) (type $FUNCSIG$viifi) (param $0 i32) (param $1 i32) (param $2 f32) (param $3 i32) + (func $~lib/dataview/DataView#setFloat32 (; 31 ;) (type $FUNCSIG$viifi) (param $0 i32) (param $1 i32) (param $2 f32) (param $3 i32) local.get $1 i32.const 0 i32.lt_s @@ -1185,7 +1180,7 @@ i32.store end ) - (func $~lib/dataview/DataView#setFloat64 (; 33 ;) (type $FUNCSIG$viidi) (param $0 i32) (param $1 i32) (param $2 f64) (param $3 i32) + (func $~lib/dataview/DataView#setFloat64 (; 32 ;) (type $FUNCSIG$viidi) (param $0 i32) (param $1 i32) (param $2 f64) (param $3 i32) local.get $1 i32.const 0 i32.lt_s @@ -1225,7 +1220,7 @@ i64.store end ) - (func $~lib/dataview/DataView#setInt8 (; 34 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/dataview/DataView#setInt8 (; 33 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -1245,7 +1240,7 @@ local.get $2 i32.store8 ) - (func $~lib/dataview/DataView#setInt16 (; 35 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/dataview/DataView#setInt16 (; 34 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) local.get $1 i32.const 0 i32.lt_s @@ -1279,7 +1274,7 @@ end i32.store16 ) - (func $~lib/dataview/DataView#setInt32 (; 36 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/dataview/DataView#setInt32 (; 35 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) local.get $1 i32.const 0 i32.lt_s @@ -1313,7 +1308,7 @@ end i32.store ) - (func $~lib/dataview/DataView#setInt64 (; 37 ;) (type $FUNCSIG$viiji) (param $0 i32) (param $1 i32) (param $2 i64) (param $3 i32) + (func $~lib/dataview/DataView#setInt64 (; 36 ;) (type $FUNCSIG$viiji) (param $0 i32) (param $1 i32) (param $2 i64) (param $3 i32) local.get $1 i32.const 0 i32.lt_s @@ -1347,7 +1342,7 @@ end i64.store ) - (func $~lib/dataview/DataView#setUint8 (; 38 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/dataview/DataView#setUint8 (; 37 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -1367,7 +1362,7 @@ local.get $2 i32.store8 ) - (func $~lib/dataview/DataView#setUint16 (; 39 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/dataview/DataView#setUint16 (; 38 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) local.get $1 i32.const 0 i32.lt_s @@ -1401,7 +1396,7 @@ end i32.store16 ) - (func $~lib/dataview/DataView#setUint32 (; 40 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/dataview/DataView#setUint32 (; 39 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) local.get $1 i32.const 0 i32.lt_s @@ -1435,7 +1430,7 @@ end i32.store ) - (func $~lib/dataview/DataView#setUint64 (; 41 ;) (type $FUNCSIG$viiji) (param $0 i32) (param $1 i32) (param $2 i64) (param $3 i32) + (func $~lib/dataview/DataView#setUint64 (; 40 ;) (type $FUNCSIG$viiji) (param $0 i32) (param $1 i32) (param $2 i64) (param $3 i32) local.get $1 i32.const 0 i32.lt_s @@ -1469,7 +1464,7 @@ end i64.store ) - (func $start:std/dataview (; 42 ;) (type $FUNCSIG$v) + (func $start:std/dataview (; 41 ;) (type $FUNCSIG$v) global.get $~lib/memory/HEAP_BASE i32.const 7 i32.add @@ -3162,9 +3157,9 @@ unreachable end ) - (func $start (; 43 ;) (type $FUNCSIG$v) + (func $start (; 42 ;) (type $FUNCSIG$v) call $start:std/dataview ) - (func $null (; 44 ;) (type $FUNCSIG$v) + (func $null (; 43 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/date.optimized.wat b/tests/compiler/std/date.optimized.wat index cae69d82..9bcf0e67 100644 --- a/tests/compiler/std/date.optimized.wat +++ b/tests/compiler/std/date.optimized.wat @@ -3,9 +3,7 @@ (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$d (func (result f64))) (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$v (func)) - (type $FUNCSIG$ij (func (param i64) (result i32))) (import "Date" "UTC" (func $~lib/bindings/Date/UTC (param i32 i32 i32 i32 i32 i32 f64) (result f64))) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) (import "Date" "now" (func $~lib/bindings/Date/now (result f64))) @@ -83,62 +81,42 @@ global.set $~lib/allocator/arena/offset local.get $1 ) - (func $~lib/runtime/assertUnregistered (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/register (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) local.get $0 i32.const 80 i32.le_u if i32.const 0 i32.const 48 - i32.const 313 - i32.const 2 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 i32.const 8 i32.sub + local.tee $1 i32.load i32.const -1520547049 i32.ne if i32.const 0 i32.const 48 - i32.const 314 - i32.const 2 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $~lib/date/Date#constructor (; 5 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) - (local $1 i32) - i32.const 16 - call $~lib/memory/memory.allocate - local.tee $1 - i32.const -1520547049 - i32.store local.get $1 - i32.const 8 - i32.store offset=4 - local.get $1 - i32.const 8 - i32.add - local.tee $1 - call $~lib/runtime/assertUnregistered - local.get $1 - i32.const 8 - i32.sub i32.const 2 i32.store - local.get $1 - i64.const 0 - i64.store - local.get $1 local.get $0 - i64.store - local.get $1 ) - (func $start:std/date (; 6 ;) (type $FUNCSIG$v) + (func $start:std/date (; 5 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i64) i32.const 1970 i32.const 0 i32.const 1 @@ -215,7 +193,26 @@ global.get $~lib/allocator/arena/startOffset global.set $~lib/allocator/arena/offset global.get $std/date/creationTime - call $~lib/date/Date#constructor + local.set $1 + i32.const 16 + call $~lib/memory/memory.allocate + local.tee $0 + i32.const -1520547049 + i32.store + local.get $0 + i32.const 8 + i32.store offset=4 + local.get $0 + i32.const 8 + i32.add + call $~lib/runtime/register + local.tee $0 + i64.const 0 + i64.store + local.get $0 + local.get $1 + i64.store + local.get $0 global.set $std/date/date global.get $std/date/creationTime global.get $std/date/date @@ -230,15 +227,15 @@ unreachable end global.get $std/date/date + local.tee $0 global.get $std/date/creationTime i64.const 1 i64.add + local.tee $1 i64.store - global.get $std/date/date + local.get $0 i64.load - global.get $std/date/creationTime - i64.const 1 - i64.add + local.get $1 i64.ne if i32.const 0 @@ -249,10 +246,10 @@ unreachable end ) - (func $start (; 7 ;) (type $FUNCSIG$v) + (func $start (; 6 ;) (type $FUNCSIG$v) call $start:std/date ) - (func $null (; 8 ;) (type $FUNCSIG$v) + (func $null (; 7 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/date.untouched.wat b/tests/compiler/std/date.untouched.wat index 48194f0e..023d2cec 100644 --- a/tests/compiler/std/date.untouched.wat +++ b/tests/compiler/std/date.untouched.wat @@ -5,7 +5,6 @@ (type $FUNCSIG$iij (func (param i32 i64) (result i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$ji (func (param i32) (result i64))) (type $FUNCSIG$jij (func (param i32 i64) (result i64))) (type $FUNCSIG$v (func)) @@ -18,7 +17,6 @@ (table $0 1 funcref) (elem (i32.const 0) $null) (global $std/date/creationTime (mut i64) (i64.const 0)) - (global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0)) (global $~lib/runtime/HEADER_SIZE i32 (i32.const 8)) (global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) @@ -126,7 +124,7 @@ end return ) - (func $~lib/runtime/doAllocate (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/allocate (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/runtime/ADJUSTOBLOCK @@ -142,7 +140,8 @@ global.get $~lib/runtime/HEADER_SIZE i32.add ) - (func $~lib/runtime/assertUnregistered (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/register (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 global.get $~lib/memory/HEAP_BASE i32.gt_u @@ -150,14 +149,16 @@ if i32.const 0 i32.const 48 - i32.const 313 - i32.const 2 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 global.get $~lib/runtime/HEADER_SIZE i32.sub + local.set $2 + local.get $2 i32.load global.get $~lib/runtime/HEADER_MAGIC i32.eq @@ -165,23 +166,17 @@ if i32.const 0 i32.const 48 - i32.const 314 - i32.const 2 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $~lib/runtime/doRegister (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/runtime/assertUnregistered - local.get $0 - global.get $~lib/runtime/HEADER_SIZE - i32.sub + local.get $2 local.get $1 i32.store local.get $0 ) - (func $~lib/date/Date#constructor (; 8 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/date/Date#constructor (; 7 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i32) block (result i32) local.get $0 @@ -192,12 +187,12 @@ i32.const 8 local.set $2 local.get $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $2 local.get $2 i32.const 2 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -210,17 +205,17 @@ i64.store local.get $0 ) - (func $~lib/date/Date#getTime (; 9 ;) (type $FUNCSIG$ji) (param $0 i32) (result i64) + (func $~lib/date/Date#getTime (; 8 ;) (type $FUNCSIG$ji) (param $0 i32) (result i64) local.get $0 i64.load ) - (func $~lib/date/Date#setTime (; 10 ;) (type $FUNCSIG$jij) (param $0 i32) (param $1 i64) (result i64) + (func $~lib/date/Date#setTime (; 9 ;) (type $FUNCSIG$jij) (param $0 i32) (param $1 i64) (result i64) local.get $0 local.get $1 i64.store local.get $1 ) - (func $start:std/date (; 11 ;) (type $FUNCSIG$v) + (func $start:std/date (; 10 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -405,9 +400,9 @@ unreachable end ) - (func $start (; 12 ;) (type $FUNCSIG$v) + (func $start (; 11 ;) (type $FUNCSIG$v) call $start:std/date ) - (func $null (; 13 ;) (type $FUNCSIG$v) + (func $null (; 12 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/hash.untouched.wat b/tests/compiler/std/hash.untouched.wat index a136108c..5d7cff97 100644 --- a/tests/compiler/std/hash.untouched.wat +++ b/tests/compiler/std/hash.untouched.wat @@ -9,7 +9,6 @@ (data (i32.const 48) "\01\00\00\00\06\00\00\00a\00b\00c\00") (table $0 1 funcref) (elem (i32.const 0) $null) - (global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0)) (global $~lib/runtime/HEADER_SIZE i32 (i32.const 8)) (global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) (global $~lib/memory/HEAP_BASE i32 (i32.const 64)) diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat index feb6b7cd..b7a0b6e4 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -2,11 +2,11 @@ (type $FUNCSIG$v (func)) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$vii (func (param i32 i32))) + (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$iij (func (param i32 i64) (result i32))) (type $FUNCSIG$ij (func (param i64) (result i32))) (type $FUNCSIG$iiji (func (param i32 i64 i32) (result i32))) @@ -23,15 +23,20 @@ (type $FUNCSIG$vid (func (param i32 f64))) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") - (data (i32.const 48) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 96) "\02\00\00\00\14\00\00\00s\00t\00d\00/\00m\00a\00p\00.\00t\00s") + (data (i32.const 8) "\02\00\00\00\1e") + (data (i32.const 24) "~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") + (data (i32.const 56) "\02\00\00\00&") + (data (i32.const 72) "~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data (i32.const 112) "\02\00\00\00\14") + (data (i32.const 128) "s\00t\00d\00/\00m\00a\00p\00.\00t\00s") (table $0 1 funcref) (elem (i32.const 0) $null) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) + (global $~lib/capabilities i32 (i32.const 2)) (export "memory" (memory $0)) (export "table" (table $0)) + (export ".capabilities" (global $~lib/capabilities)) (start $start) (func $~lib/memory/memory.allocate (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) @@ -95,12 +100,12 @@ global.set $~lib/allocator/arena/offset local.get $1 ) - (func $~lib/runtime/doAllocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) i32.const 1 i32.const 32 local.get $0 - i32.const 7 + i32.const 15 i32.add i32.clz i32.sub @@ -113,47 +118,49 @@ local.get $0 i32.store offset=4 local.get $1 - i32.const 8 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $1 + i32.const 16 i32.add ) - (func $~lib/runtime/assertUnregistered (; 3 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/register (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 - i32.const 124 + i32.const 148 i32.le_u if i32.const 0 - i32.const 16 - i32.const 313 - i32.const 2 + i32.const 24 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 - i32.const 8 + i32.const 16 i32.sub + local.tee $2 i32.load i32.const -1520547049 i32.ne if i32.const 0 - i32.const 16 - i32.const 314 - i32.const 2 + i32.const 24 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $~lib/runtime/doRegister (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/runtime/assertUnregistered - local.get $0 - i32.const 8 - i32.sub + local.get $2 local.get $1 i32.store local.get $0 ) - (func $~lib/memory/memory.fill (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/memory/memory.fill (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block $~lib/util/memory/memset|inlined.0 local.get $1 @@ -364,39 +371,51 @@ end end ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#constructor (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 - i32.const 1073741816 + i32.const 1073741808 i32.gt_u if i32.const 0 - i32.const 56 + i32.const 72 i32.const 25 i32.const 43 call $~lib/env/abort unreachable end local.get $0 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.tee $1 local.get $0 call $~lib/memory/memory.fill local.get $1 i32.const 3 - call $~lib/runtime/doRegister + call $~lib/runtime/register ) - (func $~lib/map/Map#clear (; 7 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 + (func $~lib/map/Map#clear (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + local.get $0 + i32.load + drop + local.get $0 + local.get $1 i32.store local.get $0 i32.const 3 i32.store offset=4 - local.get $0 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + local.get $0 + i32.load offset=8 + i32.ne + drop + local.get $0 + local.get $1 i32.store offset=8 local.get $0 i32.const 4 @@ -408,12 +427,12 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 8 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/map/Map#constructor (; 7 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $0 i32.const 0 i32.store @@ -436,7 +455,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 9 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 8 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -481,7 +500,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -497,7 +516,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -508,12 +527,12 @@ local.get $1 i32.const 1 i32.add - local.tee $4 + local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $4 + local.set $4 + local.get $3 f64.convert_i32_s f64.const 2.6666666666666665 f64.mul @@ -522,39 +541,39 @@ i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 local.get $0 i32.load offset=8 - local.tee $2 + local.tee $3 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add local.set $7 - local.get $4 - local.set $3 + local.get $5 + local.set $2 loop $continue|0 - local.get $2 + local.get $3 local.get $7 i32.ne if - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $3 local.get $2 + local.get $3 i32.load8_s i32.store8 - local.get $3 local.get $2 + local.get $3 i32.load offset=4 i32.store offset=4 - local.get $3 local.get $2 + local.get $3 i32.load8_s i32.const -2128831035 i32.xor @@ -564,44 +583,54 @@ i32.and i32.const 2 i32.shl - local.get $5 + local.get $4 i32.add local.tee $8 i32.load i32.store offset=8 local.get $8 - local.get $3 + local.get $2 i32.store - local.get $3 + local.get $2 i32.const 12 i32.add - local.set $3 + local.set $2 end - local.get $2 + local.get $3 i32.const 12 i32.add - local.set $2 + local.set $3 br $continue|0 end end local.get $0 - local.get $5 + local.tee $2 + i32.load + drop + local.get $2 + local.get $4 i32.store - local.get $0 + local.get $2 local.get $1 i32.store offset=4 + local.get $5 + local.tee $0 + local.get $2 + i32.load offset=8 + i32.ne + drop + local.get $2 local.get $0 - local.get $4 i32.store offset=8 - local.get $0 + local.get $2 local.get $6 i32.store offset=12 - local.get $0 - local.get $0 + local.get $2 + local.get $2 i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 12 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -700,7 +729,7 @@ i32.store end ) - (func $~lib/map/Map#get (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -721,7 +750,7 @@ unreachable end ) - (func $~lib/map/Map#delete (; 14 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#delete (; 13 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -788,7 +817,7 @@ call $~lib/map/Map#rehash end ) - (func $std/map/test (; 15 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 14 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) call $~lib/map/Map#constructor @@ -803,8 +832,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -825,8 +854,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -844,8 +873,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 11 + i32.const 128 + i32.const 12 i32.const 4 call $~lib/env/abort unreachable @@ -865,8 +894,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 13 + i32.const 128 + i32.const 14 i32.const 2 call $~lib/env/abort unreachable @@ -884,8 +913,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 17 + i32.const 128 + i32.const 18 i32.const 4 call $~lib/env/abort unreachable @@ -903,8 +932,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -925,8 +954,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 4 call $~lib/env/abort unreachable @@ -944,8 +973,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 21 + i32.const 128 + i32.const 22 i32.const 4 call $~lib/env/abort unreachable @@ -965,8 +994,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 23 + i32.const 128 + i32.const 24 i32.const 2 call $~lib/env/abort unreachable @@ -984,8 +1013,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 27 + i32.const 128 + i32.const 28 i32.const 4 call $~lib/env/abort unreachable @@ -1003,8 +1032,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 4 call $~lib/env/abort unreachable @@ -1017,8 +1046,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 30 + i32.const 128 + i32.const 31 i32.const 4 call $~lib/env/abort unreachable @@ -1038,8 +1067,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 2 call $~lib/env/abort unreachable @@ -1056,8 +1085,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -1078,8 +1107,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 4 call $~lib/env/abort unreachable @@ -1092,8 +1121,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 40 + i32.const 128 + i32.const 41 i32.const 4 call $~lib/env/abort unreachable @@ -1113,8 +1142,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable @@ -1125,19 +1154,19 @@ i32.load offset=20 if i32.const 0 - i32.const 104 - i32.const 46 + i32.const 128 + i32.const 47 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/map/Map#constructor (; 16 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/map/Map#constructor (; 15 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 4 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $0 i32.const 0 i32.store @@ -1160,7 +1189,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#has (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -1174,7 +1203,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 18 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 17 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1185,12 +1214,12 @@ local.get $1 i32.const 1 i32.add - local.tee $4 + local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $4 + local.set $4 + local.get $3 f64.convert_i32_s f64.const 2.6666666666666665 f64.mul @@ -1199,39 +1228,39 @@ i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 local.get $0 i32.load offset=8 - local.tee $2 + local.tee $3 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add local.set $7 - local.get $4 - local.set $3 + local.get $5 + local.set $2 loop $continue|0 - local.get $2 + local.get $3 local.get $7 i32.ne if - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $3 local.get $2 + local.get $3 i32.load8_u i32.store8 - local.get $3 local.get $2 + local.get $3 i32.load offset=4 i32.store offset=4 - local.get $3 local.get $2 + local.get $3 i32.load8_u i32.const -2128831035 i32.xor @@ -1241,44 +1270,54 @@ i32.and i32.const 2 i32.shl - local.get $5 + local.get $4 i32.add local.tee $8 i32.load i32.store offset=8 local.get $8 - local.get $3 + local.get $2 i32.store - local.get $3 + local.get $2 i32.const 12 i32.add - local.set $3 + local.set $2 end - local.get $2 + local.get $3 i32.const 12 i32.add - local.set $2 + local.set $3 br $continue|0 end end local.get $0 - local.get $5 + local.tee $2 + i32.load + drop + local.get $2 + local.get $4 i32.store - local.get $0 + local.get $2 local.get $1 i32.store offset=4 + local.get $5 + local.tee $0 + local.get $2 + i32.load offset=8 + i32.ne + drop + local.get $2 local.get $0 - local.get $4 i32.store offset=8 - local.get $0 + local.get $2 local.get $6 i32.store offset=12 - local.get $0 - local.get $0 + local.get $2 + local.get $2 i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 19 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 18 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1375,7 +1414,7 @@ i32.store end ) - (func $~lib/map/Map#get (; 20 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -1394,7 +1433,7 @@ unreachable end ) - (func $~lib/map/Map#delete (; 21 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#delete (; 20 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -1459,7 +1498,7 @@ call $~lib/map/Map#rehash end ) - (func $std/map/test (; 22 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 21 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) call $~lib/map/Map#constructor @@ -1474,8 +1513,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -1494,8 +1533,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -1511,8 +1550,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 11 + i32.const 128 + i32.const 12 i32.const 4 call $~lib/env/abort unreachable @@ -1532,8 +1571,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 13 + i32.const 128 + i32.const 14 i32.const 2 call $~lib/env/abort unreachable @@ -1551,8 +1590,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 17 + i32.const 128 + i32.const 18 i32.const 4 call $~lib/env/abort unreachable @@ -1568,8 +1607,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -1588,8 +1627,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 4 call $~lib/env/abort unreachable @@ -1605,8 +1644,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 21 + i32.const 128 + i32.const 22 i32.const 4 call $~lib/env/abort unreachable @@ -1626,8 +1665,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 23 + i32.const 128 + i32.const 24 i32.const 2 call $~lib/env/abort unreachable @@ -1645,8 +1684,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 27 + i32.const 128 + i32.const 28 i32.const 4 call $~lib/env/abort unreachable @@ -1662,8 +1701,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 4 call $~lib/env/abort unreachable @@ -1676,8 +1715,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 30 + i32.const 128 + i32.const 31 i32.const 4 call $~lib/env/abort unreachable @@ -1697,8 +1736,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 2 call $~lib/env/abort unreachable @@ -1715,8 +1754,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -1735,8 +1774,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 4 call $~lib/env/abort unreachable @@ -1749,8 +1788,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 40 + i32.const 128 + i32.const 41 i32.const 4 call $~lib/env/abort unreachable @@ -1770,8 +1809,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable @@ -1782,19 +1821,19 @@ i32.load offset=20 if i32.const 0 - i32.const 104 - i32.const 46 + i32.const 128 + i32.const 47 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/map/Map#constructor (; 23 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/map/Map#constructor (; 22 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 5 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $0 i32.const 0 i32.store @@ -1817,7 +1856,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 24 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 23 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -1862,7 +1901,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -1887,7 +1926,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 26 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 25 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1898,12 +1937,12 @@ local.get $1 i32.const 1 i32.add - local.tee $4 + local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $6 - local.get $4 + local.set $5 + local.get $3 f64.convert_i32_s f64.const 2.6666666666666665 f64.mul @@ -1912,48 +1951,48 @@ i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $6 local.get $0 i32.load offset=8 - local.tee $2 + local.tee $3 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add local.set $8 - local.get $4 - local.set $3 + local.get $6 + local.set $2 loop $continue|0 - local.get $2 + local.get $3 local.get $8 i32.ne if - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $3 local.get $2 + local.get $3 i32.load16_s i32.store16 - local.get $3 local.get $2 + local.get $3 i32.load offset=4 i32.store offset=4 - local.get $3 local.get $2 + local.get $3 i32.load16_s - local.tee $5 + local.tee $4 i32.const 255 i32.and i32.const -2128831035 i32.xor i32.const 16777619 i32.mul - local.get $5 + local.get $4 i32.const 8 i32.shr_u i32.xor @@ -1963,44 +2002,57 @@ i32.and i32.const 2 i32.shl - local.get $6 + local.get $5 i32.add - local.tee $5 + local.tee $4 i32.load i32.store offset=8 - local.get $5 - local.get $3 + local.get $4 + local.get $2 i32.store - local.get $3 + local.get $2 i32.const 12 i32.add - local.set $3 + local.set $2 end - local.get $2 + local.get $3 i32.const 12 i32.add - local.set $2 + local.set $3 br $continue|0 end end + local.get $5 + local.tee $4 local.get $0 - local.get $6 + local.tee $2 + i32.load + i32.ne + drop + local.get $2 + local.get $4 i32.store - local.get $0 + local.get $2 local.get $1 i32.store offset=4 + local.get $6 + local.tee $0 + local.get $2 + i32.load offset=8 + i32.ne + drop + local.get $2 local.get $0 - local.get $4 i32.store offset=8 - local.get $0 + local.get $2 local.get $7 i32.store offset=12 - local.get $0 - local.get $0 + local.get $2 + local.get $2 i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 27 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 26 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2108,7 +2160,7 @@ i32.store end ) - (func $~lib/map/Map#get (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -2138,7 +2190,7 @@ unreachable end ) - (func $~lib/map/Map#delete (; 29 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#delete (; 28 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -2214,7 +2266,7 @@ call $~lib/map/Map#rehash end ) - (func $std/map/test (; 30 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 29 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) call $~lib/map/Map#constructor @@ -2229,8 +2281,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -2251,8 +2303,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -2270,8 +2322,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 11 + i32.const 128 + i32.const 12 i32.const 4 call $~lib/env/abort unreachable @@ -2291,8 +2343,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 13 + i32.const 128 + i32.const 14 i32.const 2 call $~lib/env/abort unreachable @@ -2310,8 +2362,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 17 + i32.const 128 + i32.const 18 i32.const 4 call $~lib/env/abort unreachable @@ -2329,8 +2381,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -2351,8 +2403,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 4 call $~lib/env/abort unreachable @@ -2370,8 +2422,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 21 + i32.const 128 + i32.const 22 i32.const 4 call $~lib/env/abort unreachable @@ -2391,8 +2443,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 23 + i32.const 128 + i32.const 24 i32.const 2 call $~lib/env/abort unreachable @@ -2410,8 +2462,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 27 + i32.const 128 + i32.const 28 i32.const 4 call $~lib/env/abort unreachable @@ -2429,8 +2481,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 4 call $~lib/env/abort unreachable @@ -2443,8 +2495,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 30 + i32.const 128 + i32.const 31 i32.const 4 call $~lib/env/abort unreachable @@ -2464,8 +2516,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 2 call $~lib/env/abort unreachable @@ -2482,8 +2534,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -2504,8 +2556,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 4 call $~lib/env/abort unreachable @@ -2518,8 +2570,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 40 + i32.const 128 + i32.const 41 i32.const 4 call $~lib/env/abort unreachable @@ -2539,8 +2591,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable @@ -2551,19 +2603,19 @@ i32.load offset=20 if i32.const 0 - i32.const 104 - i32.const 46 + i32.const 128 + i32.const 47 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/map/Map#constructor (; 31 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/map/Map#constructor (; 30 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 6 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $0 i32.const 0 i32.store @@ -2586,7 +2638,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#has (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -2609,7 +2661,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 33 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 32 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2620,12 +2672,12 @@ local.get $1 i32.const 1 i32.add - local.tee $4 + local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $6 - local.get $4 + local.set $5 + local.get $3 f64.convert_i32_s f64.const 2.6666666666666665 f64.mul @@ -2634,48 +2686,48 @@ i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $6 local.get $0 i32.load offset=8 - local.tee $2 + local.tee $3 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add local.set $8 - local.get $4 - local.set $3 + local.get $6 + local.set $2 loop $continue|0 - local.get $2 + local.get $3 local.get $8 i32.ne if - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $3 local.get $2 + local.get $3 i32.load16_u i32.store16 - local.get $3 local.get $2 + local.get $3 i32.load offset=4 i32.store offset=4 - local.get $3 local.get $2 + local.get $3 i32.load16_u - local.tee $5 + local.tee $4 i32.const 255 i32.and i32.const -2128831035 i32.xor i32.const 16777619 i32.mul - local.get $5 + local.get $4 i32.const 8 i32.shr_u i32.xor @@ -2685,44 +2737,57 @@ i32.and i32.const 2 i32.shl - local.get $6 + local.get $5 i32.add - local.tee $5 + local.tee $4 i32.load i32.store offset=8 - local.get $5 - local.get $3 + local.get $4 + local.get $2 i32.store - local.get $3 + local.get $2 i32.const 12 i32.add - local.set $3 + local.set $2 end - local.get $2 + local.get $3 i32.const 12 i32.add - local.set $2 + local.set $3 br $continue|0 end end + local.get $5 + local.tee $4 local.get $0 - local.get $6 + local.tee $2 + i32.load + i32.ne + drop + local.get $2 + local.get $4 i32.store - local.get $0 + local.get $2 local.get $1 i32.store offset=4 + local.get $6 + local.tee $0 + local.get $2 + i32.load offset=8 + i32.ne + drop + local.get $2 local.get $0 - local.get $4 i32.store offset=8 - local.get $0 + local.get $2 local.get $7 i32.store offset=12 - local.get $0 - local.get $0 + local.get $2 + local.get $2 i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 34 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 33 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2828,7 +2893,7 @@ i32.store end ) - (func $~lib/map/Map#get (; 35 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 34 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -2856,7 +2921,7 @@ unreachable end ) - (func $~lib/map/Map#delete (; 36 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#delete (; 35 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -2930,7 +2995,7 @@ call $~lib/map/Map#rehash end ) - (func $std/map/test (; 37 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 36 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) call $~lib/map/Map#constructor @@ -2945,8 +3010,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -2965,8 +3030,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -2982,8 +3047,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 11 + i32.const 128 + i32.const 12 i32.const 4 call $~lib/env/abort unreachable @@ -3003,8 +3068,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 13 + i32.const 128 + i32.const 14 i32.const 2 call $~lib/env/abort unreachable @@ -3022,8 +3087,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 17 + i32.const 128 + i32.const 18 i32.const 4 call $~lib/env/abort unreachable @@ -3039,8 +3104,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -3059,8 +3124,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 4 call $~lib/env/abort unreachable @@ -3076,8 +3141,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 21 + i32.const 128 + i32.const 22 i32.const 4 call $~lib/env/abort unreachable @@ -3097,8 +3162,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 23 + i32.const 128 + i32.const 24 i32.const 2 call $~lib/env/abort unreachable @@ -3116,8 +3181,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 27 + i32.const 128 + i32.const 28 i32.const 4 call $~lib/env/abort unreachable @@ -3133,8 +3198,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 4 call $~lib/env/abort unreachable @@ -3147,8 +3212,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 30 + i32.const 128 + i32.const 31 i32.const 4 call $~lib/env/abort unreachable @@ -3168,8 +3233,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 2 call $~lib/env/abort unreachable @@ -3186,8 +3251,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -3206,8 +3271,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 4 call $~lib/env/abort unreachable @@ -3220,8 +3285,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 40 + i32.const 128 + i32.const 41 i32.const 4 call $~lib/env/abort unreachable @@ -3241,8 +3306,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable @@ -3253,19 +3318,19 @@ i32.load offset=20 if i32.const 0 - i32.const 104 - i32.const 46 + i32.const 128 + i32.const 47 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/map/Map#constructor (; 38 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/map/Map#constructor (; 37 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 7 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $0 i32.const 0 i32.store @@ -3288,7 +3353,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/util/hash/hash32 (; 39 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hash32 (; 38 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 255 i32.and @@ -3319,7 +3384,7 @@ i32.const 16777619 i32.mul ) - (func $~lib/map/Map#find (; 40 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 39 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -3362,7 +3427,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 41 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 40 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -3371,7 +3436,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 42 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 41 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3382,12 +3447,12 @@ local.get $1 i32.const 1 i32.add - local.tee $4 + local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $4 + local.set $4 + local.get $3 f64.convert_i32_s f64.const 2.6666666666666665 f64.mul @@ -3396,83 +3461,93 @@ i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 local.get $0 i32.load offset=8 - local.tee $2 + local.tee $3 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add local.set $7 - local.get $4 - local.set $3 + local.get $5 + local.set $2 loop $continue|0 - local.get $2 + local.get $3 local.get $7 i32.ne if - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $3 local.get $2 + local.get $3 i32.load i32.store - local.get $3 local.get $2 + local.get $3 i32.load offset=4 i32.store offset=4 - local.get $3 local.get $2 + local.get $3 i32.load call $~lib/util/hash/hash32 local.get $1 i32.and i32.const 2 i32.shl - local.get $5 + local.get $4 i32.add local.tee $8 i32.load i32.store offset=8 local.get $8 - local.get $3 + local.get $2 i32.store - local.get $3 + local.get $2 i32.const 12 i32.add - local.set $3 + local.set $2 end - local.get $2 + local.get $3 i32.const 12 i32.add - local.set $2 + local.set $3 br $continue|0 end end local.get $0 - local.get $5 + local.tee $2 + i32.load + drop + local.get $2 + local.get $4 i32.store - local.get $0 + local.get $2 local.get $1 i32.store offset=4 + local.get $5 + local.tee $0 + local.get $2 + i32.load offset=8 + i32.ne + drop + local.get $2 local.get $0 - local.get $4 i32.store offset=8 - local.get $0 + local.get $2 local.get $6 i32.store offset=12 - local.get $0 - local.get $0 + local.get $2 + local.get $2 i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 43 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 42 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3562,7 +3637,7 @@ i32.store end ) - (func $~lib/map/Map#get (; 44 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 43 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -3576,7 +3651,7 @@ unreachable end ) - (func $~lib/map/Map#delete (; 45 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#delete (; 44 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -3636,7 +3711,7 @@ call $~lib/map/Map#rehash end ) - (func $std/map/test (; 46 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 45 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) call $~lib/map/Map#constructor @@ -3651,8 +3726,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -3669,8 +3744,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -3684,8 +3759,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 11 + i32.const 128 + i32.const 12 i32.const 4 call $~lib/env/abort unreachable @@ -3705,8 +3780,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 13 + i32.const 128 + i32.const 14 i32.const 2 call $~lib/env/abort unreachable @@ -3724,8 +3799,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 17 + i32.const 128 + i32.const 18 i32.const 4 call $~lib/env/abort unreachable @@ -3739,8 +3814,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -3757,8 +3832,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 4 call $~lib/env/abort unreachable @@ -3772,8 +3847,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 21 + i32.const 128 + i32.const 22 i32.const 4 call $~lib/env/abort unreachable @@ -3793,8 +3868,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 23 + i32.const 128 + i32.const 24 i32.const 2 call $~lib/env/abort unreachable @@ -3812,8 +3887,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 27 + i32.const 128 + i32.const 28 i32.const 4 call $~lib/env/abort unreachable @@ -3827,8 +3902,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 4 call $~lib/env/abort unreachable @@ -3841,8 +3916,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 30 + i32.const 128 + i32.const 31 i32.const 4 call $~lib/env/abort unreachable @@ -3862,8 +3937,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 2 call $~lib/env/abort unreachable @@ -3880,8 +3955,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -3898,8 +3973,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 4 call $~lib/env/abort unreachable @@ -3912,8 +3987,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 40 + i32.const 128 + i32.const 41 i32.const 4 call $~lib/env/abort unreachable @@ -3933,8 +4008,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable @@ -3945,19 +4020,19 @@ i32.load offset=20 if i32.const 0 - i32.const 104 - i32.const 46 + i32.const 128 + i32.const 47 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/map/Map#constructor (; 47 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/map/Map#constructor (; 46 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 8 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $0 i32.const 0 i32.store @@ -3980,7 +4055,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $std/map/test (; 48 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 47 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) call $~lib/map/Map#constructor @@ -3995,8 +4070,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -4013,8 +4088,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -4028,8 +4103,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 11 + i32.const 128 + i32.const 12 i32.const 4 call $~lib/env/abort unreachable @@ -4049,8 +4124,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 13 + i32.const 128 + i32.const 14 i32.const 2 call $~lib/env/abort unreachable @@ -4068,8 +4143,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 17 + i32.const 128 + i32.const 18 i32.const 4 call $~lib/env/abort unreachable @@ -4083,8 +4158,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -4101,8 +4176,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 4 call $~lib/env/abort unreachable @@ -4116,8 +4191,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 21 + i32.const 128 + i32.const 22 i32.const 4 call $~lib/env/abort unreachable @@ -4137,8 +4212,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 23 + i32.const 128 + i32.const 24 i32.const 2 call $~lib/env/abort unreachable @@ -4156,8 +4231,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 27 + i32.const 128 + i32.const 28 i32.const 4 call $~lib/env/abort unreachable @@ -4171,8 +4246,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 4 call $~lib/env/abort unreachable @@ -4185,8 +4260,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 30 + i32.const 128 + i32.const 31 i32.const 4 call $~lib/env/abort unreachable @@ -4206,8 +4281,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 2 call $~lib/env/abort unreachable @@ -4224,8 +4299,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -4242,8 +4317,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 4 call $~lib/env/abort unreachable @@ -4256,8 +4331,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 40 + i32.const 128 + i32.const 41 i32.const 4 call $~lib/env/abort unreachable @@ -4277,8 +4352,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable @@ -4289,24 +4364,36 @@ i32.load offset=20 if i32.const 0 - i32.const 104 - i32.const 46 + i32.const 128 + i32.const 47 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/map/Map#clear (; 49 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 + (func $~lib/map/Map#clear (; 48 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + local.get $0 + i32.load + drop + local.get $0 + local.get $1 i32.store local.get $0 i32.const 3 i32.store offset=4 - local.get $0 i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + local.get $0 + i32.load offset=8 + i32.ne + drop + local.get $0 + local.get $1 i32.store offset=8 local.get $0 i32.const 4 @@ -4318,12 +4405,12 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 50 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/map/Map#constructor (; 49 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 9 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $0 i32.const 0 i32.store @@ -4346,7 +4433,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/util/hash/hash64 (; 51 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/hash/hash64 (; 50 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) local.get $0 i32.wrap_i64 @@ -4412,7 +4499,7 @@ i32.const 16777619 i32.mul ) - (func $~lib/map/Map#find (; 52 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 51 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -4455,7 +4542,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 53 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/map/Map#has (; 52 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) local.get $0 local.get $1 local.get $1 @@ -4464,7 +4551,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 54 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 53 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4475,12 +4562,12 @@ local.get $1 i32.const 1 i32.add - local.tee $4 + local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $4 + local.set $4 + local.get $3 f64.convert_i32_s f64.const 2.6666666666666665 f64.mul @@ -4489,83 +4576,93 @@ i32.const 4 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 local.get $0 i32.load offset=8 - local.tee $2 + local.tee $3 local.get $0 i32.load offset=16 i32.const 4 i32.shl i32.add local.set $7 - local.get $4 - local.set $3 + local.get $5 + local.set $2 loop $continue|0 - local.get $2 + local.get $3 local.get $7 i32.ne if - local.get $2 + local.get $3 i32.load offset=12 i32.const 1 i32.and i32.eqz if - local.get $3 local.get $2 + local.get $3 i64.load i64.store - local.get $3 local.get $2 + local.get $3 i32.load offset=8 i32.store offset=8 - local.get $3 local.get $2 + local.get $3 i64.load call $~lib/util/hash/hash64 local.get $1 i32.and i32.const 2 i32.shl - local.get $5 + local.get $4 i32.add local.tee $8 i32.load i32.store offset=12 local.get $8 - local.get $3 + local.get $2 i32.store - local.get $3 + local.get $2 i32.const 16 i32.add - local.set $3 + local.set $2 end - local.get $2 + local.get $3 i32.const 16 i32.add - local.set $2 + local.set $3 br $continue|0 end end local.get $0 - local.get $5 + local.tee $2 + i32.load + drop + local.get $2 + local.get $4 i32.store - local.get $0 + local.get $2 local.get $1 i32.store offset=4 + local.get $5 + local.tee $0 + local.get $2 + i32.load offset=8 + i32.ne + drop + local.get $2 local.get $0 - local.get $4 i32.store offset=8 - local.get $0 + local.get $2 local.get $6 i32.store offset=12 - local.get $0 - local.get $0 + local.get $2 + local.get $2 i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 55 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/map/Map#set (; 54 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4655,7 +4752,7 @@ i32.store end ) - (func $~lib/map/Map#get (; 56 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/map/Map#get (; 55 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) local.get $0 local.get $1 local.get $1 @@ -4669,7 +4766,7 @@ unreachable end ) - (func $~lib/map/Map#delete (; 57 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) + (func $~lib/map/Map#delete (; 56 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) (local $2 i32) (local $3 i32) local.get $0 @@ -4730,7 +4827,7 @@ call $~lib/map/Map#rehash end ) - (func $std/map/test (; 58 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 57 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) call $~lib/map/Map#constructor @@ -4745,8 +4842,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -4764,8 +4861,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -4780,8 +4877,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 11 + i32.const 128 + i32.const 12 i32.const 4 call $~lib/env/abort unreachable @@ -4801,8 +4898,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 13 + i32.const 128 + i32.const 14 i32.const 2 call $~lib/env/abort unreachable @@ -4820,8 +4917,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 17 + i32.const 128 + i32.const 18 i32.const 4 call $~lib/env/abort unreachable @@ -4836,8 +4933,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -4855,8 +4952,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 4 call $~lib/env/abort unreachable @@ -4871,8 +4968,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 21 + i32.const 128 + i32.const 22 i32.const 4 call $~lib/env/abort unreachable @@ -4892,8 +4989,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 23 + i32.const 128 + i32.const 24 i32.const 2 call $~lib/env/abort unreachable @@ -4911,8 +5008,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 27 + i32.const 128 + i32.const 28 i32.const 4 call $~lib/env/abort unreachable @@ -4927,8 +5024,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 4 call $~lib/env/abort unreachable @@ -4941,8 +5038,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 30 + i32.const 128 + i32.const 31 i32.const 4 call $~lib/env/abort unreachable @@ -4962,8 +5059,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 2 call $~lib/env/abort unreachable @@ -4980,8 +5077,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -4999,8 +5096,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 4 call $~lib/env/abort unreachable @@ -5013,8 +5110,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 40 + i32.const 128 + i32.const 41 i32.const 4 call $~lib/env/abort unreachable @@ -5034,8 +5131,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable @@ -5046,19 +5143,19 @@ i32.load offset=20 if i32.const 0 - i32.const 104 - i32.const 46 + i32.const 128 + i32.const 47 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/map/Map#constructor (; 59 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/map/Map#constructor (; 58 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 10 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $0 i32.const 0 i32.store @@ -5081,7 +5178,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $std/map/test (; 60 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 59 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) call $~lib/map/Map#constructor @@ -5096,8 +5193,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -5115,8 +5212,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -5131,8 +5228,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 11 + i32.const 128 + i32.const 12 i32.const 4 call $~lib/env/abort unreachable @@ -5152,8 +5249,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 13 + i32.const 128 + i32.const 14 i32.const 2 call $~lib/env/abort unreachable @@ -5171,8 +5268,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 17 + i32.const 128 + i32.const 18 i32.const 4 call $~lib/env/abort unreachable @@ -5187,8 +5284,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -5206,8 +5303,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 4 call $~lib/env/abort unreachable @@ -5222,8 +5319,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 21 + i32.const 128 + i32.const 22 i32.const 4 call $~lib/env/abort unreachable @@ -5243,8 +5340,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 23 + i32.const 128 + i32.const 24 i32.const 2 call $~lib/env/abort unreachable @@ -5262,8 +5359,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 27 + i32.const 128 + i32.const 28 i32.const 4 call $~lib/env/abort unreachable @@ -5278,8 +5375,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 4 call $~lib/env/abort unreachable @@ -5292,8 +5389,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 30 + i32.const 128 + i32.const 31 i32.const 4 call $~lib/env/abort unreachable @@ -5313,8 +5410,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 2 call $~lib/env/abort unreachable @@ -5331,8 +5428,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -5350,8 +5447,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 4 call $~lib/env/abort unreachable @@ -5364,8 +5461,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 40 + i32.const 128 + i32.const 41 i32.const 4 call $~lib/env/abort unreachable @@ -5385,8 +5482,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable @@ -5397,19 +5494,19 @@ i32.load offset=20 if i32.const 0 - i32.const 104 - i32.const 46 + i32.const 128 + i32.const 47 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/map/Map#constructor (; 61 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/map/Map#constructor (; 60 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 11 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $0 i32.const 0 i32.store @@ -5432,7 +5529,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 62 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 61 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -5475,7 +5572,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 63 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/map/Map#has (; 62 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) local.get $0 local.get $1 local.get $1 @@ -5485,7 +5582,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 64 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 63 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5496,12 +5593,12 @@ local.get $1 i32.const 1 i32.add - local.tee $4 + local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $4 + local.set $4 + local.get $3 f64.convert_i32_s f64.const 2.6666666666666665 f64.mul @@ -5510,39 +5607,39 @@ i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 local.get $0 i32.load offset=8 - local.tee $2 + local.tee $3 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add local.set $7 - local.get $4 - local.set $3 + local.get $5 + local.set $2 loop $continue|0 - local.get $2 + local.get $3 local.get $7 i32.ne if - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $3 local.get $2 + local.get $3 f32.load f32.store - local.get $3 local.get $2 + local.get $3 i32.load offset=4 i32.store offset=4 - local.get $3 local.get $2 + local.get $3 f32.load i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -5550,44 +5647,54 @@ i32.and i32.const 2 i32.shl - local.get $5 + local.get $4 i32.add local.tee $8 i32.load i32.store offset=8 local.get $8 - local.get $3 + local.get $2 i32.store - local.get $3 + local.get $2 i32.const 12 i32.add - local.set $3 + local.set $2 end - local.get $2 + local.get $3 i32.const 12 i32.add - local.set $2 + local.set $3 br $continue|0 end end local.get $0 - local.get $5 + local.tee $2 + i32.load + drop + local.get $2 + local.get $4 i32.store - local.get $0 + local.get $2 local.get $1 i32.store offset=4 + local.get $5 + local.tee $0 + local.get $2 + i32.load offset=8 + i32.ne + drop + local.get $2 local.get $0 - local.get $4 i32.store offset=8 - local.get $0 + local.get $2 local.get $6 i32.store offset=12 - local.get $0 - local.get $0 + local.get $2 + local.get $2 i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 65 ;) (type $FUNCSIG$vifi) (param $0 i32) (param $1 f32) (param $2 i32) + (func $~lib/map/Map#set (; 64 ;) (type $FUNCSIG$vifi) (param $0 i32) (param $1 f32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5678,7 +5785,7 @@ i32.store end ) - (func $~lib/map/Map#get (; 66 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/map/Map#get (; 65 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) local.get $0 local.get $1 local.get $1 @@ -5693,7 +5800,7 @@ unreachable end ) - (func $~lib/map/Map#delete (; 67 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32) + (func $~lib/map/Map#delete (; 66 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32) (local $2 i32) (local $3 i32) local.get $0 @@ -5755,7 +5862,7 @@ call $~lib/map/Map#rehash end ) - (func $std/map/test (; 68 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 67 ;) (type $FUNCSIG$v) (local $0 f32) (local $1 i32) call $~lib/map/Map#constructor @@ -5770,8 +5877,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -5789,8 +5896,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -5805,8 +5912,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 11 + i32.const 128 + i32.const 12 i32.const 4 call $~lib/env/abort unreachable @@ -5826,8 +5933,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 13 + i32.const 128 + i32.const 14 i32.const 2 call $~lib/env/abort unreachable @@ -5845,8 +5952,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 17 + i32.const 128 + i32.const 18 i32.const 4 call $~lib/env/abort unreachable @@ -5861,8 +5968,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -5880,8 +5987,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 4 call $~lib/env/abort unreachable @@ -5896,8 +6003,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 21 + i32.const 128 + i32.const 22 i32.const 4 call $~lib/env/abort unreachable @@ -5917,8 +6024,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 23 + i32.const 128 + i32.const 24 i32.const 2 call $~lib/env/abort unreachable @@ -5936,8 +6043,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 27 + i32.const 128 + i32.const 28 i32.const 4 call $~lib/env/abort unreachable @@ -5952,8 +6059,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 4 call $~lib/env/abort unreachable @@ -5966,8 +6073,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 30 + i32.const 128 + i32.const 31 i32.const 4 call $~lib/env/abort unreachable @@ -5987,8 +6094,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 2 call $~lib/env/abort unreachable @@ -6005,8 +6112,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -6024,8 +6131,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 4 call $~lib/env/abort unreachable @@ -6038,8 +6145,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 40 + i32.const 128 + i32.const 41 i32.const 4 call $~lib/env/abort unreachable @@ -6059,8 +6166,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable @@ -6071,19 +6178,19 @@ i32.load offset=20 if i32.const 0 - i32.const 104 - i32.const 46 + i32.const 128 + i32.const 47 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/map/Map#constructor (; 69 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/map/Map#constructor (; 68 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 12 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $0 i32.const 0 i32.store @@ -6106,7 +6213,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 70 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 69 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -6149,7 +6256,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 71 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/map/Map#has (; 70 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) local.get $0 local.get $1 local.get $1 @@ -6159,7 +6266,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 72 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 71 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6170,12 +6277,12 @@ local.get $1 i32.const 1 i32.add - local.tee $4 + local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $4 + local.set $4 + local.get $3 f64.convert_i32_s f64.const 2.6666666666666665 f64.mul @@ -6184,39 +6291,39 @@ i32.const 4 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 local.get $0 i32.load offset=8 - local.tee $2 + local.tee $3 local.get $0 i32.load offset=16 i32.const 4 i32.shl i32.add local.set $7 - local.get $4 - local.set $3 + local.get $5 + local.set $2 loop $continue|0 - local.get $2 + local.get $3 local.get $7 i32.ne if - local.get $2 + local.get $3 i32.load offset=12 i32.const 1 i32.and i32.eqz if - local.get $3 local.get $2 + local.get $3 f64.load f64.store - local.get $3 local.get $2 + local.get $3 i32.load offset=8 i32.store offset=8 - local.get $3 local.get $2 + local.get $3 f64.load i64.reinterpret_f64 call $~lib/util/hash/hash64 @@ -6224,44 +6331,54 @@ i32.and i32.const 2 i32.shl - local.get $5 + local.get $4 i32.add local.tee $8 i32.load i32.store offset=12 local.get $8 - local.get $3 + local.get $2 i32.store - local.get $3 + local.get $2 i32.const 16 i32.add - local.set $3 + local.set $2 end - local.get $2 + local.get $3 i32.const 16 i32.add - local.set $2 + local.set $3 br $continue|0 end end local.get $0 - local.get $5 + local.tee $2 + i32.load + drop + local.get $2 + local.get $4 i32.store - local.get $0 + local.get $2 local.get $1 i32.store offset=4 + local.get $5 + local.tee $0 + local.get $2 + i32.load offset=8 + i32.ne + drop + local.get $2 local.get $0 - local.get $4 i32.store offset=8 - local.get $0 + local.get $2 local.get $6 i32.store offset=12 - local.get $0 - local.get $0 + local.get $2 + local.get $2 i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 73 ;) (type $FUNCSIG$vidi) (param $0 i32) (param $1 f64) (param $2 i32) + (func $~lib/map/Map#set (; 72 ;) (type $FUNCSIG$vidi) (param $0 i32) (param $1 f64) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6352,7 +6469,7 @@ i32.store end ) - (func $~lib/map/Map#get (; 74 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/map/Map#get (; 73 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) local.get $0 local.get $1 local.get $1 @@ -6367,7 +6484,7 @@ unreachable end ) - (func $~lib/map/Map#delete (; 75 ;) (type $FUNCSIG$vid) (param $0 i32) (param $1 f64) + (func $~lib/map/Map#delete (; 74 ;) (type $FUNCSIG$vid) (param $0 i32) (param $1 f64) (local $2 i32) (local $3 i32) local.get $0 @@ -6429,7 +6546,7 @@ call $~lib/map/Map#rehash end ) - (func $std/map/test (; 76 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 75 ;) (type $FUNCSIG$v) (local $0 f64) (local $1 i32) call $~lib/map/Map#constructor @@ -6444,8 +6561,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -6463,8 +6580,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -6479,8 +6596,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 11 + i32.const 128 + i32.const 12 i32.const 4 call $~lib/env/abort unreachable @@ -6500,8 +6617,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 13 + i32.const 128 + i32.const 14 i32.const 2 call $~lib/env/abort unreachable @@ -6519,8 +6636,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 17 + i32.const 128 + i32.const 18 i32.const 4 call $~lib/env/abort unreachable @@ -6535,8 +6652,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -6554,8 +6671,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 4 call $~lib/env/abort unreachable @@ -6570,8 +6687,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 21 + i32.const 128 + i32.const 22 i32.const 4 call $~lib/env/abort unreachable @@ -6591,8 +6708,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 23 + i32.const 128 + i32.const 24 i32.const 2 call $~lib/env/abort unreachable @@ -6610,8 +6727,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 27 + i32.const 128 + i32.const 28 i32.const 4 call $~lib/env/abort unreachable @@ -6626,8 +6743,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 4 call $~lib/env/abort unreachable @@ -6640,8 +6757,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 30 + i32.const 128 + i32.const 31 i32.const 4 call $~lib/env/abort unreachable @@ -6661,8 +6778,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 2 call $~lib/env/abort unreachable @@ -6679,8 +6796,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -6698,8 +6815,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 4 call $~lib/env/abort unreachable @@ -6712,8 +6829,8 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 104 - i32.const 40 + i32.const 128 + i32.const 41 i32.const 4 call $~lib/env/abort unreachable @@ -6733,8 +6850,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable @@ -6745,30 +6862,30 @@ i32.load offset=20 if i32.const 0 - i32.const 104 - i32.const 46 + i32.const 128 + i32.const 47 i32.const 2 call $~lib/env/abort unreachable end ) - (func $start (; 77 ;) (type $FUNCSIG$v) - i32.const 128 + (func $start (; 76 ;) (type $FUNCSIG$v) + i32.const 152 global.set $~lib/allocator/arena/startOffset global.get $~lib/allocator/arena/startOffset global.set $~lib/allocator/arena/offset - call $std/map/test - call $std/map/test - call $std/map/test - call $std/map/test - call $std/map/test - call $std/map/test - call $std/map/test - call $std/map/test - call $std/map/test - call $std/map/test + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric ) - (func $null (; 78 ;) (type $FUNCSIG$v) + (func $null (; 77 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/map.ts b/tests/compiler/std/map.ts index 4fc14873..bcf018b3 100644 --- a/tests/compiler/std/map.ts +++ b/tests/compiler/std/map.ts @@ -1,6 +1,7 @@ import "allocator/arena"; +import "collector/dummy"; -function test(): void { +function testNumeric(): void { var map = new Map(); // insert new @@ -46,13 +47,13 @@ function test(): void { assert(map.size == 0); } -test(); -test(); -test(); -test(); -test(); -test(); -test(); -test(); -test(); -test(); +testNumeric(); +testNumeric(); +testNumeric(); +testNumeric(); +testNumeric(); +testNumeric(); +testNumeric(); +testNumeric(); +testNumeric(); +testNumeric(); diff --git a/tests/compiler/std/map.untouched.wat b/tests/compiler/std/map.untouched.wat index 3387747c..0a468993 100644 --- a/tests/compiler/std/map.untouched.wat +++ b/tests/compiler/std/map.untouched.wat @@ -2,11 +2,11 @@ (type $FUNCSIG$v (func)) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$vii (func (param i32 i32))) + (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$iij (func (param i32 i64) (result i32))) (type $FUNCSIG$ij (func (param i64) (result i32))) (type $FUNCSIG$iiji (func (param i32 i64 i32) (result i32))) @@ -19,21 +19,22 @@ (type $FUNCSIG$vidi (func (param i32 f64 i32))) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") - (data (i32.const 48) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 96) "\02\00\00\00\14\00\00\00s\00t\00d\00/\00m\00a\00p\00.\00t\00s\00") + (data (i32.const 8) "\02\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") + (data (i32.const 56) "\02\00\00\00&\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") + (data (i32.const 112) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00s\00t\00d\00/\00m\00a\00p\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) - (global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0)) - (global $~lib/runtime/HEADER_SIZE i32 (i32.const 8)) + (global $~lib/runtime/HEADER_SIZE i32 (i32.const 16)) (global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) (global $~lib/ASC_NO_ASSERT i32 (i32.const 0)) - (global $~lib/runtime/MAX_BYTELENGTH i32 (i32.const 1073741816)) - (global $~lib/memory/HEAP_BASE i32 (i32.const 124)) + (global $~lib/runtime/MAX_BYTELENGTH i32 (i32.const 1073741808)) + (global $~lib/memory/HEAP_BASE i32 (i32.const 148)) + (global $~lib/capabilities i32 (i32.const 2)) (export "memory" (memory $0)) (export "table" (table $0)) + (export ".capabilities" (global $~lib/capabilities)) (start $start) (func $~lib/runtime/ADJUSTOBLOCK (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 1 @@ -132,7 +133,7 @@ end return ) - (func $~lib/runtime/doAllocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/runtime/ADJUSTOBLOCK @@ -145,47 +146,55 @@ local.get $0 i32.store offset=4 local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $1 global.get $~lib/runtime/HEADER_SIZE i32.add ) - (func $~lib/runtime/assertUnregistered (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/collector/dummy/__ref_register (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $~lib/runtime/register (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 global.get $~lib/memory/HEAP_BASE i32.gt_u i32.eqz if i32.const 0 - i32.const 16 - i32.const 313 - i32.const 2 + i32.const 24 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 global.get $~lib/runtime/HEADER_SIZE i32.sub + local.set $2 + local.get $2 i32.load global.get $~lib/runtime/HEADER_MAGIC i32.eq i32.eqz if i32.const 0 - i32.const 16 - i32.const 314 - i32.const 2 + i32.const 24 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $~lib/runtime/doRegister (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/runtime/assertUnregistered - local.get $0 - global.get $~lib/runtime/HEADER_SIZE - i32.sub + local.get $2 local.get $1 i32.store local.get $0 + call $~lib/collector/dummy/__ref_register + local.get $0 ) (func $~lib/memory/memory.fill (; 6 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -452,7 +461,7 @@ i32.gt_u if i32.const 0 - i32.const 56 + i32.const 72 i32.const 25 i32.const 43 call $~lib/env/abort @@ -462,7 +471,7 @@ local.get $1 local.set $2 local.get $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $3 local.get $3 @@ -474,14 +483,43 @@ local.set $2 local.get $2 i32.const 3 - call $~lib/runtime/doRegister + call $~lib/runtime/register end ) - (func $~lib/map/Map#clear (; 8 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/collector/dummy/__ref_link (; 8 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/collector/dummy/__ref_unlink (; 9 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/map/Map#clear (; 10 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 + local.tee $1 i32.const 0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $2 + local.get $1 + i32.load + local.tee $3 + i32.ne + if (result i32) + local.get $3 + if + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $2 + else + local.get $2 + end i32.store local.get $0 i32.const 4 @@ -489,9 +527,29 @@ i32.sub i32.store offset=4 local.get $0 + local.tee $1 i32.const 0 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + local.get $1 + i32.load offset=8 + local.tee $2 + i32.ne + if (result i32) + local.get $2 + if + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $3 + else + local.get $3 + end i32.store offset=8 local.get $0 i32.const 4 @@ -503,7 +561,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) block (result i32) local.get $0 @@ -514,12 +572,12 @@ i32.const 24 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -546,14 +604,14 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/util/hash/hash8 (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hash8 (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const -2128831035 local.get $0 i32.xor i32.const 16777619 i32.mul ) - (func $~lib/map/Map#find (; 11 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 13 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -608,7 +666,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -627,7 +685,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 13 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 15 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -745,13 +803,53 @@ end end local.get $0 + local.tee $9 local.get $3 + local.tee $12 + local.get $9 + i32.load + local.tee $11 + i32.ne + if (result i32) + local.get $11 + if + local.get $11 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $12 + else + local.get $12 + end i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 + local.tee $9 local.get $5 + local.tee $11 + local.get $9 + i32.load offset=8 + local.tee $12 + i32.ne + if (result i32) + local.get $12 + if + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $11 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $11 + else + local.get $11 + end i32.store offset=8 local.get $0 local.get $4 @@ -761,7 +859,7 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 14 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 16 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -869,7 +967,7 @@ i32.store end ) - (func $~lib/map/Map#get (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -895,11 +993,11 @@ unreachable end ) - (func $~lib/map/Map#get:size (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#delete (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -976,7 +1074,7 @@ end i32.const 1 ) - (func $std/map/test (; 18 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 20 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -999,8 +1097,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -1021,8 +1119,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -1041,8 +1139,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 11 + i32.const 128 + i32.const 12 i32.const 4 call $~lib/env/abort unreachable @@ -1064,8 +1162,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 13 + i32.const 128 + i32.const 14 i32.const 2 call $~lib/env/abort unreachable @@ -1086,8 +1184,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 17 + i32.const 128 + i32.const 18 i32.const 4 call $~lib/env/abort unreachable @@ -1106,8 +1204,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -1128,8 +1226,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 4 call $~lib/env/abort unreachable @@ -1148,8 +1246,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 21 + i32.const 128 + i32.const 22 i32.const 4 call $~lib/env/abort unreachable @@ -1171,8 +1269,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 23 + i32.const 128 + i32.const 24 i32.const 2 call $~lib/env/abort unreachable @@ -1193,8 +1291,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 27 + i32.const 128 + i32.const 28 i32.const 4 call $~lib/env/abort unreachable @@ -1213,8 +1311,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 4 call $~lib/env/abort unreachable @@ -1230,8 +1328,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 30 + i32.const 128 + i32.const 31 i32.const 4 call $~lib/env/abort unreachable @@ -1253,8 +1351,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 2 call $~lib/env/abort unreachable @@ -1276,8 +1374,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -1298,8 +1396,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 4 call $~lib/env/abort unreachable @@ -1315,8 +1413,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 40 + i32.const 128 + i32.const 41 i32.const 4 call $~lib/env/abort unreachable @@ -1338,8 +1436,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable @@ -1353,18 +1451,41 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 46 + i32.const 128 + i32.const 47 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/map/Map#clear (; 19 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 + local.tee $1 i32.const 0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $2 + local.get $1 + i32.load + local.tee $3 + i32.ne + if (result i32) + local.get $3 + if + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $2 + else + local.get $2 + end i32.store local.get $0 i32.const 4 @@ -1372,9 +1493,29 @@ i32.sub i32.store offset=4 local.get $0 + local.tee $1 i32.const 0 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + local.get $1 + i32.load offset=8 + local.tee $2 + i32.ne + if (result i32) + local.get $2 + if + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $3 + else + local.get $3 + end i32.store offset=8 local.get $0 i32.const 4 @@ -1386,7 +1527,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) block (result i32) local.get $0 @@ -1397,12 +1538,12 @@ i32.const 24 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 4 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -1429,7 +1570,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 21 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 23 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -1482,7 +1623,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -1499,7 +1640,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 23 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 25 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1617,13 +1758,53 @@ end end local.get $0 + local.tee $9 local.get $3 + local.tee $12 + local.get $9 + i32.load + local.tee $11 + i32.ne + if (result i32) + local.get $11 + if + local.get $11 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $12 + else + local.get $12 + end i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 + local.tee $9 local.get $5 + local.tee $11 + local.get $9 + i32.load offset=8 + local.tee $12 + i32.ne + if (result i32) + local.get $12 + if + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $11 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $11 + else + local.get $11 + end i32.store offset=8 local.get $0 local.get $4 @@ -1633,7 +1814,7 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 24 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 26 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1739,7 +1920,7 @@ i32.store end ) - (func $~lib/map/Map#get (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -1763,11 +1944,11 @@ unreachable end ) - (func $~lib/map/Map#get:size (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 28 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#delete (; 29 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1842,7 +2023,7 @@ end i32.const 1 ) - (func $std/map/test (; 28 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 30 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -1865,8 +2046,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -1885,8 +2066,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -1903,8 +2084,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 11 + i32.const 128 + i32.const 12 i32.const 4 call $~lib/env/abort unreachable @@ -1926,8 +2107,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 13 + i32.const 128 + i32.const 14 i32.const 2 call $~lib/env/abort unreachable @@ -1948,8 +2129,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 17 + i32.const 128 + i32.const 18 i32.const 4 call $~lib/env/abort unreachable @@ -1966,8 +2147,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -1986,8 +2167,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 4 call $~lib/env/abort unreachable @@ -2004,8 +2185,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 21 + i32.const 128 + i32.const 22 i32.const 4 call $~lib/env/abort unreachable @@ -2027,8 +2208,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 23 + i32.const 128 + i32.const 24 i32.const 2 call $~lib/env/abort unreachable @@ -2049,8 +2230,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 27 + i32.const 128 + i32.const 28 i32.const 4 call $~lib/env/abort unreachable @@ -2067,8 +2248,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 4 call $~lib/env/abort unreachable @@ -2084,8 +2265,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 30 + i32.const 128 + i32.const 31 i32.const 4 call $~lib/env/abort unreachable @@ -2107,8 +2288,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 2 call $~lib/env/abort unreachable @@ -2130,8 +2311,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -2150,8 +2331,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 4 call $~lib/env/abort unreachable @@ -2167,8 +2348,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 40 + i32.const 128 + i32.const 41 i32.const 4 call $~lib/env/abort unreachable @@ -2190,8 +2371,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable @@ -2205,18 +2386,41 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 46 + i32.const 128 + i32.const 47 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/map/Map#clear (; 29 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 31 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 + local.tee $1 i32.const 0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $2 + local.get $1 + i32.load + local.tee $3 + i32.ne + if (result i32) + local.get $3 + if + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $2 + else + local.get $2 + end i32.store local.get $0 i32.const 4 @@ -2224,9 +2428,29 @@ i32.sub i32.store offset=4 local.get $0 + local.tee $1 i32.const 0 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + local.get $1 + i32.load offset=8 + local.tee $2 + i32.ne + if (result i32) + local.get $2 + if + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $3 + else + local.get $3 + end i32.store offset=8 local.get $0 i32.const 4 @@ -2238,7 +2462,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 30 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 32 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) block (result i32) local.get $0 @@ -2249,12 +2473,12 @@ i32.const 24 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 5 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -2281,7 +2505,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/util/hash/hash16 (; 31 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hash16 (; 33 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) i32.const -2128831035 local.set $1 @@ -2303,7 +2527,7 @@ local.set $1 local.get $1 ) - (func $~lib/map/Map#find (; 32 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 34 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -2358,7 +2582,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 35 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -2377,7 +2601,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 34 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 36 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2495,13 +2719,53 @@ end end local.get $0 + local.tee $9 local.get $3 + local.tee $12 + local.get $9 + i32.load + local.tee $11 + i32.ne + if (result i32) + local.get $11 + if + local.get $11 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $12 + else + local.get $12 + end i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 + local.tee $9 local.get $5 + local.tee $11 + local.get $9 + i32.load offset=8 + local.tee $12 + i32.ne + if (result i32) + local.get $12 + if + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $11 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $11 + else + local.get $11 + end i32.store offset=8 local.get $0 local.get $4 @@ -2511,7 +2775,7 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 35 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 37 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2619,7 +2883,7 @@ i32.store end ) - (func $~lib/map/Map#get (; 36 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -2645,11 +2909,11 @@ unreachable end ) - (func $~lib/map/Map#get:size (; 37 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 39 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#delete (; 40 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2726,7 +2990,7 @@ end i32.const 1 ) - (func $std/map/test (; 39 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 41 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -2749,8 +3013,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -2771,8 +3035,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -2791,8 +3055,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 11 + i32.const 128 + i32.const 12 i32.const 4 call $~lib/env/abort unreachable @@ -2814,8 +3078,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 13 + i32.const 128 + i32.const 14 i32.const 2 call $~lib/env/abort unreachable @@ -2836,8 +3100,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 17 + i32.const 128 + i32.const 18 i32.const 4 call $~lib/env/abort unreachable @@ -2856,8 +3120,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -2878,8 +3142,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 4 call $~lib/env/abort unreachable @@ -2898,8 +3162,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 21 + i32.const 128 + i32.const 22 i32.const 4 call $~lib/env/abort unreachable @@ -2921,8 +3185,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 23 + i32.const 128 + i32.const 24 i32.const 2 call $~lib/env/abort unreachable @@ -2943,8 +3207,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 27 + i32.const 128 + i32.const 28 i32.const 4 call $~lib/env/abort unreachable @@ -2963,8 +3227,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 4 call $~lib/env/abort unreachable @@ -2980,8 +3244,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 30 + i32.const 128 + i32.const 31 i32.const 4 call $~lib/env/abort unreachable @@ -3003,8 +3267,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 2 call $~lib/env/abort unreachable @@ -3026,8 +3290,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -3048,8 +3312,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 4 call $~lib/env/abort unreachable @@ -3065,8 +3329,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 40 + i32.const 128 + i32.const 41 i32.const 4 call $~lib/env/abort unreachable @@ -3088,8 +3352,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable @@ -3103,18 +3367,41 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 46 + i32.const 128 + i32.const 47 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/map/Map#clear (; 40 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 42 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 + local.tee $1 i32.const 0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $2 + local.get $1 + i32.load + local.tee $3 + i32.ne + if (result i32) + local.get $3 + if + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $2 + else + local.get $2 + end i32.store local.get $0 i32.const 4 @@ -3122,9 +3409,29 @@ i32.sub i32.store offset=4 local.get $0 + local.tee $1 i32.const 0 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + local.get $1 + i32.load offset=8 + local.tee $2 + i32.ne + if (result i32) + local.get $2 + if + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $3 + else + local.get $3 + end i32.store offset=8 local.get $0 i32.const 4 @@ -3136,7 +3443,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 41 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 43 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) block (result i32) local.get $0 @@ -3147,12 +3454,12 @@ i32.const 24 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 6 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -3179,7 +3486,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 42 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 44 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -3232,7 +3539,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 43 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 45 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -3249,7 +3556,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 44 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 46 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3367,13 +3674,53 @@ end end local.get $0 + local.tee $9 local.get $3 + local.tee $12 + local.get $9 + i32.load + local.tee $11 + i32.ne + if (result i32) + local.get $11 + if + local.get $11 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $12 + else + local.get $12 + end i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 + local.tee $9 local.get $5 + local.tee $11 + local.get $9 + i32.load offset=8 + local.tee $12 + i32.ne + if (result i32) + local.get $12 + if + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $11 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $11 + else + local.get $11 + end i32.store offset=8 local.get $0 local.get $4 @@ -3383,7 +3730,7 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 45 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 47 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3489,7 +3836,7 @@ i32.store end ) - (func $~lib/map/Map#get (; 46 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 48 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -3513,11 +3860,11 @@ unreachable end ) - (func $~lib/map/Map#get:size (; 47 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 49 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 48 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#delete (; 50 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3592,7 +3939,7 @@ end i32.const 1 ) - (func $std/map/test (; 49 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 51 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -3615,8 +3962,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -3635,8 +3982,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -3653,8 +4000,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 11 + i32.const 128 + i32.const 12 i32.const 4 call $~lib/env/abort unreachable @@ -3676,8 +4023,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 13 + i32.const 128 + i32.const 14 i32.const 2 call $~lib/env/abort unreachable @@ -3698,8 +4045,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 17 + i32.const 128 + i32.const 18 i32.const 4 call $~lib/env/abort unreachable @@ -3716,8 +4063,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -3736,8 +4083,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 4 call $~lib/env/abort unreachable @@ -3754,8 +4101,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 21 + i32.const 128 + i32.const 22 i32.const 4 call $~lib/env/abort unreachable @@ -3777,8 +4124,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 23 + i32.const 128 + i32.const 24 i32.const 2 call $~lib/env/abort unreachable @@ -3799,8 +4146,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 27 + i32.const 128 + i32.const 28 i32.const 4 call $~lib/env/abort unreachable @@ -3817,8 +4164,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 4 call $~lib/env/abort unreachable @@ -3834,8 +4181,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 30 + i32.const 128 + i32.const 31 i32.const 4 call $~lib/env/abort unreachable @@ -3857,8 +4204,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 2 call $~lib/env/abort unreachable @@ -3880,8 +4227,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -3900,8 +4247,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 4 call $~lib/env/abort unreachable @@ -3917,8 +4264,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 40 + i32.const 128 + i32.const 41 i32.const 4 call $~lib/env/abort unreachable @@ -3940,8 +4287,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable @@ -3955,18 +4302,41 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 46 + i32.const 128 + i32.const 47 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/map/Map#clear (; 50 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 52 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 + local.tee $1 i32.const 0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $2 + local.get $1 + i32.load + local.tee $3 + i32.ne + if (result i32) + local.get $3 + if + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $2 + else + local.get $2 + end i32.store local.get $0 i32.const 4 @@ -3974,9 +4344,29 @@ i32.sub i32.store offset=4 local.get $0 + local.tee $1 i32.const 0 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + local.get $1 + i32.load offset=8 + local.tee $2 + i32.ne + if (result i32) + local.get $2 + if + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $3 + else + local.get $3 + end i32.store offset=8 local.get $0 i32.const 4 @@ -3988,7 +4378,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 51 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 53 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) block (result i32) local.get $0 @@ -3999,12 +4389,12 @@ i32.const 24 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 7 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -4031,7 +4421,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/util/hash/hash32 (; 52 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hash32 (; 54 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) i32.const -2128831035 local.set $1 @@ -4073,7 +4463,7 @@ local.set $1 local.get $1 ) - (func $~lib/map/Map#find (; 53 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 55 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -4124,7 +4514,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 54 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 56 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -4139,7 +4529,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 55 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 57 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4257,13 +4647,53 @@ end end local.get $0 + local.tee $9 local.get $3 + local.tee $12 + local.get $9 + i32.load + local.tee $11 + i32.ne + if (result i32) + local.get $11 + if + local.get $11 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $12 + else + local.get $12 + end i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 + local.tee $9 local.get $5 + local.tee $11 + local.get $9 + i32.load offset=8 + local.tee $12 + i32.ne + if (result i32) + local.get $12 + if + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $11 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $11 + else + local.get $11 + end i32.store offset=8 local.get $0 local.get $4 @@ -4273,7 +4703,7 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 56 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 58 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4377,7 +4807,7 @@ i32.store end ) - (func $~lib/map/Map#get (; 57 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 59 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -4399,11 +4829,11 @@ unreachable end ) - (func $~lib/map/Map#get:size (; 58 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 60 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 59 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#delete (; 61 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4476,7 +4906,7 @@ end i32.const 1 ) - (func $std/map/test (; 60 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 62 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -4499,8 +4929,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -4517,8 +4947,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -4533,8 +4963,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 11 + i32.const 128 + i32.const 12 i32.const 4 call $~lib/env/abort unreachable @@ -4556,8 +4986,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 13 + i32.const 128 + i32.const 14 i32.const 2 call $~lib/env/abort unreachable @@ -4578,8 +5008,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 17 + i32.const 128 + i32.const 18 i32.const 4 call $~lib/env/abort unreachable @@ -4594,8 +5024,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -4612,8 +5042,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 4 call $~lib/env/abort unreachable @@ -4628,8 +5058,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 21 + i32.const 128 + i32.const 22 i32.const 4 call $~lib/env/abort unreachable @@ -4651,8 +5081,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 23 + i32.const 128 + i32.const 24 i32.const 2 call $~lib/env/abort unreachable @@ -4673,8 +5103,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 27 + i32.const 128 + i32.const 28 i32.const 4 call $~lib/env/abort unreachable @@ -4689,8 +5119,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 4 call $~lib/env/abort unreachable @@ -4706,8 +5136,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 30 + i32.const 128 + i32.const 31 i32.const 4 call $~lib/env/abort unreachable @@ -4729,8 +5159,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 2 call $~lib/env/abort unreachable @@ -4752,8 +5182,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -4770,8 +5200,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 4 call $~lib/env/abort unreachable @@ -4787,8 +5217,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 40 + i32.const 128 + i32.const 41 i32.const 4 call $~lib/env/abort unreachable @@ -4810,8 +5240,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable @@ -4825,18 +5255,41 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 46 + i32.const 128 + i32.const 47 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/map/Map#clear (; 61 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 63 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 + local.tee $1 i32.const 0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $2 + local.get $1 + i32.load + local.tee $3 + i32.ne + if (result i32) + local.get $3 + if + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $2 + else + local.get $2 + end i32.store local.get $0 i32.const 4 @@ -4844,9 +5297,29 @@ i32.sub i32.store offset=4 local.get $0 + local.tee $1 i32.const 0 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + local.get $1 + i32.load offset=8 + local.tee $2 + i32.ne + if (result i32) + local.get $2 + if + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $3 + else + local.get $3 + end i32.store offset=8 local.get $0 i32.const 4 @@ -4858,7 +5331,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 62 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 64 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) block (result i32) local.get $0 @@ -4869,12 +5342,12 @@ i32.const 24 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 8 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -4901,7 +5374,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 63 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 65 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -4952,7 +5425,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 64 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 66 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -4967,7 +5440,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 65 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 67 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5085,13 +5558,53 @@ end end local.get $0 + local.tee $9 local.get $3 + local.tee $12 + local.get $9 + i32.load + local.tee $11 + i32.ne + if (result i32) + local.get $11 + if + local.get $11 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $12 + else + local.get $12 + end i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 + local.tee $9 local.get $5 + local.tee $11 + local.get $9 + i32.load offset=8 + local.tee $12 + i32.ne + if (result i32) + local.get $12 + if + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $11 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $11 + else + local.get $11 + end i32.store offset=8 local.get $0 local.get $4 @@ -5101,7 +5614,7 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 66 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 68 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5205,7 +5718,7 @@ i32.store end ) - (func $~lib/map/Map#get (; 67 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 69 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -5227,11 +5740,11 @@ unreachable end ) - (func $~lib/map/Map#get:size (; 68 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 70 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 69 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#delete (; 71 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5304,7 +5817,7 @@ end i32.const 1 ) - (func $std/map/test (; 70 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 72 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -5327,8 +5840,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -5345,8 +5858,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -5361,8 +5874,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 11 + i32.const 128 + i32.const 12 i32.const 4 call $~lib/env/abort unreachable @@ -5384,8 +5897,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 13 + i32.const 128 + i32.const 14 i32.const 2 call $~lib/env/abort unreachable @@ -5406,8 +5919,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 17 + i32.const 128 + i32.const 18 i32.const 4 call $~lib/env/abort unreachable @@ -5422,8 +5935,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -5440,8 +5953,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 4 call $~lib/env/abort unreachable @@ -5456,8 +5969,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 21 + i32.const 128 + i32.const 22 i32.const 4 call $~lib/env/abort unreachable @@ -5479,8 +5992,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 23 + i32.const 128 + i32.const 24 i32.const 2 call $~lib/env/abort unreachable @@ -5501,8 +6014,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 27 + i32.const 128 + i32.const 28 i32.const 4 call $~lib/env/abort unreachable @@ -5517,8 +6030,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 4 call $~lib/env/abort unreachable @@ -5534,8 +6047,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 30 + i32.const 128 + i32.const 31 i32.const 4 call $~lib/env/abort unreachable @@ -5557,8 +6070,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 2 call $~lib/env/abort unreachable @@ -5580,8 +6093,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -5598,8 +6111,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 4 call $~lib/env/abort unreachable @@ -5615,8 +6128,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 40 + i32.const 128 + i32.const 41 i32.const 4 call $~lib/env/abort unreachable @@ -5638,8 +6151,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable @@ -5653,18 +6166,41 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 46 + i32.const 128 + i32.const 47 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/map/Map#clear (; 71 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 73 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 + local.tee $1 i32.const 0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $2 + local.get $1 + i32.load + local.tee $3 + i32.ne + if (result i32) + local.get $3 + if + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $2 + else + local.get $2 + end i32.store local.get $0 i32.const 4 @@ -5672,9 +6208,29 @@ i32.sub i32.store offset=4 local.get $0 + local.tee $1 i32.const 0 i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + local.get $1 + i32.load offset=8 + local.tee $2 + i32.ne + if (result i32) + local.get $2 + if + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $3 + else + local.get $3 + end i32.store offset=8 local.get $0 i32.const 4 @@ -5686,7 +6242,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 72 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 74 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) block (result i32) local.get $0 @@ -5697,12 +6253,12 @@ i32.const 24 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 9 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -5729,7 +6285,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/util/hash/hash64 (; 73 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/hash/hash64 (; 75 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5817,7 +6373,7 @@ local.set $3 local.get $3 ) - (func $~lib/map/Map#find (; 74 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 76 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -5868,7 +6424,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 75 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/map/Map#has (; 77 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) local.get $0 local.get $1 @@ -5883,7 +6439,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 76 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 78 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6002,13 +6558,53 @@ end end local.get $0 + local.tee $9 local.get $3 + local.tee $13 + local.get $9 + i32.load + local.tee $12 + i32.ne + if (result i32) + local.get $12 + if + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $13 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $13 + else + local.get $13 + end i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 + local.tee $9 local.get $5 + local.tee $12 + local.get $9 + i32.load offset=8 + local.tee $13 + i32.ne + if (result i32) + local.get $13 + if + local.get $13 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $12 + else + local.get $12 + end i32.store offset=8 local.get $0 local.get $4 @@ -6018,7 +6614,7 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 77 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/map/Map#set (; 79 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i64) (local $4 i32) (local $5 i32) @@ -6123,7 +6719,7 @@ i32.store end ) - (func $~lib/map/Map#get (; 78 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/map/Map#get (; 80 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) (local $3 i32) local.get $0 @@ -6145,11 +6741,11 @@ unreachable end ) - (func $~lib/map/Map#get:size (; 79 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 81 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 80 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/map/Map#delete (; 82 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) (local $3 i32) (local $4 i32) @@ -6223,7 +6819,7 @@ end i32.const 1 ) - (func $std/map/test (; 81 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 83 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i64) i32.const 0 @@ -6246,8 +6842,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -6265,8 +6861,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -6282,8 +6878,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 11 + i32.const 128 + i32.const 12 i32.const 4 call $~lib/env/abort unreachable @@ -6305,8 +6901,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 13 + i32.const 128 + i32.const 14 i32.const 2 call $~lib/env/abort unreachable @@ -6327,8 +6923,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 17 + i32.const 128 + i32.const 18 i32.const 4 call $~lib/env/abort unreachable @@ -6344,8 +6940,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -6363,8 +6959,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 4 call $~lib/env/abort unreachable @@ -6380,8 +6976,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 21 + i32.const 128 + i32.const 22 i32.const 4 call $~lib/env/abort unreachable @@ -6403,8 +6999,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 23 + i32.const 128 + i32.const 24 i32.const 2 call $~lib/env/abort unreachable @@ -6425,8 +7021,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 27 + i32.const 128 + i32.const 28 i32.const 4 call $~lib/env/abort unreachable @@ -6442,8 +7038,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 4 call $~lib/env/abort unreachable @@ -6459,8 +7055,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 30 + i32.const 128 + i32.const 31 i32.const 4 call $~lib/env/abort unreachable @@ -6482,8 +7078,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 2 call $~lib/env/abort unreachable @@ -6505,8 +7101,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -6524,8 +7120,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 4 call $~lib/env/abort unreachable @@ -6541,8 +7137,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 40 + i32.const 128 + i32.const 41 i32.const 4 call $~lib/env/abort unreachable @@ -6564,8 +7160,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable @@ -6579,18 +7175,41 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 46 + i32.const 128 + i32.const 47 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/map/Map#clear (; 82 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 84 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 + local.tee $1 i32.const 0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $2 + local.get $1 + i32.load + local.tee $3 + i32.ne + if (result i32) + local.get $3 + if + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $2 + else + local.get $2 + end i32.store local.get $0 i32.const 4 @@ -6598,9 +7217,29 @@ i32.sub i32.store offset=4 local.get $0 + local.tee $1 i32.const 0 i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + local.get $1 + i32.load offset=8 + local.tee $2 + i32.ne + if (result i32) + local.get $2 + if + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $3 + else + local.get $3 + end i32.store offset=8 local.get $0 i32.const 4 @@ -6612,7 +7251,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 83 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 85 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) block (result i32) local.get $0 @@ -6623,12 +7262,12 @@ i32.const 24 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 10 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -6655,7 +7294,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 84 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 86 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -6706,7 +7345,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 85 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/map/Map#has (; 87 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) local.get $0 local.get $1 @@ -6721,7 +7360,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 86 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 88 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6840,13 +7479,53 @@ end end local.get $0 + local.tee $9 local.get $3 + local.tee $13 + local.get $9 + i32.load + local.tee $12 + i32.ne + if (result i32) + local.get $12 + if + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $13 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $13 + else + local.get $13 + end i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 + local.tee $9 local.get $5 + local.tee $12 + local.get $9 + i32.load offset=8 + local.tee $13 + i32.ne + if (result i32) + local.get $13 + if + local.get $13 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $12 + else + local.get $12 + end i32.store offset=8 local.get $0 local.get $4 @@ -6856,7 +7535,7 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 87 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/map/Map#set (; 89 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i64) (local $4 i32) (local $5 i32) @@ -6961,7 +7640,7 @@ i32.store end ) - (func $~lib/map/Map#get (; 88 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/map/Map#get (; 90 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) (local $3 i32) local.get $0 @@ -6983,11 +7662,11 @@ unreachable end ) - (func $~lib/map/Map#get:size (; 89 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 91 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 90 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/map/Map#delete (; 92 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) (local $3 i32) (local $4 i32) @@ -7061,7 +7740,7 @@ end i32.const 1 ) - (func $std/map/test (; 91 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 93 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i64) i32.const 0 @@ -7084,8 +7763,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -7103,8 +7782,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -7120,8 +7799,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 11 + i32.const 128 + i32.const 12 i32.const 4 call $~lib/env/abort unreachable @@ -7143,8 +7822,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 13 + i32.const 128 + i32.const 14 i32.const 2 call $~lib/env/abort unreachable @@ -7165,8 +7844,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 17 + i32.const 128 + i32.const 18 i32.const 4 call $~lib/env/abort unreachable @@ -7182,8 +7861,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -7201,8 +7880,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 4 call $~lib/env/abort unreachable @@ -7218,8 +7897,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 21 + i32.const 128 + i32.const 22 i32.const 4 call $~lib/env/abort unreachable @@ -7241,8 +7920,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 23 + i32.const 128 + i32.const 24 i32.const 2 call $~lib/env/abort unreachable @@ -7263,8 +7942,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 27 + i32.const 128 + i32.const 28 i32.const 4 call $~lib/env/abort unreachable @@ -7280,8 +7959,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 4 call $~lib/env/abort unreachable @@ -7297,8 +7976,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 30 + i32.const 128 + i32.const 31 i32.const 4 call $~lib/env/abort unreachable @@ -7320,8 +7999,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 2 call $~lib/env/abort unreachable @@ -7343,8 +8022,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -7362,8 +8041,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 4 call $~lib/env/abort unreachable @@ -7379,8 +8058,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 40 + i32.const 128 + i32.const 41 i32.const 4 call $~lib/env/abort unreachable @@ -7402,8 +8081,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable @@ -7417,18 +8096,41 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 46 + i32.const 128 + i32.const 47 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/map/Map#clear (; 92 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 94 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 + local.tee $1 i32.const 0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $2 + local.get $1 + i32.load + local.tee $3 + i32.ne + if (result i32) + local.get $3 + if + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $2 + else + local.get $2 + end i32.store local.get $0 i32.const 4 @@ -7436,9 +8138,29 @@ i32.sub i32.store offset=4 local.get $0 + local.tee $1 i32.const 0 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + local.get $1 + i32.load offset=8 + local.tee $2 + i32.ne + if (result i32) + local.get $2 + if + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $3 + else + local.get $3 + end i32.store offset=8 local.get $0 i32.const 4 @@ -7450,7 +8172,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 93 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 95 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) block (result i32) local.get $0 @@ -7461,12 +8183,12 @@ i32.const 24 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 11 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -7493,7 +8215,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 94 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 96 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -7544,7 +8266,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 95 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/map/Map#has (; 97 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) (local $2 f32) local.get $0 local.get $1 @@ -7560,7 +8282,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 96 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 98 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7680,13 +8402,53 @@ end end local.get $0 + local.tee $9 local.get $3 + local.tee $13 + local.get $9 + i32.load + local.tee $12 + i32.ne + if (result i32) + local.get $12 + if + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $13 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $13 + else + local.get $13 + end i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 + local.tee $9 local.get $5 + local.tee $12 + local.get $9 + i32.load offset=8 + local.tee $13 + i32.ne + if (result i32) + local.get $13 + if + local.get $13 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $12 + else + local.get $12 + end i32.store offset=8 local.get $0 local.get $4 @@ -7696,7 +8458,7 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 97 ;) (type $FUNCSIG$vifi) (param $0 i32) (param $1 f32) (param $2 i32) + (func $~lib/map/Map#set (; 99 ;) (type $FUNCSIG$vifi) (param $0 i32) (param $1 f32) (param $2 i32) (local $3 f32) (local $4 i32) (local $5 i32) @@ -7802,7 +8564,7 @@ i32.store end ) - (func $~lib/map/Map#get (; 98 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/map/Map#get (; 100 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) (local $2 f32) (local $3 i32) local.get $0 @@ -7825,11 +8587,11 @@ unreachable end ) - (func $~lib/map/Map#get:size (; 99 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 101 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 100 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/map/Map#delete (; 102 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) (local $2 f32) (local $3 i32) (local $4 i32) @@ -7904,7 +8666,7 @@ end i32.const 1 ) - (func $std/map/test (; 101 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 103 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 f32) i32.const 0 @@ -7927,8 +8689,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -7946,8 +8708,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -7963,8 +8725,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 11 + i32.const 128 + i32.const 12 i32.const 4 call $~lib/env/abort unreachable @@ -7986,8 +8748,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 13 + i32.const 128 + i32.const 14 i32.const 2 call $~lib/env/abort unreachable @@ -8008,8 +8770,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 17 + i32.const 128 + i32.const 18 i32.const 4 call $~lib/env/abort unreachable @@ -8025,8 +8787,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -8044,8 +8806,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 4 call $~lib/env/abort unreachable @@ -8061,8 +8823,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 21 + i32.const 128 + i32.const 22 i32.const 4 call $~lib/env/abort unreachable @@ -8084,8 +8846,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 23 + i32.const 128 + i32.const 24 i32.const 2 call $~lib/env/abort unreachable @@ -8106,8 +8868,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 27 + i32.const 128 + i32.const 28 i32.const 4 call $~lib/env/abort unreachable @@ -8123,8 +8885,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 4 call $~lib/env/abort unreachable @@ -8140,8 +8902,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 30 + i32.const 128 + i32.const 31 i32.const 4 call $~lib/env/abort unreachable @@ -8163,8 +8925,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 2 call $~lib/env/abort unreachable @@ -8186,8 +8948,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -8205,8 +8967,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 4 call $~lib/env/abort unreachable @@ -8222,8 +8984,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 40 + i32.const 128 + i32.const 41 i32.const 4 call $~lib/env/abort unreachable @@ -8245,8 +9007,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable @@ -8260,18 +9022,41 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 46 + i32.const 128 + i32.const 47 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/map/Map#clear (; 102 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 104 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 + local.tee $1 i32.const 0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $2 + local.get $1 + i32.load + local.tee $3 + i32.ne + if (result i32) + local.get $3 + if + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $2 + else + local.get $2 + end i32.store local.get $0 i32.const 4 @@ -8279,9 +9064,29 @@ i32.sub i32.store offset=4 local.get $0 + local.tee $1 i32.const 0 i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + local.get $1 + i32.load offset=8 + local.tee $2 + i32.ne + if (result i32) + local.get $2 + if + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $3 + else + local.get $3 + end i32.store offset=8 local.get $0 i32.const 4 @@ -8293,7 +9098,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 103 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 105 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) block (result i32) local.get $0 @@ -8304,12 +9109,12 @@ i32.const 24 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 12 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -8336,7 +9141,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 104 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 106 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -8387,7 +9192,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 105 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/map/Map#has (; 107 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 f64) local.get $0 local.get $1 @@ -8403,7 +9208,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 106 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 108 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8523,13 +9328,53 @@ end end local.get $0 + local.tee $9 local.get $3 + local.tee $13 + local.get $9 + i32.load + local.tee $12 + i32.ne + if (result i32) + local.get $12 + if + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $13 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $13 + else + local.get $13 + end i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 + local.tee $9 local.get $5 + local.tee $12 + local.get $9 + i32.load offset=8 + local.tee $13 + i32.ne + if (result i32) + local.get $13 + if + local.get $13 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $12 + else + local.get $12 + end i32.store offset=8 local.get $0 local.get $4 @@ -8539,7 +9384,7 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 107 ;) (type $FUNCSIG$vidi) (param $0 i32) (param $1 f64) (param $2 i32) + (func $~lib/map/Map#set (; 109 ;) (type $FUNCSIG$vidi) (param $0 i32) (param $1 f64) (param $2 i32) (local $3 f64) (local $4 i32) (local $5 i32) @@ -8645,7 +9490,7 @@ i32.store end ) - (func $~lib/map/Map#get (; 108 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/map/Map#get (; 110 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 f64) (local $3 i32) local.get $0 @@ -8668,11 +9513,11 @@ unreachable end ) - (func $~lib/map/Map#get:size (; 109 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 111 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 110 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/map/Map#delete (; 112 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 f64) (local $3 i32) (local $4 i32) @@ -8747,7 +9592,7 @@ end i32.const 1 ) - (func $std/map/test (; 111 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 113 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 f64) i32.const 0 @@ -8770,8 +9615,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -8789,8 +9634,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -8806,8 +9651,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 11 + i32.const 128 + i32.const 12 i32.const 4 call $~lib/env/abort unreachable @@ -8829,8 +9674,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 13 + i32.const 128 + i32.const 14 i32.const 2 call $~lib/env/abort unreachable @@ -8851,8 +9696,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 17 + i32.const 128 + i32.const 18 i32.const 4 call $~lib/env/abort unreachable @@ -8868,8 +9713,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -8887,8 +9732,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 4 call $~lib/env/abort unreachable @@ -8904,8 +9749,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 21 + i32.const 128 + i32.const 22 i32.const 4 call $~lib/env/abort unreachable @@ -8927,8 +9772,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 23 + i32.const 128 + i32.const 24 i32.const 2 call $~lib/env/abort unreachable @@ -8949,8 +9794,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 27 + i32.const 128 + i32.const 28 i32.const 4 call $~lib/env/abort unreachable @@ -8966,8 +9811,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 4 call $~lib/env/abort unreachable @@ -8983,8 +9828,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 30 + i32.const 128 + i32.const 31 i32.const 4 call $~lib/env/abort unreachable @@ -9006,8 +9851,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 2 call $~lib/env/abort unreachable @@ -9029,8 +9874,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -9048,8 +9893,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 4 call $~lib/env/abort unreachable @@ -9065,8 +9910,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 40 + i32.const 128 + i32.const 41 i32.const 4 call $~lib/env/abort unreachable @@ -9088,8 +9933,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable @@ -9103,14 +9948,14 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 46 + i32.const 128 + i32.const 47 i32.const 2 call $~lib/env/abort unreachable end ) - (func $start:std/map (; 112 ;) (type $FUNCSIG$v) + (func $start:std/map (; 114 ;) (type $FUNCSIG$v) global.get $~lib/memory/HEAP_BASE i32.const 7 i32.add @@ -9121,20 +9966,20 @@ global.set $~lib/allocator/arena/startOffset global.get $~lib/allocator/arena/startOffset global.set $~lib/allocator/arena/offset - call $std/map/test - call $std/map/test - call $std/map/test - call $std/map/test - call $std/map/test - call $std/map/test - call $std/map/test - call $std/map/test - call $std/map/test - call $std/map/test + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric ) - (func $start (; 113 ;) (type $FUNCSIG$v) + (func $start (; 115 ;) (type $FUNCSIG$v) call $start:std/map ) - (func $null (; 114 ;) (type $FUNCSIG$v) + (func $null (; 116 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/math.optimized.wat b/tests/compiler/std/math.optimized.wat index f81a2dbc..8a1096e9 100644 --- a/tests/compiler/std/math.optimized.wat +++ b/tests/compiler/std/math.optimized.wat @@ -3488,8 +3488,8 @@ (local $6 i32) (local $7 i32) (local $8 i64) - (local $9 i32) - (local $10 i64) + (local $9 i64) + (local $10 i32) local.get $0 i32.reinterpret_f32 local.tee $3 @@ -3532,10 +3532,10 @@ if local.get $0 f64.promote_f32 + local.tee $1 f64.const 3.141592653589793 f64.add - local.get $0 - f64.promote_f32 + local.get $1 f64.const 3.141592653589793 f64.sub local.get $7 @@ -3654,10 +3654,10 @@ if local.get $0 f64.promote_f32 + local.tee $1 f64.const 6.283185307179586 f64.add - local.get $0 - f64.promote_f32 + local.get $1 f64.const 6.283185307179586 f64.sub local.get $7 @@ -3791,15 +3791,15 @@ local.tee $6 i32.const 6 i32.shr_s - local.tee $9 + local.tee $10 i32.const 3 i32.shl i32.add i64.load - local.set $10 + local.set $8 i32.const 92 i32.load - local.get $9 + local.get $10 i32.const 1 i32.add i32.const 3 @@ -3822,7 +3822,7 @@ i64.shl i32.const 92 i32.load - local.get $9 + local.get $10 i32.const 2 i32.add i32.const 3 @@ -3843,11 +3843,7 @@ i64.sub i64.shr_u end - local.set $8 - f64.const 8.515303950216386e-20 - local.get $0 - f64.promote_f32 - f64.copysign + local.set $9 local.get $5 i64.const 64 local.get $6 @@ -3855,10 +3851,16 @@ local.tee $5 i64.sub i64.shr_u - local.get $10 + local.get $8 local.get $5 i64.shl i64.or + local.set $8 + f64.const 8.515303950216386e-20 + local.get $0 + f64.promote_f32 + f64.copysign + local.get $8 local.get $3 i32.const 8388607 i32.and @@ -3868,7 +3870,7 @@ local.tee $5 i64.mul local.get $5 - local.get $8 + local.get $9 i64.mul i64.const 32 i64.shr_u @@ -3876,7 +3878,7 @@ local.tee $5 i64.const 2 i64.shl - local.tee $8 + local.tee $9 f64.convert_i64_s f64.mul global.set $~lib/math/rempio2f_y @@ -3884,7 +3886,7 @@ local.get $5 i64.const 62 i64.shr_u - local.get $8 + local.get $9 i64.const 63 i64.shr_u i64.add @@ -3960,17 +3962,15 @@ f32.demote_f64 end local.set $0 + local.get $0 + f32.neg + local.get $0 local.get $3 i32.const 1 i32.add i32.const 2 i32.and - if - local.get $0 - f32.neg - local.set $0 - end - local.get $0 + select return end f64.const 1 @@ -9289,520 +9289,502 @@ (local $6 i32) (local $7 i32) (local $8 i64) - (local $9 i32) - (local $10 i64) + (local $9 i64) + (local $10 i32) local.get $0 i32.reinterpret_f32 local.tee $3 i32.const 31 i32.shr_u local.set $7 - local.get $3 - i32.const 2147483647 - i32.and - local.tee $3 - i32.const 1061752794 - i32.le_u - if + block $folding-inner0 local.get $3 - i32.const 964689920 - i32.lt_u + i32.const 2147483647 + i32.and + local.tee $3 + i32.const 1061752794 + i32.le_u if + local.get $3 + i32.const 964689920 + i32.lt_u + if + local.get $0 + return + end local.get $0 - return + f64.promote_f32 + local.tee $4 + local.get $4 + f64.mul + local.tee $1 + local.get $4 + f64.mul + local.set $2 + br $folding-inner0 end - local.get $0 - f64.promote_f32 - local.tee $4 - local.get $4 - f64.mul - local.tee $1 - local.get $4 - f64.mul - local.set $2 - local.get $4 - local.get $2 - f64.const -0.16666666641626524 - local.get $1 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $2 - local.get $1 - local.get $1 - f64.mul - f64.mul - f64.const -1.9839334836096632e-04 - local.get $1 - f64.const 2.718311493989822e-06 - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 - return - end - local.get $3 - i32.const 1081824209 - i32.le_u - if local.get $3 - i32.const 1075235811 + i32.const 1081824209 i32.le_u if - local.get $7 - if (result f32) - local.get $0 - f64.promote_f32 - f64.const 1.5707963267948966 - f64.add - local.tee $2 - local.get $2 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.set $2 - f64.const 1 - local.get $1 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $2 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $2 - local.get $1 - f64.mul - f64.const -0.001388676377460993 - local.get $1 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 - f32.neg - else - local.get $0 - f64.promote_f32 - f64.const 1.5707963267948966 - f64.sub - local.tee $1 - local.get $1 - f64.mul - local.tee $2 - local.get $2 - f64.mul - local.set $1 - f64.const 1 - local.get $2 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $1 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $1 - local.get $2 - f64.mul - f64.const -0.001388676377460993 - local.get $2 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 + local.get $3 + i32.const 1075235811 + i32.le_u + if + local.get $7 + if (result f32) + local.get $0 + f64.promote_f32 + f64.const 1.5707963267948966 + f64.add + local.tee $2 + local.get $2 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $2 + f64.const 1 + local.get $1 + f64.const -0.499999997251031 + f64.mul + f64.add + local.get $2 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $2 + local.get $1 + f64.mul + f64.const -0.001388676377460993 + local.get $1 + f64.const 2.439044879627741e-05 + f64.mul + f64.add + f64.mul + f64.add + f32.demote_f64 + f32.neg + else + local.get $0 + f64.promote_f32 + f64.const 1.5707963267948966 + f64.sub + local.tee $1 + local.get $1 + f64.mul + local.tee $2 + local.get $2 + f64.mul + local.set $1 + f64.const 1 + local.get $2 + f64.const -0.499999997251031 + f64.mul + f64.add + local.get $1 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $1 + local.get $2 + f64.mul + f64.const -0.001388676377460993 + local.get $2 + f64.const 2.439044879627741e-05 + f64.mul + f64.add + f64.mul + f64.add + f32.demote_f64 + end + return end - return - end - local.get $0 - f64.promote_f32 - f64.const 3.141592653589793 - f64.add - local.get $0 - f64.promote_f32 - f64.const 3.141592653589793 - f64.sub - local.get $7 - select - f64.neg - local.tee $2 - local.get $2 - f64.mul - local.tee $1 - local.get $2 - f64.mul - local.set $4 - local.get $2 - local.get $4 - f64.const -0.16666666641626524 - local.get $1 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $4 - local.get $1 - local.get $1 - f64.mul - f64.mul - f64.const -1.9839334836096632e-04 - local.get $1 - f64.const 2.718311493989822e-06 - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 - return - end - local.get $3 - i32.const 1088565717 - i32.le_u - if - local.get $3 - i32.const 1085271519 - i32.le_u - if - local.get $7 - if (result f32) - local.get $0 - f64.promote_f32 - f64.const 4.71238898038469 - f64.add - local.tee $4 - local.get $4 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.set $2 - f64.const 1 - local.get $1 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $2 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $2 - local.get $1 - f64.mul - f64.const -0.001388676377460993 - local.get $1 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 - else - local.get $0 - f64.promote_f32 - f64.const 4.71238898038469 - f64.sub - local.tee $1 - local.get $1 - f64.mul - local.tee $2 - local.get $2 - f64.mul - local.set $1 - f64.const 1 - local.get $2 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $1 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $1 - local.get $2 - f64.mul - f64.const -0.001388676377460993 - local.get $2 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 - f32.neg - end - return - end - local.get $0 - f64.promote_f32 - f64.const 6.283185307179586 - f64.add - local.get $0 - f64.promote_f32 - f64.const 6.283185307179586 - f64.sub - local.get $7 - select - local.tee $4 - local.get $4 - local.get $4 - f64.mul - local.tee $1 - local.get $4 - f64.mul - local.tee $2 - f64.const -0.16666666641626524 - local.get $1 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $2 - local.get $1 - local.get $1 - f64.mul - f64.mul - f64.const -1.9839334836096632e-04 - local.get $1 - f64.const 2.718311493989822e-06 - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 - return - end - local.get $3 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - local.get $0 - f32.sub - return - end - block $~lib/math/rempio2f|inlined.1 (result i32) - local.get $3 - i32.const 1305022427 - i32.lt_u - if local.get $0 f64.promote_f32 local.tee $1 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.set $2 + f64.const 3.141592653589793 + f64.add local.get $1 - local.get $2 - f64.const 1.5707963109016418 - f64.mul + f64.const 3.141592653589793 f64.sub + local.get $7 + select + f64.neg + local.tee $2 local.get $2 - f64.const 1.5893254773528196e-08 f64.mul - f64.sub - global.set $~lib/math/rempio2f_y + local.tee $1 local.get $2 - i32.trunc_f64_s - br $~lib/math/rempio2f|inlined.1 + f64.mul + local.set $4 + local.get $2 + local.get $4 + f64.const -0.16666666641626524 + local.get $1 + f64.const 0.008333329385889463 + f64.mul + f64.add + f64.mul + f64.add + local.get $4 + local.get $1 + local.get $1 + f64.mul + f64.mul + f64.const -1.9839334836096632e-04 + local.get $1 + f64.const 2.718311493989822e-06 + f64.mul + f64.add + f64.mul + f64.add + f32.demote_f64 + return end - i32.const 92 - i32.load local.get $3 - i32.const 23 - i32.shr_s - i32.const 152 - i32.sub - local.tee $6 - i32.const 6 - i32.shr_s - local.tee $9 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $10 - i32.const 92 - i32.load - local.get $9 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - i64.load - local.set $5 - local.get $6 - i32.const 63 - i32.and - local.tee $6 - i32.const 32 - i32.gt_s - if (result i64) - local.get $5 - local.get $6 - i32.const 32 - i32.sub - i64.extend_i32_s - i64.shl + i32.const 1088565717 + i32.le_u + if + local.get $3 + i32.const 1085271519 + i32.le_u + if + local.get $7 + if (result f32) + local.get $0 + f64.promote_f32 + f64.const 4.71238898038469 + f64.add + local.tee $4 + local.get $4 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $2 + f64.const 1 + local.get $1 + f64.const -0.499999997251031 + f64.mul + f64.add + local.get $2 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $2 + local.get $1 + f64.mul + f64.const -0.001388676377460993 + local.get $1 + f64.const 2.439044879627741e-05 + f64.mul + f64.add + f64.mul + f64.add + f32.demote_f64 + else + local.get $0 + f64.promote_f32 + f64.const 4.71238898038469 + f64.sub + local.tee $1 + local.get $1 + f64.mul + local.tee $2 + local.get $2 + f64.mul + local.set $1 + f64.const 1 + local.get $2 + f64.const -0.499999997251031 + f64.mul + f64.add + local.get $1 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $1 + local.get $2 + f64.mul + f64.const -0.001388676377460993 + local.get $2 + f64.const 2.439044879627741e-05 + f64.mul + f64.add + f64.mul + f64.add + f32.demote_f64 + f32.neg + end + return + end + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 6.283185307179586 + f64.add + local.get $1 + f64.const 6.283185307179586 + f64.sub + local.get $7 + select + local.tee $4 + local.get $4 + f64.mul + local.tee $1 + local.get $4 + f64.mul + local.set $2 + br $folding-inner0 + end + local.get $3 + i32.const 2139095040 + i32.ge_u + if + local.get $0 + local.get $0 + f32.sub + return + end + block $~lib/math/rempio2f|inlined.1 (result i32) + local.get $3 + i32.const 1305022427 + i32.lt_u + if + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 0.6366197723675814 + f64.mul + f64.nearest + local.set $2 + local.get $1 + local.get $2 + f64.const 1.5707963109016418 + f64.mul + f64.sub + local.get $2 + f64.const 1.5893254773528196e-08 + f64.mul + f64.sub + global.set $~lib/math/rempio2f_y + local.get $2 + i32.trunc_f64_s + br $~lib/math/rempio2f|inlined.1 + end i32.const 92 i32.load - local.get $9 - i32.const 2 + local.get $3 + i32.const 23 + i32.shr_s + i32.const 152 + i32.sub + local.tee $6 + i32.const 6 + i32.shr_s + local.tee $10 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $8 + i32.const 92 + i32.load + local.get $10 + i32.const 1 i32.add i32.const 3 i32.shl i32.add i64.load - i64.const 96 + local.set $5 local.get $6 - i64.extend_i32_s - i64.sub - i64.shr_u - i64.or - else + i32.const 63 + i32.and + local.tee $6 + i32.const 32 + i32.gt_s + if (result i64) + local.get $5 + local.get $6 + i32.const 32 + i32.sub + i64.extend_i32_s + i64.shl + i32.const 92 + i32.load + local.get $10 + i32.const 2 + i32.add + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 96 + local.get $6 + i64.extend_i32_s + i64.sub + i64.shr_u + i64.or + else + local.get $5 + i64.const 32 + local.get $6 + i64.extend_i32_s + i64.sub + i64.shr_u + end + local.set $9 local.get $5 - i64.const 32 + i64.const 64 local.get $6 i64.extend_i32_s + local.tee $5 i64.sub i64.shr_u + local.get $8 + local.get $5 + i64.shl + i64.or + local.set $8 + f64.const 8.515303950216386e-20 + local.get $0 + f64.promote_f32 + f64.copysign + local.get $8 + local.get $3 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + i64.extend_i32_s + local.tee $5 + i64.mul + local.get $5 + local.get $9 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $5 + i64.const 2 + i64.shl + local.tee $9 + f64.convert_i64_s + f64.mul + global.set $~lib/math/rempio2f_y + i32.const 0 + local.get $5 + i64.const 62 + i64.shr_u + local.get $9 + i64.const 63 + i64.shr_u + i64.add + i32.wrap_i64 + local.tee $3 + i32.sub + local.get $3 + local.get $7 + select end - local.set $8 - f64.const 8.515303950216386e-20 - local.get $0 - f64.promote_f32 - f64.copysign - local.get $5 - i64.const 64 - local.get $6 - i64.extend_i32_s - local.tee $5 - i64.sub - i64.shr_u - local.get $10 - local.get $5 - i64.shl - i64.or + local.set $3 + global.get $~lib/math/rempio2f_y + local.set $1 local.get $3 - i32.const 8388607 + i32.const 1 i32.and - i32.const 8388608 - i32.or - i64.extend_i32_s - local.tee $5 - i64.mul - local.get $5 - local.get $8 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $5 - i64.const 2 - i64.shl - local.tee $8 - f64.convert_i64_s - f64.mul - global.set $~lib/math/rempio2f_y - i32.const 0 - local.get $5 - i64.const 62 - i64.shr_u - local.get $8 - i64.const 63 - i64.shr_u - i64.add - i32.wrap_i64 - local.tee $3 - i32.sub - local.get $3 - local.get $7 - select - end - local.set $3 - global.get $~lib/math/rempio2f_y - local.set $1 - local.get $3 - i32.const 1 - i32.and - if (result f32) - local.get $1 - local.get $1 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.set $2 - f64.const 1 - local.get $1 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $2 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $2 - local.get $1 - f64.mul - f64.const -0.001388676377460993 - local.get $1 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 - else - local.get $1 - local.get $1 - local.get $1 - f64.mul - local.tee $2 - local.get $1 - f64.mul - local.tee $4 - f64.const -0.16666666641626524 - local.get $2 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $4 - local.get $2 - local.get $2 - f64.mul - f64.mul - f64.const -1.9839334836096632e-04 - local.get $2 - f64.const 2.718311493989822e-06 - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 - end - local.set $0 - local.get $3 - i32.const 2 - i32.and - if + if (result f32) + local.get $1 + local.get $1 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $2 + f64.const 1 + local.get $1 + f64.const -0.499999997251031 + f64.mul + f64.add + local.get $2 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $2 + local.get $1 + f64.mul + f64.const -0.001388676377460993 + local.get $1 + f64.const 2.439044879627741e-05 + f64.mul + f64.add + f64.mul + f64.add + f32.demote_f64 + else + local.get $1 + local.get $1 + local.get $1 + f64.mul + local.tee $2 + local.get $1 + f64.mul + local.tee $4 + f64.const -0.16666666641626524 + local.get $2 + f64.const 0.008333329385889463 + f64.mul + f64.add + f64.mul + f64.add + local.get $4 + local.get $2 + local.get $2 + f64.mul + f64.mul + f64.const -1.9839334836096632e-04 + local.get $2 + f64.const 2.718311493989822e-06 + f64.mul + f64.add + f64.mul + f64.add + f32.demote_f64 + end + local.set $0 local.get $0 f32.neg - local.set $0 + local.get $0 + local.get $3 + i32.const 2 + i32.and + select + return end - local.get $0 + local.get $4 + local.get $2 + f64.const -0.16666666641626524 + local.get $1 + f64.const 0.008333329385889463 + f64.mul + f64.add + f64.mul + f64.add + local.get $2 + local.get $1 + local.get $1 + f64.mul + f64.mul + f64.const -1.9839334836096632e-04 + local.get $1 + f64.const 2.718311493989822e-06 + f64.mul + f64.add + f64.mul + f64.add + f32.demote_f64 ) (func $std/math/test_sinf (; 136 ;) (type $FUNCSIG$ifff) (param $0 f32) (param $1 f32) (param $2 f32) (result i32) local.get $0 @@ -10019,37 +10001,339 @@ (local $6 i32) (local $7 i32) (local $8 i64) - (local $9 i32) - (local $10 i64) + (local $9 i64) + (local $10 i32) local.get $0 i32.reinterpret_f32 local.tee $4 i32.const 31 i32.shr_u local.set $7 - local.get $4 - i32.const 2147483647 - i32.and - local.tee $4 - i32.const 1061752794 - i32.le_u - if - local.get $4 - i32.const 964689920 - i32.lt_u - if - local.get $0 + block $folding-inner1 + block $folding-inner0 + local.get $4 + i32.const 2147483647 + i32.and + local.tee $4 + i32.const 1061752794 + i32.le_u + if + local.get $4 + i32.const 964689920 + i32.lt_u + if + local.get $0 + return + end + local.get $0 + f64.promote_f32 + local.tee $1 + local.get $1 + f64.mul + local.tee $2 + local.get $1 + f64.mul + local.set $3 + br $folding-inner0 + end + local.get $4 + i32.const 1081824209 + i32.le_u + if + local.get $4 + i32.const 1075235811 + i32.le_u + if + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 1.5707963267948966 + f64.add + local.get $1 + f64.const 1.5707963267948966 + f64.sub + local.get $7 + select + local.tee $1 + local.get $1 + f64.mul + local.tee $3 + local.get $1 + f64.mul + local.set $2 + br $folding-inner1 + else + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 3.141592653589793 + f64.add + local.get $1 + f64.const 3.141592653589793 + f64.sub + local.get $7 + select + local.tee $1 + local.get $1 + f64.mul + local.tee $2 + local.get $1 + f64.mul + local.set $3 + br $folding-inner0 + end + unreachable + end + local.get $4 + i32.const 1088565717 + i32.le_u + if + local.get $4 + i32.const 1085271519 + i32.le_u + if + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 4.71238898038469 + f64.add + local.get $1 + f64.const 4.71238898038469 + f64.sub + local.get $7 + select + local.tee $1 + local.get $1 + f64.mul + local.tee $3 + local.get $1 + f64.mul + local.set $2 + br $folding-inner1 + else + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 6.283185307179586 + f64.add + local.get $1 + f64.const 6.283185307179586 + f64.sub + local.get $7 + select + local.tee $1 + local.get $1 + f64.mul + local.tee $2 + local.get $1 + f64.mul + local.set $3 + br $folding-inner0 + end + unreachable + end + local.get $4 + i32.const 2139095040 + i32.ge_u + if + local.get $0 + local.get $0 + f32.sub + return + end + block $~lib/math/rempio2f|inlined.2 (result i32) + local.get $4 + i32.const 1305022427 + i32.lt_u + if + local.get $0 + f64.promote_f32 + local.tee $2 + f64.const 0.6366197723675814 + f64.mul + f64.nearest + local.set $1 + local.get $2 + local.get $1 + f64.const 1.5707963109016418 + f64.mul + f64.sub + local.get $1 + f64.const 1.5893254773528196e-08 + f64.mul + f64.sub + global.set $~lib/math/rempio2f_y + local.get $1 + i32.trunc_f64_s + br $~lib/math/rempio2f|inlined.2 + end + i32.const 92 + i32.load + local.get $4 + i32.const 23 + i32.shr_s + i32.const 152 + i32.sub + local.tee $6 + i32.const 6 + i32.shr_s + local.tee $10 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $8 + i32.const 92 + i32.load + local.get $10 + i32.const 1 + i32.add + i32.const 3 + i32.shl + i32.add + i64.load + local.set $5 + local.get $6 + i32.const 63 + i32.and + local.tee $6 + i32.const 32 + i32.gt_s + if (result i64) + local.get $5 + local.get $6 + i32.const 32 + i32.sub + i64.extend_i32_s + i64.shl + i32.const 92 + i32.load + local.get $10 + i32.const 2 + i32.add + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 96 + local.get $6 + i64.extend_i32_s + i64.sub + i64.shr_u + i64.or + else + local.get $5 + i64.const 32 + local.get $6 + i64.extend_i32_s + i64.sub + i64.shr_u + end + local.set $9 + local.get $5 + i64.const 64 + local.get $6 + i64.extend_i32_s + local.tee $5 + i64.sub + i64.shr_u + local.get $8 + local.get $5 + i64.shl + i64.or + local.set $8 + f64.const 8.515303950216386e-20 + local.get $0 + f64.promote_f32 + f64.copysign + local.get $8 + local.get $4 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + i64.extend_i32_s + local.tee $5 + i64.mul + local.get $5 + local.get $9 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $5 + i64.const 2 + i64.shl + local.tee $9 + f64.convert_i64_s + f64.mul + global.set $~lib/math/rempio2f_y + i32.const 0 + local.get $5 + i64.const 62 + i64.shr_u + local.get $9 + i64.const 63 + i64.shr_u + i64.add + i32.wrap_i64 + local.tee $4 + i32.sub + local.get $4 + local.get $7 + select + end + local.set $4 + global.get $~lib/math/rempio2f_y + local.tee $1 + local.get $1 + f64.mul + local.tee $3 + local.get $1 + f64.mul + local.set $2 + local.get $1 + local.get $2 + f64.const 0.3333313950307914 + local.get $3 + f64.const 0.13339200271297674 + f64.mul + f64.add + f64.mul + f64.add + local.get $2 + local.get $3 + local.get $3 + f64.mul + local.tee $1 + f64.mul + f64.const 0.05338123784456704 + local.get $3 + f64.const 0.024528318116654728 + f64.mul + f64.add + local.get $1 + f64.const 0.002974357433599673 + local.get $3 + f64.const 0.009465647849436732 + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + local.set $1 + f64.const -1 + local.get $1 + f64.div + local.get $1 + local.get $4 + i32.const 1 + i32.and + select + f32.demote_f64 return end - local.get $0 - f64.promote_f32 - local.tee $1 - local.get $1 - f64.mul - local.tee $2 - local.get $1 - f64.mul - local.set $3 local.get $1 local.get $3 f64.const 0.3333313950307914 @@ -10083,384 +10367,7 @@ f32.demote_f64 return end - local.get $4 - i32.const 1081824209 - i32.le_u - if - local.get $4 - i32.const 1075235811 - i32.le_u - if - f64.const -1 - local.get $0 - f64.promote_f32 - f64.const 1.5707963267948966 - f64.add - local.get $0 - f64.promote_f32 - f64.const 1.5707963267948966 - f64.sub - local.get $7 - select - local.tee $1 - local.get $1 - local.get $1 - f64.mul - local.tee $3 - local.get $1 - f64.mul - local.tee $2 - f64.const 0.3333313950307914 - local.get $3 - f64.const 0.13339200271297674 - f64.mul - f64.add - f64.mul - f64.add - local.get $2 - local.get $3 - local.get $3 - f64.mul - local.tee $1 - f64.mul - f64.const 0.05338123784456704 - local.get $3 - f64.const 0.024528318116654728 - f64.mul - f64.add - local.get $1 - f64.const 0.002974357433599673 - local.get $3 - f64.const 0.009465647849436732 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.div - f32.demote_f64 - return - else - local.get $0 - f64.promote_f32 - f64.const 3.141592653589793 - f64.add - local.get $0 - f64.promote_f32 - f64.const 3.141592653589793 - f64.sub - local.get $7 - select - local.tee $1 - local.get $1 - local.get $1 - f64.mul - local.tee $2 - local.get $1 - f64.mul - local.tee $3 - f64.const 0.3333313950307914 - local.get $2 - f64.const 0.13339200271297674 - f64.mul - f64.add - f64.mul - f64.add - local.get $3 - local.get $2 - local.get $2 - f64.mul - local.tee $1 - f64.mul - f64.const 0.05338123784456704 - local.get $2 - f64.const 0.024528318116654728 - f64.mul - f64.add - local.get $1 - f64.const 0.002974357433599673 - local.get $2 - f64.const 0.009465647849436732 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 - return - end - unreachable - end - local.get $4 - i32.const 1088565717 - i32.le_u - if - local.get $4 - i32.const 1085271519 - i32.le_u - if - f64.const -1 - local.get $0 - f64.promote_f32 - f64.const 4.71238898038469 - f64.add - local.get $0 - f64.promote_f32 - f64.const 4.71238898038469 - f64.sub - local.get $7 - select - local.tee $1 - local.get $1 - local.get $1 - f64.mul - local.tee $3 - local.get $1 - f64.mul - local.tee $2 - f64.const 0.3333313950307914 - local.get $3 - f64.const 0.13339200271297674 - f64.mul - f64.add - f64.mul - f64.add - local.get $2 - local.get $3 - local.get $3 - f64.mul - local.tee $1 - f64.mul - f64.const 0.05338123784456704 - local.get $3 - f64.const 0.024528318116654728 - f64.mul - f64.add - local.get $1 - f64.const 0.002974357433599673 - local.get $3 - f64.const 0.009465647849436732 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.div - f32.demote_f64 - return - else - local.get $0 - f64.promote_f32 - f64.const 6.283185307179586 - f64.add - local.get $0 - f64.promote_f32 - f64.const 6.283185307179586 - f64.sub - local.get $7 - select - local.tee $1 - local.get $1 - local.get $1 - f64.mul - local.tee $2 - local.get $1 - f64.mul - local.tee $3 - f64.const 0.3333313950307914 - local.get $2 - f64.const 0.13339200271297674 - f64.mul - f64.add - f64.mul - f64.add - local.get $3 - local.get $2 - local.get $2 - f64.mul - local.tee $1 - f64.mul - f64.const 0.05338123784456704 - local.get $2 - f64.const 0.024528318116654728 - f64.mul - f64.add - local.get $1 - f64.const 0.002974357433599673 - local.get $2 - f64.const 0.009465647849436732 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 - return - end - unreachable - end - local.get $4 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - local.get $0 - f32.sub - return - end - block $~lib/math/rempio2f|inlined.2 (result i32) - local.get $4 - i32.const 1305022427 - i32.lt_u - if - local.get $0 - f64.promote_f32 - local.tee $2 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.set $1 - local.get $2 - local.get $1 - f64.const 1.5707963109016418 - f64.mul - f64.sub - local.get $1 - f64.const 1.5893254773528196e-08 - f64.mul - f64.sub - global.set $~lib/math/rempio2f_y - local.get $1 - i32.trunc_f64_s - br $~lib/math/rempio2f|inlined.2 - end - i32.const 92 - i32.load - local.get $4 - i32.const 23 - i32.shr_s - i32.const 152 - i32.sub - local.tee $6 - i32.const 6 - i32.shr_s - local.tee $9 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $10 - i32.const 92 - i32.load - local.get $9 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - i64.load - local.set $5 - local.get $6 - i32.const 63 - i32.and - local.tee $6 - i32.const 32 - i32.gt_s - if (result i64) - local.get $5 - local.get $6 - i32.const 32 - i32.sub - i64.extend_i32_s - i64.shl - i32.const 92 - i32.load - local.get $9 - i32.const 2 - i32.add - i32.const 3 - i32.shl - i32.add - i64.load - i64.const 96 - local.get $6 - i64.extend_i32_s - i64.sub - i64.shr_u - i64.or - else - local.get $5 - i64.const 32 - local.get $6 - i64.extend_i32_s - i64.sub - i64.shr_u - end - local.set $8 - f64.const 8.515303950216386e-20 - local.get $0 - f64.promote_f32 - f64.copysign - local.get $5 - i64.const 64 - local.get $6 - i64.extend_i32_s - local.tee $5 - i64.sub - i64.shr_u - local.get $10 - local.get $5 - i64.shl - i64.or - local.get $4 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - i64.extend_i32_s - local.tee $5 - i64.mul - local.get $5 - local.get $8 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $5 - i64.const 2 - i64.shl - local.tee $8 - f64.convert_i64_s - f64.mul - global.set $~lib/math/rempio2f_y - i32.const 0 - local.get $5 - i64.const 62 - i64.shr_u - local.get $8 - i64.const 63 - i64.shr_u - i64.add - i32.wrap_i64 - local.tee $4 - i32.sub - local.get $4 - local.get $7 - select - end - local.set $4 - global.get $~lib/math/rempio2f_y - local.tee $1 - local.get $1 - f64.mul - local.tee $3 - local.get $1 - f64.mul - local.set $2 + f64.const -1 local.get $1 local.get $2 f64.const 0.3333313950307914 @@ -10491,17 +10398,7 @@ f64.add f64.mul f64.add - local.set $1 - local.get $4 - i32.const 1 - i32.and - if - f64.const -1 - local.get $1 - f64.div - local.set $1 - end - local.get $1 + f64.div f32.demote_f64 ) (func $std/math/test_tanf (; 144 ;) (type $FUNCSIG$ifff) (param $0 f32) (param $1 f32) (param $2 f32) (result i32) diff --git a/tests/compiler/std/math.untouched.wat b/tests/compiler/std/math.untouched.wat index 1b0516bb..7762cdf4 100644 --- a/tests/compiler/std/math.untouched.wat +++ b/tests/compiler/std/math.untouched.wat @@ -16,6 +16,7 @@ (type $FUNCSIG$ddd (func (param f64 f64) (result f64))) (type $FUNCSIG$iffffi (func (param f32 f32 f32 f32 i32) (result i32))) (type $FUNCSIG$fff (func (param f32 f32) (result f32))) + (type $FUNCSIG$jii (func (param i32 i32) (result i64))) (type $FUNCSIG$d (func (result f64))) (type $FUNCSIG$vj (func (param i64))) (type $FUNCSIG$jj (func (param i64) (result i64))) @@ -90,6 +91,8 @@ (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/math/rempio2f_y (mut f64) (f64.const 0)) (global $~lib/math/PIO2_TABLE i32 (i32.const 88)) + (global $~lib/runtime/HEADER_SIZE i32 (i32.const 8)) + (global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) (global $~lib/builtins/f32.MAX_VALUE f32 (f32.const 3402823466385288598117041e14)) (global $~lib/builtins/f64.MIN_VALUE f64 (f64.const 5e-324)) (global $~lib/math/random_seeded (mut i32) (i32.const 0)) @@ -4308,7 +4311,16 @@ local.get $3 call $std/math/check ) - (func $~lib/math/NativeMathf.cos (; 86 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/array/Array#__unchecked_get (; 86 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + ) + (func $~lib/math/NativeMathf.cos (; 87 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 i32) (local $3 f64) @@ -4744,38 +4756,26 @@ i32.and local.set $15 i32.const 88 - i32.load offset=4 local.get $14 i32.const 0 i32.add - i32.const 3 - i32.shl - i32.add - i64.load + call $~lib/array/Array#__unchecked_get local.set $16 i32.const 88 - i32.load offset=4 local.get $14 i32.const 1 i32.add - i32.const 3 - i32.shl - i32.add - i64.load + call $~lib/array/Array#__unchecked_get local.set $17 local.get $15 i32.const 32 i32.gt_s if i32.const 88 - i32.load offset=4 local.get $14 i32.const 2 i32.add - i32.const 3 - i32.shl - i32.add - i64.load + call $~lib/array/Array#__unchecked_get local.set $19 local.get $19 i64.const 96 @@ -4953,7 +4953,7 @@ local.get $26 end ) - (func $std/math/test_cosf (; 87 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) + (func $std/math/test_cosf (; 88 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) local.get $0 call $~lib/math/NativeMathf.cos local.get $1 @@ -4961,7 +4961,7 @@ local.get $3 call $std/math/check ) - (func $~lib/math/NativeMath.expm1 (; 88 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $~lib/math/NativeMath.expm1 (; 89 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) (local $1 i64) (local $2 i32) (local $3 i32) @@ -5275,7 +5275,7 @@ local.get $14 f64.mul ) - (func $~lib/math/NativeMath.exp (; 89 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $~lib/math/NativeMath.exp (; 90 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) (local $1 i32) (local $2 i32) (local $3 f64) @@ -5440,7 +5440,7 @@ local.get $5 call $~lib/math/NativeMath.scalbn ) - (func $~lib/math/NativeMath.cosh (; 90 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $~lib/math/NativeMath.cosh (; 91 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) (local $1 i64) (local $2 i32) (local $3 f64) @@ -5535,7 +5535,7 @@ local.set $3 local.get $3 ) - (func $std/math/test_cosh (; 91 ;) (type $FUNCSIG$idddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) + (func $std/math/test_cosh (; 92 ;) (type $FUNCSIG$idddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) (local $4 i32) local.get $0 call $~lib/math/NativeMath.cosh @@ -5562,7 +5562,7 @@ local.get $4 end ) - (func $~lib/math/NativeMathf.expm1 (; 92 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.expm1 (; 93 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5857,7 +5857,7 @@ local.get $13 f32.mul ) - (func $~lib/math/NativeMathf.exp (; 93 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.exp (; 94 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 i32) (local $3 f32) @@ -6001,7 +6001,7 @@ local.get $5 call $~lib/math/NativeMathf.scalbn ) - (func $~lib/math/NativeMathf.cosh (; 94 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.cosh (; 95 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 f32) (local $3 f32) @@ -6084,7 +6084,7 @@ f32.mul end ) - (func $std/math/test_coshf (; 95 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) + (func $std/math/test_coshf (; 96 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) local.get $0 call $~lib/math/NativeMathf.cosh local.get $1 @@ -6092,7 +6092,7 @@ local.get $3 call $std/math/check ) - (func $std/math/test_exp (; 96 ;) (type $FUNCSIG$idddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) + (func $std/math/test_exp (; 97 ;) (type $FUNCSIG$idddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) (local $4 i32) local.get $0 call $~lib/math/NativeMath.exp @@ -6119,7 +6119,7 @@ local.get $4 end ) - (func $std/math/test_expf (; 97 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) + (func $std/math/test_expf (; 98 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) local.get $0 call $~lib/math/NativeMathf.exp local.get $1 @@ -6127,7 +6127,7 @@ local.get $3 call $std/math/check ) - (func $std/math/test_expm1 (; 98 ;) (type $FUNCSIG$idddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) + (func $std/math/test_expm1 (; 99 ;) (type $FUNCSIG$idddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) (local $4 i32) local.get $0 call $~lib/math/NativeMath.expm1 @@ -6154,7 +6154,7 @@ local.get $4 end ) - (func $std/math/test_expm1f (; 99 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) + (func $std/math/test_expm1f (; 100 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) local.get $0 call $~lib/math/NativeMathf.expm1 local.get $1 @@ -6162,7 +6162,7 @@ local.get $3 call $std/math/check ) - (func $std/math/test_floor (; 100 ;) (type $FUNCSIG$idddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) + (func $std/math/test_floor (; 101 ;) (type $FUNCSIG$idddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) (local $4 f64) (local $5 i32) block $~lib/math/NativeMath.floor|inlined.0 (result f64) @@ -6194,7 +6194,7 @@ local.get $5 end ) - (func $std/math/test_floorf (; 101 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) + (func $std/math/test_floorf (; 102 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) (local $4 f32) block $~lib/math/NativeMathf.floor|inlined.0 (result f32) local.get $0 @@ -6207,7 +6207,7 @@ local.get $3 call $std/math/check ) - (func $~lib/math/NativeMath.hypot (; 102 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) + (func $~lib/math/NativeMath.hypot (; 103 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) (local $2 i64) (local $3 i64) (local $4 i64) @@ -6408,7 +6408,7 @@ f64.sqrt f64.mul ) - (func $std/math/test_hypot (; 103 ;) (type $FUNCSIG$iddddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (param $4 i32) (result i32) + (func $std/math/test_hypot (; 104 ;) (type $FUNCSIG$iddddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (param $4 i32) (result i32) (local $5 i32) local.get $0 local.get $1 @@ -6437,7 +6437,7 @@ local.get $5 end ) - (func $~lib/math/NativeMathf.hypot (; 104 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) + (func $~lib/math/NativeMathf.hypot (; 105 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6570,7 +6570,7 @@ f32.sqrt f32.mul ) - (func $std/math/test_hypotf (; 105 ;) (type $FUNCSIG$iffffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (param $4 i32) (result i32) + (func $std/math/test_hypotf (; 106 ;) (type $FUNCSIG$iffffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (param $4 i32) (result i32) local.get $0 local.get $1 call $~lib/math/NativeMathf.hypot @@ -6579,7 +6579,7 @@ local.get $4 call $std/math/check ) - (func $std/math/test_log (; 106 ;) (type $FUNCSIG$idddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) + (func $std/math/test_log (; 107 ;) (type $FUNCSIG$idddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) (local $4 i32) local.get $0 call $~lib/math/NativeMath.log @@ -6606,7 +6606,7 @@ local.get $4 end ) - (func $std/math/test_logf (; 107 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) + (func $std/math/test_logf (; 108 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) local.get $0 call $~lib/math/NativeMathf.log local.get $1 @@ -6614,7 +6614,7 @@ local.get $3 call $std/math/check ) - (func $~lib/math/NativeMath.log10 (; 108 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $~lib/math/NativeMath.log10 (; 109 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) (local $1 i64) (local $2 i32) (local $3 i32) @@ -6877,7 +6877,7 @@ local.get $9 f64.add ) - (func $std/math/test_log10 (; 109 ;) (type $FUNCSIG$idddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) + (func $std/math/test_log10 (; 110 ;) (type $FUNCSIG$idddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) (local $4 i32) local.get $0 call $~lib/math/NativeMath.log10 @@ -6904,7 +6904,7 @@ local.get $4 end ) - (func $~lib/math/NativeMathf.log10 (; 110 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.log10 (; 111 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -7106,7 +7106,7 @@ f32.mul f32.add ) - (func $std/math/test_log10f (; 111 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) + (func $std/math/test_log10f (; 112 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) local.get $0 call $~lib/math/NativeMathf.log10 local.get $1 @@ -7114,7 +7114,7 @@ local.get $3 call $std/math/check ) - (func $std/math/test_log1p (; 112 ;) (type $FUNCSIG$idddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) + (func $std/math/test_log1p (; 113 ;) (type $FUNCSIG$idddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) (local $4 i32) local.get $0 call $~lib/math/NativeMath.log1p @@ -7141,7 +7141,7 @@ local.get $4 end ) - (func $std/math/test_log1pf (; 113 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) + (func $std/math/test_log1pf (; 114 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) local.get $0 call $~lib/math/NativeMathf.log1p local.get $1 @@ -7149,7 +7149,7 @@ local.get $3 call $std/math/check ) - (func $~lib/math/NativeMath.log2 (; 114 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $~lib/math/NativeMath.log2 (; 115 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) (local $1 i64) (local $2 i32) (local $3 i32) @@ -7405,7 +7405,7 @@ local.get $15 f64.add ) - (func $std/math/test_log2 (; 115 ;) (type $FUNCSIG$idddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) + (func $std/math/test_log2 (; 116 ;) (type $FUNCSIG$idddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) (local $4 i32) local.get $0 call $~lib/math/NativeMath.log2 @@ -7432,7 +7432,7 @@ local.get $4 end ) - (func $~lib/math/NativeMathf.log2 (; 116 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.log2 (; 117 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -7629,7 +7629,7 @@ local.get $15 f32.add ) - (func $std/math/test_log2f (; 117 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) + (func $std/math/test_log2f (; 118 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) local.get $0 call $~lib/math/NativeMathf.log2 local.get $1 @@ -7637,7 +7637,7 @@ local.get $3 call $std/math/check ) - (func $std/math/test_max (; 118 ;) (type $FUNCSIG$iddddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (param $4 i32) (result i32) + (func $std/math/test_max (; 119 ;) (type $FUNCSIG$iddddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (param $4 i32) (result i32) (local $5 f64) (local $6 f64) (local $7 i32) @@ -7674,7 +7674,7 @@ local.get $7 end ) - (func $std/math/test_maxf (; 119 ;) (type $FUNCSIG$iffffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (param $4 i32) (result i32) + (func $std/math/test_maxf (; 120 ;) (type $FUNCSIG$iffffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (param $4 i32) (result i32) (local $5 f32) (local $6 f32) block $~lib/math/NativeMathf.max|inlined.0 (result f32) @@ -7691,7 +7691,7 @@ local.get $4 call $std/math/check ) - (func $std/math/test_min (; 120 ;) (type $FUNCSIG$iddddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (param $4 i32) (result i32) + (func $std/math/test_min (; 121 ;) (type $FUNCSIG$iddddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (param $4 i32) (result i32) (local $5 f64) (local $6 f64) (local $7 i32) @@ -7728,7 +7728,7 @@ local.get $7 end ) - (func $std/math/test_minf (; 121 ;) (type $FUNCSIG$iffffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (param $4 i32) (result i32) + (func $std/math/test_minf (; 122 ;) (type $FUNCSIG$iffffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (param $4 i32) (result i32) (local $5 f32) (local $6 f32) block $~lib/math/NativeMathf.min|inlined.0 (result f32) @@ -7745,7 +7745,7 @@ local.get $4 call $std/math/check ) - (func $~lib/math/NativeMath.mod (; 122 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) + (func $~lib/math/NativeMath.mod (; 123 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) (local $2 i64) (local $3 i64) (local $4 i64) @@ -7998,7 +7998,7 @@ local.get $2 f64.reinterpret_i64 ) - (func $std/math/test_mod (; 123 ;) (type $FUNCSIG$iddddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (param $4 i32) (result i32) + (func $std/math/test_mod (; 124 ;) (type $FUNCSIG$iddddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (param $4 i32) (result i32) (local $5 i32) local.get $0 local.get $1 @@ -8027,7 +8027,7 @@ local.get $5 end ) - (func $~lib/math/NativeMathf.mod (; 124 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) + (func $~lib/math/NativeMathf.mod (; 125 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8278,7 +8278,7 @@ local.get $2 f32.reinterpret_i32 ) - (func $std/math/test_modf (; 125 ;) (type $FUNCSIG$iffffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (param $4 i32) (result i32) + (func $std/math/test_modf (; 126 ;) (type $FUNCSIG$iffffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (param $4 i32) (result i32) local.get $0 local.get $1 call $~lib/math/NativeMathf.mod @@ -8287,7 +8287,7 @@ local.get $4 call $std/math/check ) - (func $~lib/math/NativeMath.pow (; 126 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) + (func $~lib/math/NativeMath.pow (; 127 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) (local $2 i64) (local $3 i32) (local $4 i32) @@ -9375,7 +9375,7 @@ local.get $16 f64.mul ) - (func $std/math/test_pow (; 127 ;) (type $FUNCSIG$iddddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (param $4 i32) (result i32) + (func $std/math/test_pow (; 128 ;) (type $FUNCSIG$iddddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (param $4 i32) (result i32) (local $5 i32) local.get $0 local.get $1 @@ -9404,7 +9404,7 @@ local.get $5 end ) - (func $~lib/math/NativeMathf.pow (; 128 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) + (func $~lib/math/NativeMathf.pow (; 129 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10342,7 +10342,7 @@ local.get $11 f32.mul ) - (func $std/math/test_powf (; 129 ;) (type $FUNCSIG$iffffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (param $4 i32) (result i32) + (func $std/math/test_powf (; 130 ;) (type $FUNCSIG$iffffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (param $4 i32) (result i32) local.get $0 local.get $1 call $~lib/math/NativeMathf.pow @@ -10351,7 +10351,7 @@ local.get $4 call $std/math/check ) - (func $~lib/math/murmurHash3 (; 130 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) + (func $~lib/math/murmurHash3 (; 131 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) local.get $0 local.get $0 i64.const 33 @@ -10380,7 +10380,7 @@ local.set $0 local.get $0 ) - (func $~lib/math/splitMix32 (; 131 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/math/splitMix32 (; 132 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 1831565813 i32.add @@ -10415,7 +10415,7 @@ i32.shr_u i32.xor ) - (func $~lib/math/NativeMath.seedRandom (; 132 ;) (type $FUNCSIG$vj) (param $0 i64) + (func $~lib/math/NativeMath.seedRandom (; 133 ;) (type $FUNCSIG$vj) (param $0 i64) local.get $0 i64.eqz if @@ -10444,7 +10444,7 @@ call $~lib/math/splitMix32 global.set $~lib/math/random_state1_32 ) - (func $~lib/math/NativeMath.random (; 133 ;) (type $FUNCSIG$d) (result f64) + (func $~lib/math/NativeMath.random (; 134 ;) (type $FUNCSIG$d) (result f64) (local $0 i64) (local $1 i64) (local $2 i64) @@ -10501,7 +10501,7 @@ f64.const 1 f64.sub ) - (func $~lib/math/NativeMathf.random (; 134 ;) (type $FUNCSIG$f) (result f32) + (func $~lib/math/NativeMathf.random (; 135 ;) (type $FUNCSIG$f) (result f32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10556,7 +10556,7 @@ f32.const 1 f32.sub ) - (func $std/math/test_round (; 135 ;) (type $FUNCSIG$idddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) + (func $std/math/test_round (; 136 ;) (type $FUNCSIG$idddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) (local $4 f64) block $~lib/math/NativeMath.round|inlined.0 (result f64) local.get $0 @@ -10573,7 +10573,7 @@ local.get $3 call $std/math/check ) - (func $std/math/test_roundf (; 136 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) + (func $std/math/test_roundf (; 137 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) (local $4 f32) block $~lib/math/NativeMathf.round|inlined.0 (result f32) local.get $0 @@ -10590,7 +10590,7 @@ local.get $3 call $std/math/check ) - (func $std/math/test_sign (; 137 ;) (type $FUNCSIG$idddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) + (func $std/math/test_sign (; 138 ;) (type $FUNCSIG$idddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) (local $4 f64) (local $5 i32) block $~lib/math/NativeMath.sign|inlined.0 (result f64) @@ -10636,7 +10636,7 @@ local.get $5 end ) - (func $std/math/test_signf (; 138 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) + (func $std/math/test_signf (; 139 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) (local $4 f32) block $~lib/math/NativeMathf.sign|inlined.0 (result f32) local.get $0 @@ -10663,7 +10663,7 @@ local.get $3 call $std/math/check ) - (func $~lib/math/NativeMath.rem (; 139 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) + (func $~lib/math/NativeMath.rem (; 140 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) (local $2 i64) (local $3 i64) (local $4 i64) @@ -10986,7 +10986,7 @@ local.get $0 end ) - (func $std/math/test_rem (; 140 ;) (type $FUNCSIG$iddddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (param $4 i32) (result i32) + (func $std/math/test_rem (; 141 ;) (type $FUNCSIG$iddddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (param $4 i32) (result i32) local.get $0 local.get $1 call $~lib/math/NativeMath.rem @@ -10995,7 +10995,7 @@ local.get $4 call $std/math/check ) - (func $~lib/math/NativeMathf.rem (; 141 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) + (func $~lib/math/NativeMathf.rem (; 142 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11315,7 +11315,7 @@ local.get $0 end ) - (func $std/math/test_remf (; 142 ;) (type $FUNCSIG$iffffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (param $4 i32) (result i32) + (func $std/math/test_remf (; 143 ;) (type $FUNCSIG$iffffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (param $4 i32) (result i32) local.get $0 local.get $1 call $~lib/math/NativeMathf.rem @@ -11324,7 +11324,7 @@ local.get $4 call $std/math/check ) - (func $~lib/math/NativeMathf.sin (; 143 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.sin (; 144 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 i32) (local $3 f64) @@ -11756,38 +11756,26 @@ i32.and local.set $15 i32.const 88 - i32.load offset=4 local.get $14 i32.const 0 i32.add - i32.const 3 - i32.shl - i32.add - i64.load + call $~lib/array/Array#__unchecked_get local.set $16 i32.const 88 - i32.load offset=4 local.get $14 i32.const 1 i32.add - i32.const 3 - i32.shl - i32.add - i64.load + call $~lib/array/Array#__unchecked_get local.set $17 local.get $15 i32.const 32 i32.gt_s if i32.const 88 - i32.load offset=4 local.get $14 i32.const 2 i32.add - i32.const 3 - i32.shl - i32.add - i64.load + call $~lib/array/Array#__unchecked_get local.set $19 local.get $19 i64.const 96 @@ -11963,7 +11951,7 @@ local.get $26 end ) - (func $std/math/test_sinf (; 144 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) + (func $std/math/test_sinf (; 145 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) local.get $0 call $~lib/math/NativeMathf.sin local.get $1 @@ -11971,7 +11959,7 @@ local.get $3 call $std/math/check ) - (func $~lib/math/NativeMath.sinh (; 145 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $~lib/math/NativeMath.sinh (; 146 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) (local $1 i64) (local $2 f64) (local $3 i32) @@ -12075,7 +12063,7 @@ local.set $4 local.get $4 ) - (func $std/math/test_sinh (; 146 ;) (type $FUNCSIG$idddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) + (func $std/math/test_sinh (; 147 ;) (type $FUNCSIG$idddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) (local $4 i32) local.get $0 call $~lib/math/NativeMath.sinh @@ -12102,7 +12090,7 @@ local.get $4 end ) - (func $~lib/math/NativeMathf.sinh (; 147 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.sinh (; 148 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 f32) (local $3 f32) @@ -12197,7 +12185,7 @@ local.set $3 local.get $3 ) - (func $std/math/test_sinhf (; 148 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) + (func $std/math/test_sinhf (; 149 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) local.get $0 call $~lib/math/NativeMathf.sinh local.get $1 @@ -12205,7 +12193,7 @@ local.get $3 call $std/math/check ) - (func $std/math/test_sqrt (; 149 ;) (type $FUNCSIG$idddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) + (func $std/math/test_sqrt (; 150 ;) (type $FUNCSIG$idddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) (local $4 f64) (local $5 i32) block $~lib/math/NativeMath.sqrt|inlined.0 (result f64) @@ -12237,7 +12225,7 @@ local.get $5 end ) - (func $std/math/test_sqrtf (; 150 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) + (func $std/math/test_sqrtf (; 151 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) (local $4 f32) block $~lib/math/NativeMathf.sqrt|inlined.0 (result f32) local.get $0 @@ -12250,7 +12238,7 @@ local.get $3 call $std/math/check ) - (func $~lib/math/NativeMathf.tan (; 151 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.tan (; 152 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 i32) (local $3 f64) @@ -12748,38 +12736,26 @@ i32.and local.set $17 i32.const 88 - i32.load offset=4 local.get $16 i32.const 0 i32.add - i32.const 3 - i32.shl - i32.add - i64.load + call $~lib/array/Array#__unchecked_get local.set $18 i32.const 88 - i32.load offset=4 local.get $16 i32.const 1 i32.add - i32.const 3 - i32.shl - i32.add - i64.load + call $~lib/array/Array#__unchecked_get local.set $19 local.get $17 i32.const 32 i32.gt_s if i32.const 88 - i32.load offset=4 local.get $16 i32.const 2 i32.add - i32.const 3 - i32.shl - i32.add - i64.load + call $~lib/array/Array#__unchecked_get local.set $21 local.get $21 i64.const 96 @@ -12934,7 +12910,7 @@ f32.demote_f64 end ) - (func $std/math/test_tanf (; 152 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) + (func $std/math/test_tanf (; 153 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) local.get $0 call $~lib/math/NativeMathf.tan local.get $1 @@ -12942,7 +12918,7 @@ local.get $3 call $std/math/check ) - (func $~lib/math/NativeMath.tanh (; 153 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $~lib/math/NativeMath.tanh (; 154 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) (local $1 i64) (local $2 f64) (local $3 i32) @@ -13034,7 +13010,7 @@ local.get $0 f64.copysign ) - (func $std/math/test_tanh (; 154 ;) (type $FUNCSIG$idddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) + (func $std/math/test_tanh (; 155 ;) (type $FUNCSIG$idddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) (local $4 i32) local.get $0 call $~lib/math/NativeMath.tanh @@ -13061,7 +13037,7 @@ local.get $4 end ) - (func $~lib/math/NativeMathf.tanh (; 155 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.tanh (; 156 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 f32) (local $3 f32) @@ -13147,7 +13123,7 @@ local.get $0 f32.copysign ) - (func $std/math/test_tanhf (; 156 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) + (func $std/math/test_tanhf (; 157 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) local.get $0 call $~lib/math/NativeMathf.tanh local.get $1 @@ -13155,7 +13131,7 @@ local.get $3 call $std/math/check ) - (func $std/math/test_trunc (; 157 ;) (type $FUNCSIG$idddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) + (func $std/math/test_trunc (; 158 ;) (type $FUNCSIG$idddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) (local $4 f64) (local $5 i32) block $~lib/math/NativeMath.trunc|inlined.0 (result f64) @@ -13187,7 +13163,7 @@ local.get $5 end ) - (func $std/math/test_truncf (; 158 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) + (func $std/math/test_truncf (; 159 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) (local $4 f32) block $~lib/math/NativeMathf.trunc|inlined.0 (result f32) local.get $0 @@ -13200,7 +13176,7 @@ local.get $3 call $std/math/check ) - (func $~lib/math/NativeMath.imul (; 159 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) + (func $~lib/math/NativeMath.imul (; 160 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) local.get $0 local.get $1 f64.add @@ -13233,7 +13209,7 @@ i32.mul f64.convert_i32_s ) - (func $~lib/math/NativeMath.clz32 (; 160 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $~lib/math/NativeMath.clz32 (; 161 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) local.get $0 call $~lib/builtins/isFinite i32.eqz @@ -13256,7 +13232,7 @@ i32.clz f64.convert_i32_s ) - (func $~lib/math/ipow64 (; 161 ;) (type $FUNCSIG$jji) (param $0 i64) (param $1 i32) (result i64) + (func $~lib/math/ipow64 (; 162 ;) (type $FUNCSIG$jji) (param $0 i64) (param $1 i32) (result i64) (local $2 i64) (local $3 i32) (local $4 i32) @@ -13488,7 +13464,7 @@ end local.get $2 ) - (func $~lib/math/ipow32f (; 162 ;) (type $FUNCSIG$ffi) (param $0 f32) (param $1 i32) (result f32) + (func $~lib/math/ipow32f (; 163 ;) (type $FUNCSIG$ffi) (param $0 f32) (param $1 i32) (result f32) (local $2 i32) (local $3 f32) local.get $1 @@ -13539,7 +13515,7 @@ local.get $3 end ) - (func $~lib/math/ipow64f (; 163 ;) (type $FUNCSIG$ddi) (param $0 f64) (param $1 i32) (result f64) + (func $~lib/math/ipow64f (; 164 ;) (type $FUNCSIG$ddi) (param $0 f64) (param $1 i32) (result f64) (local $2 i32) (local $3 f64) local.get $1 @@ -13590,7 +13566,7 @@ local.get $3 end ) - (func $start:std/math (; 164 ;) (type $FUNCSIG$v) + (func $start:std/math (; 165 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 f64) (local $2 i32) @@ -47837,9 +47813,9 @@ unreachable end ) - (func $start (; 165 ;) (type $FUNCSIG$v) + (func $start (; 166 ;) (type $FUNCSIG$v) call $start:std/math ) - (func $null (; 166 ;) (type $FUNCSIG$v) + (func $null (; 167 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/new.optimized.wat b/tests/compiler/std/new.optimized.wat index 9e8d6bd3..85bcd14f 100644 --- a/tests/compiler/std/new.optimized.wat +++ b/tests/compiler/std/new.optimized.wat @@ -1,6 +1,5 @@ (module (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$v (func)) (type $FUNCSIG$i (func (result i32))) @@ -77,32 +76,38 @@ global.set $~lib/allocator/arena/offset local.get $1 ) - (func $~lib/runtime/assertUnregistered (; 2 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/register (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) local.get $0 i32.const 48 i32.le_u if i32.const 0 i32.const 16 - i32.const 313 - i32.const 2 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 i32.const 8 i32.sub + local.tee $1 i32.load i32.const -1520547049 i32.ne if i32.const 0 i32.const 16 - i32.const 314 - i32.const 2 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end + local.get $1 + i32.const 1 + i32.store + local.get $0 ) (func $std/new/AClass#constructor (; 3 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) @@ -117,14 +122,8 @@ local.get $0 i32.const 8 i32.add + call $~lib/runtime/register local.tee $0 - call $~lib/runtime/assertUnregistered - local.get $0 - i32.const 8 - i32.sub - i32.const 1 - i32.store - local.get $0 i32.const 1 i32.store local.get $0 diff --git a/tests/compiler/std/new.untouched.wat b/tests/compiler/std/new.untouched.wat index ed9fb286..460fb5f8 100644 --- a/tests/compiler/std/new.untouched.wat +++ b/tests/compiler/std/new.untouched.wat @@ -2,7 +2,6 @@ (type $FUNCSIG$iif (func (param i32 f32) (result i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) @@ -11,7 +10,6 @@ (table $0 1 funcref) (elem (i32.const 0) $null) (global $std/new/AClass.aStaticField (mut i32) (i32.const 0)) - (global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0)) (global $~lib/runtime/HEADER_SIZE i32 (i32.const 8)) (global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) @@ -119,7 +117,7 @@ end return ) - (func $~lib/runtime/doAllocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/runtime/ADJUSTOBLOCK @@ -135,7 +133,8 @@ global.get $~lib/runtime/HEADER_SIZE i32.add ) - (func $~lib/runtime/assertUnregistered (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/register (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 global.get $~lib/memory/HEAP_BASE i32.gt_u @@ -143,14 +142,16 @@ if i32.const 0 i32.const 16 - i32.const 313 - i32.const 2 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 global.get $~lib/runtime/HEADER_SIZE i32.sub + local.set $2 + local.get $2 i32.load global.get $~lib/runtime/HEADER_MAGIC i32.eq @@ -158,23 +159,17 @@ if i32.const 0 i32.const 16 - i32.const 314 - i32.const 2 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $~lib/runtime/doRegister (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/runtime/assertUnregistered - local.get $0 - global.get $~lib/runtime/HEADER_SIZE - i32.sub + local.get $2 local.get $1 i32.store local.get $0 ) - (func $std/new/AClass#constructor (; 6 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + (func $std/new/AClass#constructor (; 5 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) (local $2 i32) local.get $0 block (result i32) @@ -186,12 +181,12 @@ i32.const 8 local.set $2 local.get $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $2 local.get $2 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -212,7 +207,7 @@ f32.store offset=4 local.get $0 ) - (func $start:std/new (; 7 ;) (type $FUNCSIG$v) + (func $start:std/new (; 6 ;) (type $FUNCSIG$v) global.get $~lib/memory/HEAP_BASE i32.const 7 i32.add @@ -228,9 +223,9 @@ call $std/new/AClass#constructor global.set $std/new/aClass ) - (func $start (; 8 ;) (type $FUNCSIG$v) + (func $start (; 7 ;) (type $FUNCSIG$v) call $start:std/new ) - (func $null (; 9 ;) (type $FUNCSIG$v) + (func $null (; 8 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/operator-overloading.optimized.wat b/tests/compiler/std/operator-overloading.optimized.wat index dc664bda..5a73a2f5 100644 --- a/tests/compiler/std/operator-overloading.optimized.wat +++ b/tests/compiler/std/operator-overloading.optimized.wat @@ -1,7 +1,6 @@ (module (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$ddd (func (param f64 f64) (result f64))) (type $FUNCSIG$ddi (func (param f64 i32) (result f64))) @@ -146,7 +145,7 @@ global.set $~lib/allocator/arena/offset local.get $1 ) - (func $~lib/runtime/doAllocate (; 2 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/runtime/allocate (; 2 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 16 call $~lib/memory/memory.allocate @@ -160,48 +159,44 @@ i32.const 8 i32.add ) - (func $~lib/runtime/assertUnregistered (; 3 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/register (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 i32.const 112 i32.le_u if i32.const 0 i32.const 16 - i32.const 313 - i32.const 2 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 i32.const 8 i32.sub + local.tee $2 i32.load i32.const -1520547049 i32.ne if i32.const 0 i32.const 16 - i32.const 314 - i32.const 2 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $~lib/runtime/doRegister (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/runtime/assertUnregistered - local.get $0 - i32.const 8 - i32.sub + local.get $2 local.get $1 i32.store local.get $0 ) - (func $std/operator-overloading/Tester#constructor (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester#constructor (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $2 local.get $0 i32.store @@ -210,7 +205,7 @@ i32.store offset=4 local.get $2 ) - (func $~lib/math/NativeMath.scalbn (; 6 ;) (type $FUNCSIG$ddi) (param $0 f64) (param $1 i32) (result f64) + (func $~lib/math/NativeMath.scalbn (; 5 ;) (type $FUNCSIG$ddi) (param $0 f64) (param $1 i32) (result f64) local.get $1 i32.const 1023 i32.gt_s @@ -287,7 +282,7 @@ f64.reinterpret_i64 f64.mul ) - (func $~lib/math/NativeMath.pow (; 7 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) + (func $~lib/math/NativeMath.pow (; 6 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) (local $2 f64) (local $3 f64) (local $4 i32) @@ -1226,7 +1221,7 @@ f64.const 1e-300 f64.mul ) - (func $std/operator-overloading/Tester.pow (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.pow (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load f64.convert_i32_s @@ -1245,11 +1240,11 @@ i32.trunc_f64_s call $std/operator-overloading/Tester#constructor ) - (func $std/operator-overloading/TesterInlineStatic#constructor (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/TesterInlineStatic#constructor (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 3 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $2 local.get $0 i32.store @@ -1258,11 +1253,11 @@ i32.store offset=4 local.get $2 ) - (func $std/operator-overloading/TesterInlineInstance#constructor (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/TesterInlineInstance#constructor (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 4 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $2 local.get $0 i32.store @@ -1271,7 +1266,7 @@ i32.store offset=4 local.get $2 ) - (func $start:std/operator-overloading (; 11 ;) (type $FUNCSIG$v) + (func $start:std/operator-overloading (; 10 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -2526,10 +2521,10 @@ unreachable end ) - (func $start (; 12 ;) (type $FUNCSIG$v) + (func $start (; 11 ;) (type $FUNCSIG$v) call $start:std/operator-overloading ) - (func $null (; 13 ;) (type $FUNCSIG$v) + (func $null (; 12 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/operator-overloading.untouched.wat b/tests/compiler/std/operator-overloading.untouched.wat index 842394a7..e3c97224 100644 --- a/tests/compiler/std/operator-overloading.untouched.wat +++ b/tests/compiler/std/operator-overloading.untouched.wat @@ -2,7 +2,6 @@ (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$ddd (func (param f64 f64) (result f64))) (type $FUNCSIG$ddi (func (param f64 i32) (result f64))) @@ -13,7 +12,6 @@ (data (i32.const 48) "\02\00\00\006\00\00\00s\00t\00d\00/\00o\00p\00e\00r\00a\00t\00o\00r\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) - (global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0)) (global $~lib/runtime/HEADER_SIZE i32 (i32.const 8)) (global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) @@ -187,7 +185,7 @@ end return ) - (func $~lib/runtime/doAllocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/runtime/ADJUSTOBLOCK @@ -203,7 +201,8 @@ global.get $~lib/runtime/HEADER_SIZE i32.add ) - (func $~lib/runtime/assertUnregistered (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/register (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 global.get $~lib/memory/HEAP_BASE i32.gt_u @@ -211,14 +210,16 @@ if i32.const 0 i32.const 16 - i32.const 313 - i32.const 2 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 global.get $~lib/runtime/HEADER_SIZE i32.sub + local.set $2 + local.get $2 i32.load global.get $~lib/runtime/HEADER_MAGIC i32.eq @@ -226,23 +227,17 @@ if i32.const 0 i32.const 16 - i32.const 314 - i32.const 2 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $~lib/runtime/doRegister (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/runtime/assertUnregistered - local.get $0 - global.get $~lib/runtime/HEADER_SIZE - i32.sub + local.get $2 local.get $1 i32.store local.get $0 ) - (func $std/operator-overloading/Tester#constructor (; 6 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/operator-overloading/Tester#constructor (; 5 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.eqz @@ -252,12 +247,12 @@ i32.const 8 local.set $3 local.get $3 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $3 local.get $3 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -269,7 +264,7 @@ i32.store offset=4 local.get $0 ) - (func $std/operator-overloading/Tester.add (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.add (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) i32.const 0 local.get $0 i32.load @@ -283,7 +278,7 @@ i32.add call $std/operator-overloading/Tester#constructor ) - (func $std/operator-overloading/Tester.sub (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.sub (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) i32.const 0 local.get $0 i32.load @@ -297,7 +292,7 @@ i32.sub call $std/operator-overloading/Tester#constructor ) - (func $std/operator-overloading/Tester.mul (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.mul (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) i32.const 0 local.get $0 i32.load @@ -311,7 +306,7 @@ i32.mul call $std/operator-overloading/Tester#constructor ) - (func $std/operator-overloading/Tester.div (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.div (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) i32.const 0 local.get $0 i32.load @@ -325,7 +320,7 @@ i32.div_s call $std/operator-overloading/Tester#constructor ) - (func $std/operator-overloading/Tester.mod (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.mod (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) i32.const 0 local.get $0 i32.load @@ -339,7 +334,7 @@ i32.rem_s call $std/operator-overloading/Tester#constructor ) - (func $~lib/math/NativeMath.scalbn (; 12 ;) (type $FUNCSIG$ddi) (param $0 f64) (param $1 i32) (result f64) + (func $~lib/math/NativeMath.scalbn (; 11 ;) (type $FUNCSIG$ddi) (param $0 f64) (param $1 i32) (result f64) (local $2 f64) (local $3 i32) (local $4 i32) @@ -430,7 +425,7 @@ f64.reinterpret_i64 f64.mul ) - (func $~lib/math/NativeMath.pow (; 13 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) + (func $~lib/math/NativeMath.pow (; 12 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) (local $2 i64) (local $3 i32) (local $4 i32) @@ -1518,7 +1513,7 @@ local.get $16 f64.mul ) - (func $std/operator-overloading/Tester.pow (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.pow (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) i32.const 0 local.get $0 i32.load @@ -1538,7 +1533,7 @@ i32.trunc_f64_s call $std/operator-overloading/Tester#constructor ) - (func $std/operator-overloading/Tester.and (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.and (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) i32.const 0 local.get $0 i32.load @@ -1552,7 +1547,7 @@ i32.and call $std/operator-overloading/Tester#constructor ) - (func $std/operator-overloading/Tester.or (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.or (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) i32.const 0 local.get $0 i32.load @@ -1566,7 +1561,7 @@ i32.or call $std/operator-overloading/Tester#constructor ) - (func $std/operator-overloading/Tester.xor (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.xor (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) i32.const 0 local.get $0 i32.load @@ -1580,7 +1575,7 @@ i32.xor call $std/operator-overloading/Tester#constructor ) - (func $std/operator-overloading/Tester.equals (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.equals (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 i32.load @@ -1598,7 +1593,7 @@ local.get $2 end ) - (func $std/operator-overloading/Tester.notEquals (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.notEquals (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 i32.load @@ -1616,7 +1611,7 @@ local.get $2 end ) - (func $std/operator-overloading/Tester.greater (; 20 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.greater (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 i32.load @@ -1634,7 +1629,7 @@ local.get $2 end ) - (func $std/operator-overloading/Tester.greaterEquals (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.greaterEquals (; 20 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 i32.load @@ -1652,7 +1647,7 @@ local.get $2 end ) - (func $std/operator-overloading/Tester.less (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.less (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 i32.load @@ -1670,7 +1665,7 @@ local.get $2 end ) - (func $std/operator-overloading/Tester.lessEquals (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.lessEquals (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 i32.load @@ -1688,7 +1683,7 @@ local.get $2 end ) - (func $std/operator-overloading/Tester.shr (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.shr (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) i32.const 0 local.get $0 i32.load @@ -1700,7 +1695,7 @@ i32.shr_s call $std/operator-overloading/Tester#constructor ) - (func $std/operator-overloading/Tester.shu (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.shu (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) i32.const 0 local.get $0 i32.load @@ -1712,7 +1707,7 @@ i32.shr_u call $std/operator-overloading/Tester#constructor ) - (func $std/operator-overloading/Tester.shl (; 26 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.shl (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) i32.const 0 local.get $0 i32.load @@ -1724,7 +1719,7 @@ i32.shl call $std/operator-overloading/Tester#constructor ) - (func $std/operator-overloading/Tester.pos (; 27 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/operator-overloading/Tester.pos (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 0 local.get $0 i32.load @@ -1732,7 +1727,7 @@ i32.load offset=4 call $std/operator-overloading/Tester#constructor ) - (func $std/operator-overloading/Tester.neg (; 28 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/operator-overloading/Tester.neg (; 27 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 0 i32.const 0 local.get $0 @@ -1744,7 +1739,7 @@ i32.sub call $std/operator-overloading/Tester#constructor ) - (func $std/operator-overloading/Tester.not (; 29 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/operator-overloading/Tester.not (; 28 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 0 local.get $0 i32.load @@ -1756,7 +1751,7 @@ i32.xor call $std/operator-overloading/Tester#constructor ) - (func $std/operator-overloading/Tester.excl (; 30 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/operator-overloading/Tester.excl (; 29 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.load @@ -1770,7 +1765,7 @@ local.get $1 end ) - (func $std/operator-overloading/Tester#inc (; 31 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/operator-overloading/Tester#inc (; 30 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 local.get $0 i32.load @@ -1785,7 +1780,7 @@ i32.store offset=4 local.get $0 ) - (func $std/operator-overloading/Tester#dec (; 32 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/operator-overloading/Tester#dec (; 31 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 local.get $0 i32.load @@ -1800,7 +1795,7 @@ i32.store offset=4 local.get $0 ) - (func $std/operator-overloading/Tester#postInc (; 33 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/operator-overloading/Tester#postInc (; 32 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 0 local.get $0 i32.load @@ -1812,7 +1807,7 @@ i32.add call $std/operator-overloading/Tester#constructor ) - (func $std/operator-overloading/Tester#postDec (; 34 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/operator-overloading/Tester#postDec (; 33 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 0 local.get $0 i32.load @@ -1824,7 +1819,7 @@ i32.sub call $std/operator-overloading/Tester#constructor ) - (func $std/operator-overloading/TesterInlineStatic#constructor (; 35 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/operator-overloading/TesterInlineStatic#constructor (; 34 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.eqz @@ -1834,12 +1829,12 @@ i32.const 8 local.set $3 local.get $3 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $3 local.get $3 i32.const 3 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -1851,7 +1846,7 @@ i32.store offset=4 local.get $0 ) - (func $std/operator-overloading/TesterInlineInstance#constructor (; 36 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/operator-overloading/TesterInlineInstance#constructor (; 35 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.eqz @@ -1861,12 +1856,12 @@ i32.const 8 local.set $3 local.get $3 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $3 local.get $3 i32.const 4 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -1878,7 +1873,7 @@ i32.store offset=4 local.get $0 ) - (func $start:std/operator-overloading (; 37 ;) (type $FUNCSIG$v) + (func $start:std/operator-overloading (; 36 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) global.get $~lib/memory/HEAP_BASE @@ -2939,9 +2934,9 @@ unreachable end ) - (func $start (; 38 ;) (type $FUNCSIG$v) + (func $start (; 37 ;) (type $FUNCSIG$v) call $start:std/operator-overloading ) - (func $null (; 39 ;) (type $FUNCSIG$v) + (func $null (; 38 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/pointer.optimized.wat b/tests/compiler/std/pointer.optimized.wat index dbe7d21b..a78cd814 100644 --- a/tests/compiler/std/pointer.optimized.wat +++ b/tests/compiler/std/pointer.optimized.wat @@ -1210,12 +1210,12 @@ global.get $std/pointer/one i32.const 8 i32.add - global.set $std/pointer/one - global.get $std/pointer/one local.tee $0 + global.set $std/pointer/one + local.get $0 global.set $std/pointer/nextOne global.get $std/pointer/nextOne - local.get $0 + global.get $std/pointer/one i32.ne if i32.const 0 diff --git a/tests/compiler/std/pointer.untouched.wat b/tests/compiler/std/pointer.untouched.wat index dfb97705..293507f1 100644 --- a/tests/compiler/std/pointer.untouched.wat +++ b/tests/compiler/std/pointer.untouched.wat @@ -1919,8 +1919,9 @@ i32.const 8 i32.add end + local.tee $0 global.set $std/pointer/one - global.get $std/pointer/one + local.get $0 end global.set $std/pointer/nextOne global.get $std/pointer/nextOne diff --git a/tests/compiler/std/runtime.optimized.wat b/tests/compiler/std/runtime.optimized.wat index 240f256f..0c5eca59 100644 --- a/tests/compiler/std/runtime.optimized.wat +++ b/tests/compiler/std/runtime.optimized.wat @@ -1174,7 +1174,7 @@ local.get $2 call $~lib/allocator/tlsf/Root#use ) - (func $~lib/runtime/doAllocate (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/allocate (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) i32.const 1 i32.const 32 @@ -2541,7 +2541,7 @@ end end ) - (func $~lib/runtime/doReallocate (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/runtime/reallocate (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2616,7 +2616,7 @@ if i32.const 0 i32.const 232 - i32.const 133 + i32.const 125 i32.const 8 call $~lib/env/abort unreachable @@ -2646,74 +2646,111 @@ i32.store offset=4 local.get $0 ) - (func $~lib/runtime/assertUnregistered (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/discard (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 264 i32.le_u if i32.const 0 i32.const 232 - i32.const 313 - i32.const 2 + i32.const 185 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 i32.const 16 i32.sub + local.tee $0 i32.load i32.const -1520547049 i32.ne if i32.const 0 i32.const 232 - i32.const 314 - i32.const 2 + i32.const 187 + i32.const 4 call $~lib/env/abort unreachable end + local.get $0 + call $~lib/memory/memory.free ) - (func $start:std/runtime (; 24 ;) (type $FUNCSIG$v) + (func $~lib/runtime/register (; 24 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.const 264 + i32.le_u + if + i32.const 0 + i32.const 232 + i32.const 161 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.const 16 + i32.sub + local.tee $1 + i32.load + i32.const -1520547049 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 163 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.const 2 + i32.store + local.get $0 + global.set $std/runtime/register_ref + ) + (func $start:std/runtime (; 25 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) loop $repeat|0 - local.get $1 + local.get $0 i32.const 9000 i32.lt_s if i32.const 1 i32.const 32 - local.get $1 + local.get $0 i32.const 15 i32.add i32.clz i32.sub i32.shl - local.tee $2 + local.tee $1 i32.const 0 i32.ne - local.tee $0 - if - local.get $2 - i32.const 1 - i32.sub - local.get $2 - i32.and - i32.eqz - local.set $0 - end - local.get $0 - if + local.tee $2 + if (result i32) local.get $1 i32.const 1 + i32.sub + local.get $1 + i32.and + i32.eqz + else + local.get $2 + end + if + local.get $0 + i32.const 1 i32.add - local.set $1 + local.set $0 br $repeat|0 else i32.const 0 i32.const 88 - i32.const 31 + i32.const 34 i32.const 2 call $~lib/env/abort unreachable @@ -2731,7 +2768,6 @@ i32.const 1 i32.const 32 global.get $std/runtime/barrier2 - local.tee $0 i32.const 16 i32.add i32.clz @@ -2739,7 +2775,7 @@ i32.shl i32.const 1 i32.const 32 - local.get $0 + global.get $std/runtime/barrier2 i32.const 15 i32.add i32.clz @@ -2762,7 +2798,6 @@ i32.const 1 i32.const 32 global.get $std/runtime/barrier3 - local.tee $0 i32.const 16 i32.add i32.clz @@ -2770,7 +2805,7 @@ i32.shl i32.const 1 i32.const 32 - local.get $0 + global.get $std/runtime/barrier3 i32.const 15 i32.add i32.clz @@ -2813,7 +2848,7 @@ f64.const 0 call $~lib/env/trace i32.const 1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate global.set $std/runtime/ref1 global.get $std/runtime/ref1 i32.const 16 @@ -2826,7 +2861,7 @@ if i32.const 0 i32.const 88 - i32.const 46 + i32.const 49 i32.const 0 call $~lib/env/abort unreachable @@ -2838,21 +2873,21 @@ if i32.const 0 i32.const 88 - i32.const 47 + i32.const 50 i32.const 0 call $~lib/env/abort unreachable end global.get $std/runtime/ref1 - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 global.get $std/runtime/barrier1 - call $~lib/runtime/doReallocate + call $~lib/runtime/reallocate i32.ne if i32.const 0 i32.const 88 - i32.const 48 + i32.const 51 i32.const 0 call $~lib/env/abort unreachable @@ -2864,14 +2899,14 @@ if i32.const 0 i32.const 88 - i32.const 49 + i32.const 52 i32.const 0 call $~lib/env/abort unreachable end global.get $std/runtime/ref1 global.get $std/runtime/barrier2 - call $~lib/runtime/doReallocate + call $~lib/runtime/reallocate global.set $std/runtime/ref2 global.get $std/runtime/ref1 global.get $std/runtime/ref2 @@ -2879,7 +2914,7 @@ if i32.const 0 i32.const 88 - i32.const 51 + i32.const 54 i32.const 0 call $~lib/env/abort unreachable @@ -2895,20 +2930,15 @@ if i32.const 0 i32.const 88 - i32.const 53 + i32.const 56 i32.const 0 call $~lib/env/abort unreachable end global.get $std/runtime/ref2 - local.tee $1 - call $~lib/runtime/assertUnregistered - local.get $1 - i32.const 16 - i32.sub - call $~lib/memory/memory.free + call $~lib/runtime/discard global.get $std/runtime/barrier2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate global.set $std/runtime/ref3 global.get $std/runtime/ref1 global.get $std/runtime/ref3 @@ -2916,31 +2946,23 @@ if i32.const 0 i32.const 88 - i32.const 56 + i32.const 59 i32.const 0 call $~lib/env/abort unreachable end global.get $std/runtime/barrier1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate global.set $std/runtime/ref4 global.get $std/runtime/ref4 - local.tee $0 - call $~lib/runtime/assertUnregistered - local.get $0 - i32.const 16 - i32.sub - i32.const 2 - i32.store - local.get $0 - global.set $std/runtime/register_ref + call $~lib/runtime/register global.get $std/runtime/register_ref global.get $std/runtime/ref4 i32.ne if i32.const 0 i32.const 88 - i32.const 60 + i32.const 63 i32.const 0 call $~lib/env/abort unreachable @@ -2956,7 +2978,7 @@ if i32.const 0 i32.const 88 - i32.const 62 + i32.const 65 i32.const 0 call $~lib/env/abort unreachable @@ -2968,13 +2990,13 @@ if i32.const 0 i32.const 88 - i32.const 63 + i32.const 66 i32.const 0 call $~lib/env/abort unreachable end i32.const 10 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate global.set $std/runtime/ref5 global.get $std/runtime/ref5 i32.const 16 @@ -2985,7 +3007,7 @@ if i32.const 0 i32.const 88 - i32.const 66 + i32.const 69 i32.const 0 call $~lib/env/abort unreachable @@ -3001,16 +3023,16 @@ if i32.const 0 i32.const 88 - i32.const 67 + i32.const 70 i32.const 0 call $~lib/env/abort unreachable end ) - (func $start (; 25 ;) (type $FUNCSIG$v) + (func $start (; 26 ;) (type $FUNCSIG$v) call $start:std/runtime ) - (func $null (; 26 ;) (type $FUNCSIG$v) + (func $null (; 27 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/runtime.ts b/tests/compiler/std/runtime.ts index 0782ff84..50a0bdc9 100644 --- a/tests/compiler/std/runtime.ts +++ b/tests/compiler/std/runtime.ts @@ -3,19 +3,22 @@ import { CLASSID, ADJUSTOBLOCK, ALLOCATE, REALLOCATE, REGISTER, DISCARD, HEADER, var register_ref: usize = 0; -@global function __gc_register(ref: usize): void { +@global function __ref_register(ref: usize): void { register_ref = ref; } var link_ref: usize = 0; var link_parentRef: usize = 0; -@global function __gc_link(ref: usize, parentRef: usize): void { +@global function __ref_link(ref: usize, parentRef: usize): void { link_ref = ref; link_parentRef = parentRef; } -@global function __gc_collect(): void { +@global function __ref_unlink(ref: usize, parentRef: usize): void { +} + +@global function __ref_collect(): void { } class A {} diff --git a/tests/compiler/std/runtime.untouched.wat b/tests/compiler/std/runtime.untouched.wat index 41a292af..b1e3fdc5 100644 --- a/tests/compiler/std/runtime.untouched.wat +++ b/tests/compiler/std/runtime.untouched.wat @@ -36,7 +36,6 @@ (global $~lib/allocator/tlsf/Root.HL_END i32 (i32.const 2912)) (global $~lib/allocator/tlsf/Root.SIZE i32 (i32.const 2916)) (global $~lib/allocator/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 1)) (global $~lib/runtime/HEADER_SIZE i32 (i32.const 16)) (global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) (global $std/runtime/register_ref (mut i32) (i32.const 0)) @@ -1472,7 +1471,7 @@ end return ) - (func $~lib/runtime/doAllocate (; 23 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/allocate (; 23 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/runtime/ADJUSTOBLOCK @@ -3229,11 +3228,11 @@ end end ) - (func $std/runtime/__gc_register (; 28 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $std/runtime/__ref_register (; 28 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 global.set $std/runtime/register_ref ) - (func $~lib/runtime/doReallocate (; 29 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/runtime/reallocate (; 29 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3304,7 +3303,7 @@ if i32.const 0 i32.const 232 - i32.const 133 + i32.const 125 i32.const 8 call $~lib/env/abort unreachable @@ -3313,7 +3312,7 @@ call $~lib/memory/memory.free else local.get $0 - call $std/runtime/__gc_register + call $std/runtime/__ref_register end local.get $5 local.set $2 @@ -3337,7 +3336,8 @@ i32.store offset=4 local.get $0 ) - (func $~lib/runtime/assertUnregistered (; 30 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/discard (; 30 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) local.get $0 global.get $~lib/memory/HEAP_BASE i32.gt_u @@ -3345,14 +3345,16 @@ if i32.const 0 i32.const 232 - i32.const 313 - i32.const 2 + i32.const 185 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 global.get $~lib/runtime/HEADER_SIZE i32.sub + local.set $1 + local.get $1 i32.load global.get $~lib/runtime/HEADER_MAGIC i32.eq @@ -3360,39 +3362,59 @@ if i32.const 0 i32.const 232 - i32.const 314 - i32.const 2 + i32.const 187 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $~lib/runtime/doDiscard (; 31 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - call $~lib/runtime/assertUnregistered - local.get $0 - global.get $~lib/runtime/HEADER_SIZE - i32.sub + local.get $1 call $~lib/memory/memory.free ) - (func $~lib/runtime/doRegister (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/runtime/register (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 - call $~lib/runtime/assertUnregistered + global.get $~lib/memory/HEAP_BASE + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 161 + i32.const 4 + call $~lib/env/abort + unreachable + end local.get $0 global.get $~lib/runtime/HEADER_SIZE i32.sub + local.set $2 + local.get $2 + i32.load + global.get $~lib/runtime/HEADER_MAGIC + i32.eq + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 163 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 local.get $1 i32.store local.get $0 - call $std/runtime/__gc_register + call $std/runtime/__ref_register local.get $0 ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 33 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 32 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 global.get $~lib/runtime/HEADER_SIZE i32.sub i32.load offset=4 ) - (func $~lib/string/String#get:length (; 34 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 33 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 global.get $~lib/runtime/HEADER_SIZE i32.sub @@ -3400,7 +3422,7 @@ i32.const 1 i32.shr_u ) - (func $start:std/runtime (; 35 ;) (type $FUNCSIG$v) + (func $start:std/runtime (; 34 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) call $start:~lib/allocator/tlsf @@ -3411,7 +3433,7 @@ if i32.const 0 i32.const 88 - i32.const 23 + i32.const 26 i32.const 0 call $~lib/env/abort unreachable @@ -3424,7 +3446,7 @@ if i32.const 0 i32.const 88 - i32.const 29 + i32.const 32 i32.const 0 call $~lib/env/abort unreachable @@ -3445,7 +3467,7 @@ if i32.const 0 i32.const 88 - i32.const 31 + i32.const 34 i32.const 2 call $~lib/env/abort unreachable @@ -3537,7 +3559,7 @@ i32.const 1 local.set $0 local.get $0 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end global.set $std/runtime/ref1 global.get $std/runtime/ref1 @@ -3552,7 +3574,7 @@ if i32.const 0 i32.const 88 - i32.const 46 + i32.const 49 i32.const 0 call $~lib/env/abort unreachable @@ -3565,7 +3587,7 @@ if i32.const 0 i32.const 88 - i32.const 47 + i32.const 50 i32.const 0 call $~lib/env/abort unreachable @@ -3578,14 +3600,14 @@ local.set $0 local.get $1 local.get $0 - call $~lib/runtime/doReallocate + call $~lib/runtime/reallocate end i32.eq i32.eqz if i32.const 0 i32.const 88 - i32.const 48 + i32.const 51 i32.const 0 call $~lib/env/abort unreachable @@ -3598,7 +3620,7 @@ if i32.const 0 i32.const 88 - i32.const 49 + i32.const 52 i32.const 0 call $~lib/env/abort unreachable @@ -3610,7 +3632,7 @@ local.set $0 local.get $1 local.get $0 - call $~lib/runtime/doReallocate + call $~lib/runtime/reallocate end global.set $std/runtime/ref2 global.get $std/runtime/ref1 @@ -3620,7 +3642,7 @@ if i32.const 0 i32.const 88 - i32.const 51 + i32.const 54 i32.const 0 call $~lib/env/abort unreachable @@ -3637,7 +3659,7 @@ if i32.const 0 i32.const 88 - i32.const 53 + i32.const 56 i32.const 0 call $~lib/env/abort unreachable @@ -3646,13 +3668,13 @@ global.get $std/runtime/ref2 local.set $0 local.get $0 - call $~lib/runtime/doDiscard + call $~lib/runtime/discard end block $~lib/runtime/ALLOCATE|inlined.1 (result i32) global.get $std/runtime/barrier2 local.set $0 local.get $0 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end global.set $std/runtime/ref3 global.get $std/runtime/ref1 @@ -3662,7 +3684,7 @@ if i32.const 0 i32.const 88 - i32.const 56 + i32.const 59 i32.const 0 call $~lib/env/abort unreachable @@ -3671,7 +3693,7 @@ global.get $std/runtime/barrier1 local.set $0 local.get $0 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end global.set $std/runtime/ref4 block $~lib/runtime/REGISTER|inlined.0 (result i32) @@ -3679,7 +3701,7 @@ local.set $0 local.get $0 i32.const 2 - call $~lib/runtime/doRegister + call $~lib/runtime/register end drop global.get $std/runtime/register_ref @@ -3689,7 +3711,7 @@ if i32.const 0 i32.const 88 - i32.const 60 + i32.const 63 i32.const 0 call $~lib/env/abort unreachable @@ -3706,7 +3728,7 @@ if i32.const 0 i32.const 88 - i32.const 62 + i32.const 65 i32.const 0 call $~lib/env/abort unreachable @@ -3719,7 +3741,7 @@ if i32.const 0 i32.const 88 - i32.const 63 + i32.const 66 i32.const 0 call $~lib/env/abort unreachable @@ -3728,7 +3750,7 @@ i32.const 10 local.set $0 local.get $0 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end global.set $std/runtime/ref5 global.get $std/runtime/ref5 @@ -3739,7 +3761,7 @@ if i32.const 0 i32.const 88 - i32.const 66 + i32.const 69 i32.const 0 call $~lib/env/abort unreachable @@ -3752,15 +3774,15 @@ if i32.const 0 i32.const 88 - i32.const 67 + i32.const 70 i32.const 0 call $~lib/env/abort unreachable end ) - (func $start (; 36 ;) (type $FUNCSIG$v) + (func $start (; 35 ;) (type $FUNCSIG$v) call $start:std/runtime ) - (func $null (; 37 ;) (type $FUNCSIG$v) + (func $null (; 36 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/set.optimized.wat b/tests/compiler/std/set.optimized.wat index c0ecab42..5bf37495 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.optimized.wat @@ -2,10 +2,10 @@ (type $FUNCSIG$v (func)) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$vii (func (param i32 i32))) + (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$iij (func (param i32 i64) (result i32))) (type $FUNCSIG$ij (func (param i64) (result i32))) (type $FUNCSIG$iiji (func (param i32 i64 i32) (result i32))) @@ -19,15 +19,20 @@ (type $FUNCSIG$i (func (result i32))) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") - (data (i32.const 48) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 96) "\02\00\00\00\14\00\00\00s\00t\00d\00/\00s\00e\00t\00.\00t\00s") + (data (i32.const 8) "\02\00\00\00\1e") + (data (i32.const 24) "~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") + (data (i32.const 56) "\02\00\00\00&") + (data (i32.const 72) "~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data (i32.const 112) "\02\00\00\00\14") + (data (i32.const 128) "s\00t\00d\00/\00s\00e\00t\00.\00t\00s") (table $0 1 funcref) (elem (i32.const 0) $null) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) + (global $~lib/capabilities i32 (i32.const 2)) (export "memory" (memory $0)) (export "table" (table $0)) + (export ".capabilities" (global $~lib/capabilities)) (start $start) (func $~lib/memory/memory.allocate (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) @@ -91,12 +96,12 @@ global.set $~lib/allocator/arena/offset local.get $1 ) - (func $~lib/runtime/doAllocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) i32.const 1 i32.const 32 local.get $0 - i32.const 7 + i32.const 15 i32.add i32.clz i32.sub @@ -109,47 +114,49 @@ local.get $0 i32.store offset=4 local.get $1 - i32.const 8 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $1 + i32.const 16 i32.add ) - (func $~lib/runtime/assertUnregistered (; 3 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/register (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 - i32.const 124 + i32.const 148 i32.le_u if i32.const 0 - i32.const 16 - i32.const 313 - i32.const 2 + i32.const 24 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 - i32.const 8 + i32.const 16 i32.sub + local.tee $2 i32.load i32.const -1520547049 i32.ne if i32.const 0 - i32.const 16 - i32.const 314 - i32.const 2 + i32.const 24 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $~lib/runtime/doRegister (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/runtime/assertUnregistered - local.get $0 - i32.const 8 - i32.sub + local.get $2 local.get $1 i32.store local.get $0 ) - (func $~lib/memory/memory.fill (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/memory/memory.fill (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block $~lib/util/memory/memset|inlined.0 local.get $1 @@ -360,39 +367,51 @@ end end ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#constructor (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 - i32.const 1073741816 + i32.const 1073741808 i32.gt_u if i32.const 0 - i32.const 56 + i32.const 72 i32.const 25 i32.const 43 call $~lib/env/abort unreachable end local.get $0 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.tee $1 local.get $0 call $~lib/memory/memory.fill local.get $1 i32.const 3 - call $~lib/runtime/doRegister + call $~lib/runtime/register ) - (func $~lib/set/Set#clear (; 7 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 + (func $~lib/set/Set#clear (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + local.get $0 + i32.load + drop + local.get $0 + local.get $1 i32.store local.get $0 i32.const 3 i32.store offset=4 - local.get $0 i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + local.get $0 + i32.load offset=8 + i32.ne + drop + local.get $0 + local.get $1 i32.store offset=8 local.get $0 i32.const 4 @@ -404,12 +423,12 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 8 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/set/Set#constructor (; 7 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $0 i32.const 0 i32.store @@ -432,7 +451,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/set/Set#find (; 9 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 8 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -477,7 +496,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -493,7 +512,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -504,12 +523,12 @@ local.get $1 i32.const 1 i32.add - local.tee $2 + local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $4 - local.get $2 + local.get $3 f64.convert_i32_s f64.const 2.6666666666666665 f64.mul @@ -521,7 +540,7 @@ local.set $5 local.get $0 i32.load offset=8 - local.tee $2 + local.tee $3 local.get $0 i32.load offset=16 i32.const 3 @@ -529,24 +548,24 @@ i32.add local.set $7 local.get $5 - local.set $3 + local.set $2 loop $continue|0 - local.get $2 + local.get $3 local.get $7 i32.ne if - local.get $2 + local.get $3 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $3 local.get $2 + local.get $3 i32.load8_s i32.store8 - local.get $3 local.get $2 + local.get $3 i32.load8_s i32.const -2128831035 i32.xor @@ -562,38 +581,48 @@ i32.load i32.store offset=4 local.get $8 - local.get $3 + local.get $2 i32.store - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 end - local.get $2 + local.get $3 i32.const 8 i32.add - local.set $2 + local.set $3 br $continue|0 end end local.get $0 + local.tee $2 + i32.load + drop + local.get $2 local.get $4 i32.store - local.get $0 + local.get $2 local.get $1 i32.store offset=4 - local.get $0 local.get $5 - i32.store offset=8 + local.tee $0 + local.get $2 + i32.load offset=8 + i32.ne + drop + local.get $2 local.get $0 + i32.store offset=8 + local.get $2 local.get $6 i32.store offset=12 - local.get $0 - local.get $0 + local.get $2 + local.get $2 i32.load offset=20 i32.store offset=16 ) - (func $~lib/set/Set#add (; 12 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -685,7 +714,7 @@ i32.store end ) - (func $~lib/set/Set#delete (; 13 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#delete (; 12 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -752,7 +781,7 @@ call $~lib/set/Set#rehash end ) - (func $std/set/test (; 14 ;) (type $FUNCSIG$v) + (func $std/set/testNumeric (; 13 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) call $~lib/set/Set#constructor @@ -767,8 +796,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -787,8 +816,8 @@ br $repeat|0 else i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -802,8 +831,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 12 + i32.const 128 + i32.const 13 i32.const 2 call $~lib/env/abort unreachable @@ -821,8 +850,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 16 + i32.const 128 + i32.const 17 i32.const 4 call $~lib/env/abort unreachable @@ -841,8 +870,8 @@ br $repeat|1 else i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -856,8 +885,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 2 call $~lib/env/abort unreachable @@ -875,8 +904,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 24 + i32.const 128 + i32.const 25 i32.const 4 call $~lib/env/abort unreachable @@ -889,8 +918,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 26 + i32.const 128 + i32.const 27 i32.const 4 call $~lib/env/abort unreachable @@ -910,8 +939,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 2 call $~lib/env/abort unreachable @@ -928,8 +957,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 4 call $~lib/env/abort unreachable @@ -943,8 +972,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 34 + i32.const 128 + i32.const 35 i32.const 4 call $~lib/env/abort unreachable @@ -957,8 +986,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -978,8 +1007,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 2 call $~lib/env/abort unreachable @@ -990,19 +1019,19 @@ i32.load offset=20 if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/set/Set#constructor (; 15 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/set/Set#constructor (; 14 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 4 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $0 i32.const 0 i32.store @@ -1025,7 +1054,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/set/Set#has (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -1039,7 +1068,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 17 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 16 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1050,12 +1079,12 @@ local.get $1 i32.const 1 i32.add - local.tee $2 + local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $4 - local.get $2 + local.get $3 f64.convert_i32_s f64.const 2.6666666666666665 f64.mul @@ -1067,7 +1096,7 @@ local.set $5 local.get $0 i32.load offset=8 - local.tee $2 + local.tee $3 local.get $0 i32.load offset=16 i32.const 3 @@ -1075,24 +1104,24 @@ i32.add local.set $7 local.get $5 - local.set $3 + local.set $2 loop $continue|0 - local.get $2 + local.get $3 local.get $7 i32.ne if - local.get $2 + local.get $3 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $3 local.get $2 + local.get $3 i32.load8_u i32.store8 - local.get $3 local.get $2 + local.get $3 i32.load8_u i32.const -2128831035 i32.xor @@ -1108,38 +1137,48 @@ i32.load i32.store offset=4 local.get $8 - local.get $3 + local.get $2 i32.store - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 end - local.get $2 + local.get $3 i32.const 8 i32.add - local.set $2 + local.set $3 br $continue|0 end end local.get $0 + local.tee $2 + i32.load + drop + local.get $2 local.get $4 i32.store - local.get $0 + local.get $2 local.get $1 i32.store offset=4 - local.get $0 local.get $5 - i32.store offset=8 + local.tee $0 + local.get $2 + i32.load offset=8 + i32.ne + drop + local.get $2 local.get $0 + i32.store offset=8 + local.get $2 local.get $6 i32.store offset=12 - local.get $0 - local.get $0 + local.get $2 + local.get $2 i32.load offset=20 i32.store offset=16 ) - (func $~lib/set/Set#add (; 18 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (; 17 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1229,7 +1268,7 @@ i32.store end ) - (func $~lib/set/Set#delete (; 19 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#delete (; 18 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -1294,7 +1333,7 @@ call $~lib/set/Set#rehash end ) - (func $std/set/test (; 20 ;) (type $FUNCSIG$v) + (func $std/set/testNumeric (; 19 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) call $~lib/set/Set#constructor @@ -1309,8 +1348,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -1329,8 +1368,8 @@ br $repeat|0 else i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -1344,8 +1383,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 12 + i32.const 128 + i32.const 13 i32.const 2 call $~lib/env/abort unreachable @@ -1363,8 +1402,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 16 + i32.const 128 + i32.const 17 i32.const 4 call $~lib/env/abort unreachable @@ -1383,8 +1422,8 @@ br $repeat|1 else i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -1398,8 +1437,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 2 call $~lib/env/abort unreachable @@ -1417,8 +1456,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 24 + i32.const 128 + i32.const 25 i32.const 4 call $~lib/env/abort unreachable @@ -1431,8 +1470,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 26 + i32.const 128 + i32.const 27 i32.const 4 call $~lib/env/abort unreachable @@ -1452,8 +1491,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 2 call $~lib/env/abort unreachable @@ -1470,8 +1509,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 4 call $~lib/env/abort unreachable @@ -1485,8 +1524,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 34 + i32.const 128 + i32.const 35 i32.const 4 call $~lib/env/abort unreachable @@ -1499,8 +1538,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -1520,8 +1559,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 2 call $~lib/env/abort unreachable @@ -1532,19 +1571,19 @@ i32.load offset=20 if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/set/Set#constructor (; 21 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/set/Set#constructor (; 20 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 5 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $0 i32.const 0 i32.store @@ -1567,7 +1606,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/set/Set#find (; 22 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 21 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -1612,7 +1651,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -1637,7 +1676,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 24 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 23 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1648,12 +1687,12 @@ local.get $1 i32.const 1 i32.add - local.tee $2 + local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 - local.get $2 + local.get $3 f64.convert_i32_s f64.const 2.6666666666666665 f64.mul @@ -1665,7 +1704,7 @@ local.set $6 local.get $0 i32.load offset=8 - local.tee $2 + local.tee $3 local.get $0 i32.load offset=16 i32.const 3 @@ -1673,24 +1712,24 @@ i32.add local.set $8 local.get $6 - local.set $3 + local.set $2 loop $continue|0 - local.get $2 + local.get $3 local.get $8 i32.ne if - local.get $2 + local.get $3 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $3 local.get $2 + local.get $3 i32.load16_s i32.store16 - local.get $3 local.get $2 + local.get $3 i32.load16_s local.tee $4 i32.const 255 @@ -1715,38 +1754,51 @@ i32.load i32.store offset=4 local.get $4 - local.get $3 + local.get $2 i32.store - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 end - local.get $2 + local.get $3 i32.const 8 i32.add - local.set $2 + local.set $3 br $continue|0 end end - local.get $0 local.get $5 - i32.store + local.tee $4 local.get $0 + local.tee $2 + i32.load + i32.ne + drop + local.get $2 + local.get $4 + i32.store + local.get $2 local.get $1 i32.store offset=4 - local.get $0 local.get $6 - i32.store offset=8 + local.tee $0 + local.get $2 + i32.load offset=8 + i32.ne + drop + local.get $2 local.get $0 + i32.store offset=8 + local.get $2 local.get $7 i32.store offset=12 - local.get $0 - local.get $0 + local.get $2 + local.get $2 i32.load offset=20 i32.store offset=16 ) - (func $~lib/set/Set#add (; 25 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (; 24 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1847,7 +1899,7 @@ i32.store end ) - (func $~lib/set/Set#delete (; 26 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#delete (; 25 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -1923,7 +1975,7 @@ call $~lib/set/Set#rehash end ) - (func $std/set/test (; 27 ;) (type $FUNCSIG$v) + (func $std/set/testNumeric (; 26 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) call $~lib/set/Set#constructor @@ -1938,8 +1990,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -1958,8 +2010,8 @@ br $repeat|0 else i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -1973,8 +2025,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 12 + i32.const 128 + i32.const 13 i32.const 2 call $~lib/env/abort unreachable @@ -1992,8 +2044,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 16 + i32.const 128 + i32.const 17 i32.const 4 call $~lib/env/abort unreachable @@ -2012,8 +2064,8 @@ br $repeat|1 else i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -2027,8 +2079,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 2 call $~lib/env/abort unreachable @@ -2046,8 +2098,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 24 + i32.const 128 + i32.const 25 i32.const 4 call $~lib/env/abort unreachable @@ -2060,8 +2112,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 26 + i32.const 128 + i32.const 27 i32.const 4 call $~lib/env/abort unreachable @@ -2081,8 +2133,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 2 call $~lib/env/abort unreachable @@ -2099,8 +2151,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 4 call $~lib/env/abort unreachable @@ -2114,8 +2166,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 34 + i32.const 128 + i32.const 35 i32.const 4 call $~lib/env/abort unreachable @@ -2128,8 +2180,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -2149,8 +2201,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 2 call $~lib/env/abort unreachable @@ -2161,19 +2213,19 @@ i32.load offset=20 if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/set/Set#constructor (; 28 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/set/Set#constructor (; 27 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 6 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $0 i32.const 0 i32.store @@ -2196,7 +2248,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/set/Set#has (; 29 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -2219,7 +2271,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 30 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 29 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2230,12 +2282,12 @@ local.get $1 i32.const 1 i32.add - local.tee $2 + local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 - local.get $2 + local.get $3 f64.convert_i32_s f64.const 2.6666666666666665 f64.mul @@ -2247,7 +2299,7 @@ local.set $6 local.get $0 i32.load offset=8 - local.tee $2 + local.tee $3 local.get $0 i32.load offset=16 i32.const 3 @@ -2255,24 +2307,24 @@ i32.add local.set $8 local.get $6 - local.set $3 + local.set $2 loop $continue|0 - local.get $2 + local.get $3 local.get $8 i32.ne if - local.get $2 + local.get $3 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $3 local.get $2 + local.get $3 i32.load16_u i32.store16 - local.get $3 local.get $2 + local.get $3 i32.load16_u local.tee $4 i32.const 255 @@ -2297,38 +2349,51 @@ i32.load i32.store offset=4 local.get $4 - local.get $3 + local.get $2 i32.store - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 end - local.get $2 + local.get $3 i32.const 8 i32.add - local.set $2 + local.set $3 br $continue|0 end end - local.get $0 local.get $5 - i32.store + local.tee $4 local.get $0 + local.tee $2 + i32.load + i32.ne + drop + local.get $2 + local.get $4 + i32.store + local.get $2 local.get $1 i32.store offset=4 - local.get $0 local.get $6 - i32.store offset=8 + local.tee $0 + local.get $2 + i32.load offset=8 + i32.ne + drop + local.get $2 local.get $0 + i32.store offset=8 + local.get $2 local.get $7 i32.store offset=12 - local.get $0 - local.get $0 + local.get $2 + local.get $2 i32.load offset=20 i32.store offset=16 ) - (func $~lib/set/Set#add (; 31 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (; 30 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2427,7 +2492,7 @@ i32.store end ) - (func $~lib/set/Set#delete (; 32 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#delete (; 31 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -2501,7 +2566,7 @@ call $~lib/set/Set#rehash end ) - (func $std/set/test (; 33 ;) (type $FUNCSIG$v) + (func $std/set/testNumeric (; 32 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) call $~lib/set/Set#constructor @@ -2516,8 +2581,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -2536,8 +2601,8 @@ br $repeat|0 else i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -2551,8 +2616,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 12 + i32.const 128 + i32.const 13 i32.const 2 call $~lib/env/abort unreachable @@ -2570,8 +2635,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 16 + i32.const 128 + i32.const 17 i32.const 4 call $~lib/env/abort unreachable @@ -2590,8 +2655,8 @@ br $repeat|1 else i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -2605,8 +2670,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 2 call $~lib/env/abort unreachable @@ -2624,8 +2689,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 24 + i32.const 128 + i32.const 25 i32.const 4 call $~lib/env/abort unreachable @@ -2638,8 +2703,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 26 + i32.const 128 + i32.const 27 i32.const 4 call $~lib/env/abort unreachable @@ -2659,8 +2724,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 2 call $~lib/env/abort unreachable @@ -2677,8 +2742,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 4 call $~lib/env/abort unreachable @@ -2692,8 +2757,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 34 + i32.const 128 + i32.const 35 i32.const 4 call $~lib/env/abort unreachable @@ -2706,8 +2771,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -2727,8 +2792,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 2 call $~lib/env/abort unreachable @@ -2739,19 +2804,19 @@ i32.load offset=20 if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/set/Set#constructor (; 34 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/set/Set#constructor (; 33 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 7 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $0 i32.const 0 i32.store @@ -2774,7 +2839,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/util/hash/hash32 (; 35 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hash32 (; 34 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 255 i32.and @@ -2805,7 +2870,7 @@ i32.const 16777619 i32.mul ) - (func $~lib/set/Set#find (; 36 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 35 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -2848,7 +2913,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 37 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 36 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -2857,7 +2922,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 38 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 37 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2868,12 +2933,12 @@ local.get $1 i32.const 1 i32.add - local.tee $2 + local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $4 - local.get $2 + local.get $3 f64.convert_i32_s f64.const 2.6666666666666665 f64.mul @@ -2885,7 +2950,7 @@ local.set $5 local.get $0 i32.load offset=8 - local.tee $2 + local.tee $3 local.get $0 i32.load offset=16 i32.const 3 @@ -2893,24 +2958,24 @@ i32.add local.set $7 local.get $5 - local.set $3 + local.set $2 loop $continue|0 - local.get $2 + local.get $3 local.get $7 i32.ne if - local.get $2 + local.get $3 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $3 local.get $2 + local.get $3 i32.load i32.store - local.get $3 local.get $2 + local.get $3 i32.load call $~lib/util/hash/hash32 local.get $1 @@ -2923,38 +2988,48 @@ i32.load i32.store offset=4 local.get $8 - local.get $3 + local.get $2 i32.store - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 end - local.get $2 + local.get $3 i32.const 8 i32.add - local.set $2 + local.set $3 br $continue|0 end end local.get $0 + local.tee $2 + i32.load + drop + local.get $2 local.get $4 i32.store - local.get $0 + local.get $2 local.get $1 i32.store offset=4 - local.get $0 local.get $5 - i32.store offset=8 + local.tee $0 + local.get $2 + i32.load offset=8 + i32.ne + drop + local.get $2 local.get $0 + i32.store offset=8 + local.get $2 local.get $6 i32.store offset=12 - local.get $0 - local.get $0 + local.get $2 + local.get $2 i32.load offset=20 i32.store offset=16 ) - (func $~lib/set/Set#add (; 39 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (; 38 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3037,7 +3112,7 @@ i32.store end ) - (func $~lib/set/Set#delete (; 40 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#delete (; 39 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -3097,7 +3172,7 @@ call $~lib/set/Set#rehash end ) - (func $std/set/test (; 41 ;) (type $FUNCSIG$v) + (func $std/set/testNumeric (; 40 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) call $~lib/set/Set#constructor @@ -3112,8 +3187,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -3132,8 +3207,8 @@ br $repeat|0 else i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -3147,8 +3222,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 12 + i32.const 128 + i32.const 13 i32.const 2 call $~lib/env/abort unreachable @@ -3166,8 +3241,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 16 + i32.const 128 + i32.const 17 i32.const 4 call $~lib/env/abort unreachable @@ -3186,8 +3261,8 @@ br $repeat|1 else i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -3201,8 +3276,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 2 call $~lib/env/abort unreachable @@ -3220,8 +3295,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 24 + i32.const 128 + i32.const 25 i32.const 4 call $~lib/env/abort unreachable @@ -3234,8 +3309,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 26 + i32.const 128 + i32.const 27 i32.const 4 call $~lib/env/abort unreachable @@ -3255,8 +3330,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 2 call $~lib/env/abort unreachable @@ -3273,8 +3348,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 4 call $~lib/env/abort unreachable @@ -3288,8 +3363,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 34 + i32.const 128 + i32.const 35 i32.const 4 call $~lib/env/abort unreachable @@ -3302,8 +3377,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -3323,8 +3398,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 2 call $~lib/env/abort unreachable @@ -3335,19 +3410,19 @@ i32.load offset=20 if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/set/Set#constructor (; 42 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/set/Set#constructor (; 41 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 8 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $0 i32.const 0 i32.store @@ -3370,7 +3445,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $std/set/test (; 43 ;) (type $FUNCSIG$v) + (func $std/set/testNumeric (; 42 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) call $~lib/set/Set#constructor @@ -3385,8 +3460,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -3405,8 +3480,8 @@ br $repeat|0 else i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -3420,8 +3495,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 12 + i32.const 128 + i32.const 13 i32.const 2 call $~lib/env/abort unreachable @@ -3439,8 +3514,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 16 + i32.const 128 + i32.const 17 i32.const 4 call $~lib/env/abort unreachable @@ -3459,8 +3534,8 @@ br $repeat|1 else i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -3474,8 +3549,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 2 call $~lib/env/abort unreachable @@ -3493,8 +3568,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 24 + i32.const 128 + i32.const 25 i32.const 4 call $~lib/env/abort unreachable @@ -3507,8 +3582,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 26 + i32.const 128 + i32.const 27 i32.const 4 call $~lib/env/abort unreachable @@ -3528,8 +3603,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 2 call $~lib/env/abort unreachable @@ -3546,8 +3621,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 4 call $~lib/env/abort unreachable @@ -3561,8 +3636,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 34 + i32.const 128 + i32.const 35 i32.const 4 call $~lib/env/abort unreachable @@ -3575,8 +3650,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -3596,8 +3671,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 2 call $~lib/env/abort unreachable @@ -3608,24 +3683,36 @@ i32.load offset=20 if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/set/Set#clear (; 44 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 + (func $~lib/set/Set#clear (; 43 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + local.get $0 + i32.load + drop + local.get $0 + local.get $1 i32.store local.get $0 i32.const 3 i32.store offset=4 - local.get $0 i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + local.get $0 + i32.load offset=8 + i32.ne + drop + local.get $0 + local.get $1 i32.store offset=8 local.get $0 i32.const 4 @@ -3637,12 +3724,12 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 45 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/set/Set#constructor (; 44 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 9 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $0 i32.const 0 i32.store @@ -3665,7 +3752,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/util/hash/hash64 (; 46 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/hash/hash64 (; 45 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) local.get $0 i32.wrap_i64 @@ -3731,7 +3818,7 @@ i32.const 16777619 i32.mul ) - (func $~lib/set/Set#find (; 47 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 46 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -3774,7 +3861,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 48 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/set/Set#has (; 47 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) local.get $0 local.get $1 local.get $1 @@ -3783,7 +3870,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 49 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 48 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3794,12 +3881,12 @@ local.get $1 i32.const 1 i32.add - local.tee $2 + local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $4 - local.get $2 + local.get $3 f64.convert_i32_s f64.const 2.6666666666666665 f64.mul @@ -3811,7 +3898,7 @@ local.set $5 local.get $0 i32.load offset=8 - local.tee $2 + local.tee $3 local.get $0 i32.load offset=16 i32.const 4 @@ -3819,24 +3906,24 @@ i32.add local.set $7 local.get $5 - local.set $3 + local.set $2 loop $continue|0 - local.get $2 + local.get $3 local.get $7 i32.ne if - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $3 local.get $2 + local.get $3 i64.load i64.store - local.get $3 local.get $2 + local.get $3 i64.load call $~lib/util/hash/hash64 local.get $1 @@ -3849,38 +3936,48 @@ i32.load i32.store offset=8 local.get $8 - local.get $3 + local.get $2 i32.store - local.get $3 + local.get $2 i32.const 16 i32.add - local.set $3 + local.set $2 end - local.get $2 + local.get $3 i32.const 16 i32.add - local.set $2 + local.set $3 br $continue|0 end end local.get $0 + local.tee $2 + i32.load + drop + local.get $2 local.get $4 i32.store - local.get $0 + local.get $2 local.get $1 i32.store offset=4 - local.get $0 local.get $5 - i32.store offset=8 + local.tee $0 + local.get $2 + i32.load offset=8 + i32.ne + drop + local.get $2 local.get $0 + i32.store offset=8 + local.get $2 local.get $6 i32.store offset=12 - local.get $0 - local.get $0 + local.get $2 + local.get $2 i32.load offset=20 i32.store offset=16 ) - (func $~lib/set/Set#add (; 50 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) + (func $~lib/set/Set#add (; 49 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3963,7 +4060,7 @@ i32.store end ) - (func $~lib/set/Set#delete (; 51 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) + (func $~lib/set/Set#delete (; 50 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) (local $2 i32) (local $3 i32) local.get $0 @@ -4024,7 +4121,7 @@ call $~lib/set/Set#rehash end ) - (func $std/set/test (; 52 ;) (type $FUNCSIG$v) + (func $std/set/testNumeric (; 51 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) call $~lib/set/Set#constructor @@ -4039,8 +4136,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -4059,8 +4156,8 @@ br $repeat|0 else i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -4074,8 +4171,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 12 + i32.const 128 + i32.const 13 i32.const 2 call $~lib/env/abort unreachable @@ -4093,8 +4190,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 16 + i32.const 128 + i32.const 17 i32.const 4 call $~lib/env/abort unreachable @@ -4113,8 +4210,8 @@ br $repeat|1 else i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -4128,8 +4225,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 2 call $~lib/env/abort unreachable @@ -4147,8 +4244,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 24 + i32.const 128 + i32.const 25 i32.const 4 call $~lib/env/abort unreachable @@ -4161,8 +4258,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 26 + i32.const 128 + i32.const 27 i32.const 4 call $~lib/env/abort unreachable @@ -4182,8 +4279,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 2 call $~lib/env/abort unreachable @@ -4200,8 +4297,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 4 call $~lib/env/abort unreachable @@ -4215,8 +4312,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 34 + i32.const 128 + i32.const 35 i32.const 4 call $~lib/env/abort unreachable @@ -4229,8 +4326,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -4250,8 +4347,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 2 call $~lib/env/abort unreachable @@ -4262,19 +4359,19 @@ i32.load offset=20 if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/set/Set#constructor (; 53 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/set/Set#constructor (; 52 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 10 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $0 i32.const 0 i32.store @@ -4297,7 +4394,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $std/set/test (; 54 ;) (type $FUNCSIG$v) + (func $std/set/testNumeric (; 53 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) call $~lib/set/Set#constructor @@ -4312,8 +4409,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -4332,8 +4429,8 @@ br $repeat|0 else i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -4347,8 +4444,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 12 + i32.const 128 + i32.const 13 i32.const 2 call $~lib/env/abort unreachable @@ -4366,8 +4463,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 16 + i32.const 128 + i32.const 17 i32.const 4 call $~lib/env/abort unreachable @@ -4386,8 +4483,8 @@ br $repeat|1 else i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -4401,8 +4498,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 2 call $~lib/env/abort unreachable @@ -4420,8 +4517,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 24 + i32.const 128 + i32.const 25 i32.const 4 call $~lib/env/abort unreachable @@ -4434,8 +4531,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 26 + i32.const 128 + i32.const 27 i32.const 4 call $~lib/env/abort unreachable @@ -4455,8 +4552,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 2 call $~lib/env/abort unreachable @@ -4473,8 +4570,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 4 call $~lib/env/abort unreachable @@ -4488,8 +4585,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 34 + i32.const 128 + i32.const 35 i32.const 4 call $~lib/env/abort unreachable @@ -4502,8 +4599,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -4523,8 +4620,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 2 call $~lib/env/abort unreachable @@ -4535,19 +4632,19 @@ i32.load offset=20 if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/set/Set#constructor (; 55 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/set/Set#constructor (; 54 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 11 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $0 i32.const 0 i32.store @@ -4570,7 +4667,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/set/Set#find (; 56 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 55 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -4613,7 +4710,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 57 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/set/Set#has (; 56 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) local.get $0 local.get $1 local.get $1 @@ -4623,7 +4720,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 58 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 57 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4634,12 +4731,12 @@ local.get $1 i32.const 1 i32.add - local.tee $2 + local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $4 - local.get $2 + local.get $3 f64.convert_i32_s f64.const 2.6666666666666665 f64.mul @@ -4651,7 +4748,7 @@ local.set $5 local.get $0 i32.load offset=8 - local.tee $2 + local.tee $3 local.get $0 i32.load offset=16 i32.const 3 @@ -4659,24 +4756,24 @@ i32.add local.set $7 local.get $5 - local.set $3 + local.set $2 loop $continue|0 - local.get $2 + local.get $3 local.get $7 i32.ne if - local.get $2 + local.get $3 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $3 local.get $2 + local.get $3 f32.load f32.store - local.get $3 local.get $2 + local.get $3 f32.load i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -4690,38 +4787,48 @@ i32.load i32.store offset=4 local.get $8 - local.get $3 + local.get $2 i32.store - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 end - local.get $2 + local.get $3 i32.const 8 i32.add - local.set $2 + local.set $3 br $continue|0 end end local.get $0 + local.tee $2 + i32.load + drop + local.get $2 local.get $4 i32.store - local.get $0 + local.get $2 local.get $1 i32.store offset=4 - local.get $0 local.get $5 - i32.store offset=8 + local.tee $0 + local.get $2 + i32.load offset=8 + i32.ne + drop + local.get $2 local.get $0 + i32.store offset=8 + local.get $2 local.get $6 i32.store offset=12 - local.get $0 - local.get $0 + local.get $2 + local.get $2 i32.load offset=20 i32.store offset=16 ) - (func $~lib/set/Set#add (; 59 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32) + (func $~lib/set/Set#add (; 58 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4805,7 +4912,7 @@ i32.store end ) - (func $~lib/set/Set#delete (; 60 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32) + (func $~lib/set/Set#delete (; 59 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32) (local $2 i32) (local $3 i32) local.get $0 @@ -4867,7 +4974,7 @@ call $~lib/set/Set#rehash end ) - (func $std/set/test (; 61 ;) (type $FUNCSIG$v) + (func $std/set/testNumeric (; 60 ;) (type $FUNCSIG$v) (local $0 f32) (local $1 i32) call $~lib/set/Set#constructor @@ -4882,8 +4989,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -4902,8 +5009,8 @@ br $repeat|0 else i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -4917,8 +5024,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 12 + i32.const 128 + i32.const 13 i32.const 2 call $~lib/env/abort unreachable @@ -4936,8 +5043,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 16 + i32.const 128 + i32.const 17 i32.const 4 call $~lib/env/abort unreachable @@ -4956,8 +5063,8 @@ br $repeat|1 else i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -4971,8 +5078,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 2 call $~lib/env/abort unreachable @@ -4990,8 +5097,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 24 + i32.const 128 + i32.const 25 i32.const 4 call $~lib/env/abort unreachable @@ -5004,8 +5111,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 26 + i32.const 128 + i32.const 27 i32.const 4 call $~lib/env/abort unreachable @@ -5025,8 +5132,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 2 call $~lib/env/abort unreachable @@ -5043,8 +5150,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 4 call $~lib/env/abort unreachable @@ -5058,8 +5165,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 34 + i32.const 128 + i32.const 35 i32.const 4 call $~lib/env/abort unreachable @@ -5072,8 +5179,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -5093,8 +5200,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 2 call $~lib/env/abort unreachable @@ -5105,19 +5212,19 @@ i32.load offset=20 if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/set/Set#constructor (; 62 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/set/Set#constructor (; 61 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 12 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $0 i32.const 0 i32.store @@ -5140,7 +5247,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/set/Set#find (; 63 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 62 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -5183,7 +5290,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 64 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/set/Set#has (; 63 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) local.get $0 local.get $1 local.get $1 @@ -5193,7 +5300,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 65 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 64 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5204,12 +5311,12 @@ local.get $1 i32.const 1 i32.add - local.tee $2 + local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $4 - local.get $2 + local.get $3 f64.convert_i32_s f64.const 2.6666666666666665 f64.mul @@ -5221,7 +5328,7 @@ local.set $5 local.get $0 i32.load offset=8 - local.tee $2 + local.tee $3 local.get $0 i32.load offset=16 i32.const 4 @@ -5229,24 +5336,24 @@ i32.add local.set $7 local.get $5 - local.set $3 + local.set $2 loop $continue|0 - local.get $2 + local.get $3 local.get $7 i32.ne if - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $3 local.get $2 + local.get $3 f64.load f64.store - local.get $3 local.get $2 + local.get $3 f64.load i64.reinterpret_f64 call $~lib/util/hash/hash64 @@ -5260,38 +5367,48 @@ i32.load i32.store offset=8 local.get $8 - local.get $3 + local.get $2 i32.store - local.get $3 + local.get $2 i32.const 16 i32.add - local.set $3 + local.set $2 end - local.get $2 + local.get $3 i32.const 16 i32.add - local.set $2 + local.set $3 br $continue|0 end end local.get $0 + local.tee $2 + i32.load + drop + local.get $2 local.get $4 i32.store - local.get $0 + local.get $2 local.get $1 i32.store offset=4 - local.get $0 local.get $5 - i32.store offset=8 + local.tee $0 + local.get $2 + i32.load offset=8 + i32.ne + drop + local.get $2 local.get $0 + i32.store offset=8 + local.get $2 local.get $6 i32.store offset=12 - local.get $0 - local.get $0 + local.get $2 + local.get $2 i32.load offset=20 i32.store offset=16 ) - (func $~lib/set/Set#add (; 66 ;) (type $FUNCSIG$vid) (param $0 i32) (param $1 f64) + (func $~lib/set/Set#add (; 65 ;) (type $FUNCSIG$vid) (param $0 i32) (param $1 f64) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5375,7 +5492,7 @@ i32.store end ) - (func $~lib/set/Set#delete (; 67 ;) (type $FUNCSIG$vid) (param $0 i32) (param $1 f64) + (func $~lib/set/Set#delete (; 66 ;) (type $FUNCSIG$vid) (param $0 i32) (param $1 f64) (local $2 i32) (local $3 i32) local.get $0 @@ -5437,7 +5554,7 @@ call $~lib/set/Set#rehash end ) - (func $std/set/test (; 68 ;) (type $FUNCSIG$v) + (func $std/set/testNumeric (; 67 ;) (type $FUNCSIG$v) (local $0 f64) (local $1 i32) call $~lib/set/Set#constructor @@ -5452,8 +5569,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -5472,8 +5589,8 @@ br $repeat|0 else i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -5487,8 +5604,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 12 + i32.const 128 + i32.const 13 i32.const 2 call $~lib/env/abort unreachable @@ -5506,8 +5623,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 16 + i32.const 128 + i32.const 17 i32.const 4 call $~lib/env/abort unreachable @@ -5526,8 +5643,8 @@ br $repeat|1 else i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -5541,8 +5658,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 2 call $~lib/env/abort unreachable @@ -5560,8 +5677,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 24 + i32.const 128 + i32.const 25 i32.const 4 call $~lib/env/abort unreachable @@ -5574,8 +5691,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 26 + i32.const 128 + i32.const 27 i32.const 4 call $~lib/env/abort unreachable @@ -5595,8 +5712,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 2 call $~lib/env/abort unreachable @@ -5613,8 +5730,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 4 call $~lib/env/abort unreachable @@ -5628,8 +5745,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 34 + i32.const 128 + i32.const 35 i32.const 4 call $~lib/env/abort unreachable @@ -5642,8 +5759,8 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -5663,8 +5780,8 @@ i32.ne if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 2 call $~lib/env/abort unreachable @@ -5675,30 +5792,30 @@ i32.load offset=20 if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable end ) - (func $start (; 69 ;) (type $FUNCSIG$v) - i32.const 128 + (func $start (; 68 ;) (type $FUNCSIG$v) + i32.const 152 global.set $~lib/allocator/arena/startOffset global.get $~lib/allocator/arena/startOffset global.set $~lib/allocator/arena/offset - call $std/set/test - call $std/set/test - call $std/set/test - call $std/set/test - call $std/set/test - call $std/set/test - call $std/set/test - call $std/set/test - call $std/set/test - call $std/set/test + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric ) - (func $null (; 70 ;) (type $FUNCSIG$v) + (func $null (; 69 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/set.ts b/tests/compiler/std/set.ts index 353ff805..1efb84ee 100644 --- a/tests/compiler/std/set.ts +++ b/tests/compiler/std/set.ts @@ -1,6 +1,7 @@ import "allocator/arena"; +import "collector/dummy"; -function test(): void { +function testNumeric(): void { var set = new Set(); // insert new @@ -42,13 +43,13 @@ function test(): void { assert(set.size == 0); } -test(); -test(); -test(); -test(); -test(); -test(); -test(); -test(); -test(); -test(); +testNumeric(); +testNumeric(); +testNumeric(); +testNumeric(); +testNumeric(); +testNumeric(); +testNumeric(); +testNumeric(); +testNumeric(); +testNumeric(); diff --git a/tests/compiler/std/set.untouched.wat b/tests/compiler/std/set.untouched.wat index 17a61b71..9bef69a8 100644 --- a/tests/compiler/std/set.untouched.wat +++ b/tests/compiler/std/set.untouched.wat @@ -2,11 +2,11 @@ (type $FUNCSIG$v (func)) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$vii (func (param i32 i32))) + (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$iij (func (param i32 i64) (result i32))) (type $FUNCSIG$ij (func (param i64) (result i32))) (type $FUNCSIG$iiji (func (param i32 i64 i32) (result i32))) @@ -19,21 +19,22 @@ (type $FUNCSIG$vid (func (param i32 f64))) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") - (data (i32.const 48) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 96) "\02\00\00\00\14\00\00\00s\00t\00d\00/\00s\00e\00t\00.\00t\00s\00") + (data (i32.const 8) "\02\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") + (data (i32.const 56) "\02\00\00\00&\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") + (data (i32.const 112) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00s\00t\00d\00/\00s\00e\00t\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) - (global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0)) - (global $~lib/runtime/HEADER_SIZE i32 (i32.const 8)) + (global $~lib/runtime/HEADER_SIZE i32 (i32.const 16)) (global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) (global $~lib/ASC_NO_ASSERT i32 (i32.const 0)) - (global $~lib/runtime/MAX_BYTELENGTH i32 (i32.const 1073741816)) - (global $~lib/memory/HEAP_BASE i32 (i32.const 124)) + (global $~lib/runtime/MAX_BYTELENGTH i32 (i32.const 1073741808)) + (global $~lib/memory/HEAP_BASE i32 (i32.const 148)) + (global $~lib/capabilities i32 (i32.const 2)) (export "memory" (memory $0)) (export "table" (table $0)) + (export ".capabilities" (global $~lib/capabilities)) (start $start) (func $~lib/runtime/ADJUSTOBLOCK (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 1 @@ -132,7 +133,7 @@ end return ) - (func $~lib/runtime/doAllocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/runtime/ADJUSTOBLOCK @@ -145,47 +146,55 @@ local.get $0 i32.store offset=4 local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $1 global.get $~lib/runtime/HEADER_SIZE i32.add ) - (func $~lib/runtime/assertUnregistered (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/collector/dummy/__ref_register (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $~lib/runtime/register (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 global.get $~lib/memory/HEAP_BASE i32.gt_u i32.eqz if i32.const 0 - i32.const 16 - i32.const 313 - i32.const 2 + i32.const 24 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 global.get $~lib/runtime/HEADER_SIZE i32.sub + local.set $2 + local.get $2 i32.load global.get $~lib/runtime/HEADER_MAGIC i32.eq i32.eqz if i32.const 0 - i32.const 16 - i32.const 314 - i32.const 2 + i32.const 24 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $~lib/runtime/doRegister (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/runtime/assertUnregistered - local.get $0 - global.get $~lib/runtime/HEADER_SIZE - i32.sub + local.get $2 local.get $1 i32.store local.get $0 + call $~lib/collector/dummy/__ref_register + local.get $0 ) (func $~lib/memory/memory.fill (; 6 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -452,7 +461,7 @@ i32.gt_u if i32.const 0 - i32.const 56 + i32.const 72 i32.const 25 i32.const 43 call $~lib/env/abort @@ -462,7 +471,7 @@ local.get $1 local.set $2 local.get $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $3 local.get $3 @@ -474,14 +483,43 @@ local.set $2 local.get $2 i32.const 3 - call $~lib/runtime/doRegister + call $~lib/runtime/register end ) - (func $~lib/set/Set#clear (; 8 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/collector/dummy/__ref_link (; 8 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/collector/dummy/__ref_unlink (; 9 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/set/Set#clear (; 10 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 + local.tee $1 i32.const 0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $2 + local.get $1 + i32.load + local.tee $3 + i32.ne + if (result i32) + local.get $3 + if + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $2 + else + local.get $2 + end i32.store local.get $0 i32.const 4 @@ -489,9 +527,29 @@ i32.sub i32.store offset=4 local.get $0 + local.tee $1 i32.const 0 i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + local.get $1 + i32.load offset=8 + local.tee $2 + i32.ne + if (result i32) + local.get $2 + if + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $3 + else + local.get $3 + end i32.store offset=8 local.get $0 i32.const 4 @@ -503,7 +561,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) block (result i32) local.get $0 @@ -514,12 +572,12 @@ i32.const 24 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -546,14 +604,14 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/util/hash/hash8 (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hash8 (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const -2128831035 local.get $0 i32.xor i32.const 16777619 i32.mul ) - (func $~lib/set/Set#find (; 11 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 13 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -608,7 +666,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -627,7 +685,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 13 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 15 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -741,13 +799,53 @@ end end local.get $0 + local.tee $9 local.get $3 + local.tee $12 + local.get $9 + i32.load + local.tee $11 + i32.ne + if (result i32) + local.get $11 + if + local.get $11 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $12 + else + local.get $12 + end i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 + local.tee $9 local.get $5 + local.tee $11 + local.get $9 + i32.load offset=8 + local.tee $12 + i32.ne + if (result i32) + local.get $12 + if + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $11 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $11 + else + local.get $11 + end i32.store offset=8 local.get $0 local.get $4 @@ -757,7 +855,7 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/set/Set#add (; 14 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (; 16 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -859,11 +957,11 @@ i32.store end ) - (func $~lib/set/Set#get:size (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#get:size (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/set/Set#delete (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#delete (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -940,7 +1038,7 @@ end i32.const 1 ) - (func $std/set/test (; 17 ;) (type $FUNCSIG$v) + (func $std/set/testNumeric (; 19 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -963,8 +1061,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -978,8 +1076,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -1001,8 +1099,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 12 + i32.const 128 + i32.const 13 i32.const 2 call $~lib/env/abort unreachable @@ -1023,8 +1121,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 16 + i32.const 128 + i32.const 17 i32.const 4 call $~lib/env/abort unreachable @@ -1038,8 +1136,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -1061,8 +1159,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 2 call $~lib/env/abort unreachable @@ -1083,8 +1181,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 24 + i32.const 128 + i32.const 25 i32.const 4 call $~lib/env/abort unreachable @@ -1100,8 +1198,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 26 + i32.const 128 + i32.const 27 i32.const 4 call $~lib/env/abort unreachable @@ -1123,8 +1221,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 2 call $~lib/env/abort unreachable @@ -1146,8 +1244,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 4 call $~lib/env/abort unreachable @@ -1161,8 +1259,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 34 + i32.const 128 + i32.const 35 i32.const 4 call $~lib/env/abort unreachable @@ -1178,8 +1276,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -1201,8 +1299,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 2 call $~lib/env/abort unreachable @@ -1216,18 +1314,41 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/set/Set#clear (; 18 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/set/Set#clear (; 20 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 + local.tee $1 i32.const 0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $2 + local.get $1 + i32.load + local.tee $3 + i32.ne + if (result i32) + local.get $3 + if + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $2 + else + local.get $2 + end i32.store local.get $0 i32.const 4 @@ -1235,9 +1356,29 @@ i32.sub i32.store offset=4 local.get $0 + local.tee $1 i32.const 0 i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + local.get $1 + i32.load offset=8 + local.tee $2 + i32.ne + if (result i32) + local.get $2 + if + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $3 + else + local.get $3 + end i32.store offset=8 local.get $0 i32.const 4 @@ -1249,7 +1390,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 21 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) block (result i32) local.get $0 @@ -1260,12 +1401,12 @@ i32.const 24 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 4 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -1292,7 +1433,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/set/Set#find (; 20 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 22 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -1345,7 +1486,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -1362,7 +1503,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 22 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 24 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1476,13 +1617,53 @@ end end local.get $0 + local.tee $9 local.get $3 + local.tee $12 + local.get $9 + i32.load + local.tee $11 + i32.ne + if (result i32) + local.get $11 + if + local.get $11 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $12 + else + local.get $12 + end i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 + local.tee $9 local.get $5 + local.tee $11 + local.get $9 + i32.load offset=8 + local.tee $12 + i32.ne + if (result i32) + local.get $12 + if + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $11 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $11 + else + local.get $11 + end i32.store offset=8 local.get $0 local.get $4 @@ -1492,7 +1673,7 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/set/Set#add (; 23 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (; 25 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1592,11 +1773,11 @@ i32.store end ) - (func $~lib/set/Set#get:size (; 24 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#get:size (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/set/Set#delete (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#delete (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1671,7 +1852,7 @@ end i32.const 1 ) - (func $std/set/test (; 26 ;) (type $FUNCSIG$v) + (func $std/set/testNumeric (; 28 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -1694,8 +1875,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -1709,8 +1890,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -1732,8 +1913,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 12 + i32.const 128 + i32.const 13 i32.const 2 call $~lib/env/abort unreachable @@ -1754,8 +1935,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 16 + i32.const 128 + i32.const 17 i32.const 4 call $~lib/env/abort unreachable @@ -1769,8 +1950,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -1792,8 +1973,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 2 call $~lib/env/abort unreachable @@ -1814,8 +1995,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 24 + i32.const 128 + i32.const 25 i32.const 4 call $~lib/env/abort unreachable @@ -1831,8 +2012,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 26 + i32.const 128 + i32.const 27 i32.const 4 call $~lib/env/abort unreachable @@ -1854,8 +2035,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 2 call $~lib/env/abort unreachable @@ -1877,8 +2058,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 4 call $~lib/env/abort unreachable @@ -1892,8 +2073,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 34 + i32.const 128 + i32.const 35 i32.const 4 call $~lib/env/abort unreachable @@ -1909,8 +2090,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -1932,8 +2113,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 2 call $~lib/env/abort unreachable @@ -1947,18 +2128,41 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/set/Set#clear (; 27 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/set/Set#clear (; 29 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 + local.tee $1 i32.const 0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $2 + local.get $1 + i32.load + local.tee $3 + i32.ne + if (result i32) + local.get $3 + if + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $2 + else + local.get $2 + end i32.store local.get $0 i32.const 4 @@ -1966,9 +2170,29 @@ i32.sub i32.store offset=4 local.get $0 + local.tee $1 i32.const 0 i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + local.get $1 + i32.load offset=8 + local.tee $2 + i32.ne + if (result i32) + local.get $2 + if + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $3 + else + local.get $3 + end i32.store offset=8 local.get $0 i32.const 4 @@ -1980,7 +2204,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 28 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 30 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) block (result i32) local.get $0 @@ -1991,12 +2215,12 @@ i32.const 24 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 5 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -2023,7 +2247,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/util/hash/hash16 (; 29 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hash16 (; 31 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) i32.const -2128831035 local.set $1 @@ -2045,7 +2269,7 @@ local.set $1 local.get $1 ) - (func $~lib/set/Set#find (; 30 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 32 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -2100,7 +2324,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -2119,7 +2343,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 32 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 34 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2233,13 +2457,53 @@ end end local.get $0 + local.tee $9 local.get $3 + local.tee $12 + local.get $9 + i32.load + local.tee $11 + i32.ne + if (result i32) + local.get $11 + if + local.get $11 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $12 + else + local.get $12 + end i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 + local.tee $9 local.get $5 + local.tee $11 + local.get $9 + i32.load offset=8 + local.tee $12 + i32.ne + if (result i32) + local.get $12 + if + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $11 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $11 + else + local.get $11 + end i32.store offset=8 local.get $0 local.get $4 @@ -2249,7 +2513,7 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/set/Set#add (; 33 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (; 35 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2351,11 +2615,11 @@ i32.store end ) - (func $~lib/set/Set#get:size (; 34 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#get:size (; 36 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/set/Set#delete (; 35 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#delete (; 37 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2432,7 +2696,7 @@ end i32.const 1 ) - (func $std/set/test (; 36 ;) (type $FUNCSIG$v) + (func $std/set/testNumeric (; 38 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -2455,8 +2719,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -2470,8 +2734,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -2493,8 +2757,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 12 + i32.const 128 + i32.const 13 i32.const 2 call $~lib/env/abort unreachable @@ -2515,8 +2779,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 16 + i32.const 128 + i32.const 17 i32.const 4 call $~lib/env/abort unreachable @@ -2530,8 +2794,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -2553,8 +2817,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 2 call $~lib/env/abort unreachable @@ -2575,8 +2839,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 24 + i32.const 128 + i32.const 25 i32.const 4 call $~lib/env/abort unreachable @@ -2592,8 +2856,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 26 + i32.const 128 + i32.const 27 i32.const 4 call $~lib/env/abort unreachable @@ -2615,8 +2879,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 2 call $~lib/env/abort unreachable @@ -2638,8 +2902,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 4 call $~lib/env/abort unreachable @@ -2653,8 +2917,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 34 + i32.const 128 + i32.const 35 i32.const 4 call $~lib/env/abort unreachable @@ -2670,8 +2934,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -2693,8 +2957,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 2 call $~lib/env/abort unreachable @@ -2708,18 +2972,41 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/set/Set#clear (; 37 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/set/Set#clear (; 39 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 + local.tee $1 i32.const 0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $2 + local.get $1 + i32.load + local.tee $3 + i32.ne + if (result i32) + local.get $3 + if + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $2 + else + local.get $2 + end i32.store local.get $0 i32.const 4 @@ -2727,9 +3014,29 @@ i32.sub i32.store offset=4 local.get $0 + local.tee $1 i32.const 0 i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + local.get $1 + i32.load offset=8 + local.tee $2 + i32.ne + if (result i32) + local.get $2 + if + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $3 + else + local.get $3 + end i32.store offset=8 local.get $0 i32.const 4 @@ -2741,7 +3048,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 38 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 40 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) block (result i32) local.get $0 @@ -2752,12 +3059,12 @@ i32.const 24 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 6 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -2784,7 +3091,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/set/Set#find (; 39 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 41 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -2837,7 +3144,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 40 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 42 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -2854,7 +3161,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 41 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 43 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2968,13 +3275,53 @@ end end local.get $0 + local.tee $9 local.get $3 + local.tee $12 + local.get $9 + i32.load + local.tee $11 + i32.ne + if (result i32) + local.get $11 + if + local.get $11 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $12 + else + local.get $12 + end i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 + local.tee $9 local.get $5 + local.tee $11 + local.get $9 + i32.load offset=8 + local.tee $12 + i32.ne + if (result i32) + local.get $12 + if + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $11 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $11 + else + local.get $11 + end i32.store offset=8 local.get $0 local.get $4 @@ -2984,7 +3331,7 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/set/Set#add (; 42 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (; 44 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3084,11 +3431,11 @@ i32.store end ) - (func $~lib/set/Set#get:size (; 43 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#get:size (; 45 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/set/Set#delete (; 44 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#delete (; 46 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3163,7 +3510,7 @@ end i32.const 1 ) - (func $std/set/test (; 45 ;) (type $FUNCSIG$v) + (func $std/set/testNumeric (; 47 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -3186,8 +3533,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -3201,8 +3548,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -3224,8 +3571,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 12 + i32.const 128 + i32.const 13 i32.const 2 call $~lib/env/abort unreachable @@ -3246,8 +3593,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 16 + i32.const 128 + i32.const 17 i32.const 4 call $~lib/env/abort unreachable @@ -3261,8 +3608,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -3284,8 +3631,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 2 call $~lib/env/abort unreachable @@ -3306,8 +3653,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 24 + i32.const 128 + i32.const 25 i32.const 4 call $~lib/env/abort unreachable @@ -3323,8 +3670,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 26 + i32.const 128 + i32.const 27 i32.const 4 call $~lib/env/abort unreachable @@ -3346,8 +3693,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 2 call $~lib/env/abort unreachable @@ -3369,8 +3716,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 4 call $~lib/env/abort unreachable @@ -3384,8 +3731,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 34 + i32.const 128 + i32.const 35 i32.const 4 call $~lib/env/abort unreachable @@ -3401,8 +3748,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -3424,8 +3771,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 2 call $~lib/env/abort unreachable @@ -3439,18 +3786,41 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/set/Set#clear (; 46 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/set/Set#clear (; 48 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 + local.tee $1 i32.const 0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $2 + local.get $1 + i32.load + local.tee $3 + i32.ne + if (result i32) + local.get $3 + if + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $2 + else + local.get $2 + end i32.store local.get $0 i32.const 4 @@ -3458,9 +3828,29 @@ i32.sub i32.store offset=4 local.get $0 + local.tee $1 i32.const 0 i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + local.get $1 + i32.load offset=8 + local.tee $2 + i32.ne + if (result i32) + local.get $2 + if + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $3 + else + local.get $3 + end i32.store offset=8 local.get $0 i32.const 4 @@ -3472,7 +3862,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 47 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 49 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) block (result i32) local.get $0 @@ -3483,12 +3873,12 @@ i32.const 24 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 7 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -3515,7 +3905,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/util/hash/hash32 (; 48 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hash32 (; 50 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) i32.const -2128831035 local.set $1 @@ -3557,7 +3947,7 @@ local.set $1 local.get $1 ) - (func $~lib/set/Set#find (; 49 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 51 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -3608,7 +3998,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 50 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 52 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -3623,7 +4013,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 51 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 53 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3737,13 +4127,53 @@ end end local.get $0 + local.tee $9 local.get $3 + local.tee $12 + local.get $9 + i32.load + local.tee $11 + i32.ne + if (result i32) + local.get $11 + if + local.get $11 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $12 + else + local.get $12 + end i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 + local.tee $9 local.get $5 + local.tee $11 + local.get $9 + i32.load offset=8 + local.tee $12 + i32.ne + if (result i32) + local.get $12 + if + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $11 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $11 + else + local.get $11 + end i32.store offset=8 local.get $0 local.get $4 @@ -3753,7 +4183,7 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/set/Set#add (; 52 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (; 54 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3851,11 +4281,11 @@ i32.store end ) - (func $~lib/set/Set#get:size (; 53 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#get:size (; 55 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/set/Set#delete (; 54 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#delete (; 56 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3928,7 +4358,7 @@ end i32.const 1 ) - (func $std/set/test (; 55 ;) (type $FUNCSIG$v) + (func $std/set/testNumeric (; 57 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -3951,8 +4381,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -3966,8 +4396,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -3989,8 +4419,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 12 + i32.const 128 + i32.const 13 i32.const 2 call $~lib/env/abort unreachable @@ -4011,8 +4441,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 16 + i32.const 128 + i32.const 17 i32.const 4 call $~lib/env/abort unreachable @@ -4026,8 +4456,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -4049,8 +4479,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 2 call $~lib/env/abort unreachable @@ -4071,8 +4501,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 24 + i32.const 128 + i32.const 25 i32.const 4 call $~lib/env/abort unreachable @@ -4088,8 +4518,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 26 + i32.const 128 + i32.const 27 i32.const 4 call $~lib/env/abort unreachable @@ -4111,8 +4541,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 2 call $~lib/env/abort unreachable @@ -4134,8 +4564,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 4 call $~lib/env/abort unreachable @@ -4149,8 +4579,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 34 + i32.const 128 + i32.const 35 i32.const 4 call $~lib/env/abort unreachable @@ -4166,8 +4596,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -4189,8 +4619,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 2 call $~lib/env/abort unreachable @@ -4204,18 +4634,41 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/set/Set#clear (; 56 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/set/Set#clear (; 58 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 + local.tee $1 i32.const 0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $2 + local.get $1 + i32.load + local.tee $3 + i32.ne + if (result i32) + local.get $3 + if + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $2 + else + local.get $2 + end i32.store local.get $0 i32.const 4 @@ -4223,9 +4676,29 @@ i32.sub i32.store offset=4 local.get $0 + local.tee $1 i32.const 0 i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + local.get $1 + i32.load offset=8 + local.tee $2 + i32.ne + if (result i32) + local.get $2 + if + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $3 + else + local.get $3 + end i32.store offset=8 local.get $0 i32.const 4 @@ -4237,7 +4710,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 57 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 59 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) block (result i32) local.get $0 @@ -4248,12 +4721,12 @@ i32.const 24 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 8 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -4280,7 +4753,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/set/Set#find (; 58 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 60 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -4331,7 +4804,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 59 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 61 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -4346,7 +4819,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 60 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 62 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4460,13 +4933,53 @@ end end local.get $0 + local.tee $9 local.get $3 + local.tee $12 + local.get $9 + i32.load + local.tee $11 + i32.ne + if (result i32) + local.get $11 + if + local.get $11 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $12 + else + local.get $12 + end i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 + local.tee $9 local.get $5 + local.tee $11 + local.get $9 + i32.load offset=8 + local.tee $12 + i32.ne + if (result i32) + local.get $12 + if + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $11 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $11 + else + local.get $11 + end i32.store offset=8 local.get $0 local.get $4 @@ -4476,7 +4989,7 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/set/Set#add (; 61 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (; 63 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4574,11 +5087,11 @@ i32.store end ) - (func $~lib/set/Set#get:size (; 62 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#get:size (; 64 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/set/Set#delete (; 63 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#delete (; 65 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4651,7 +5164,7 @@ end i32.const 1 ) - (func $std/set/test (; 64 ;) (type $FUNCSIG$v) + (func $std/set/testNumeric (; 66 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -4674,8 +5187,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -4689,8 +5202,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -4712,8 +5225,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 12 + i32.const 128 + i32.const 13 i32.const 2 call $~lib/env/abort unreachable @@ -4734,8 +5247,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 16 + i32.const 128 + i32.const 17 i32.const 4 call $~lib/env/abort unreachable @@ -4749,8 +5262,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -4772,8 +5285,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 2 call $~lib/env/abort unreachable @@ -4794,8 +5307,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 24 + i32.const 128 + i32.const 25 i32.const 4 call $~lib/env/abort unreachable @@ -4811,8 +5324,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 26 + i32.const 128 + i32.const 27 i32.const 4 call $~lib/env/abort unreachable @@ -4834,8 +5347,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 2 call $~lib/env/abort unreachable @@ -4857,8 +5370,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 4 call $~lib/env/abort unreachable @@ -4872,8 +5385,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 34 + i32.const 128 + i32.const 35 i32.const 4 call $~lib/env/abort unreachable @@ -4889,8 +5402,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -4912,8 +5425,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 2 call $~lib/env/abort unreachable @@ -4927,18 +5440,41 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/set/Set#clear (; 65 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/set/Set#clear (; 67 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 + local.tee $1 i32.const 0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $2 + local.get $1 + i32.load + local.tee $3 + i32.ne + if (result i32) + local.get $3 + if + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $2 + else + local.get $2 + end i32.store local.get $0 i32.const 4 @@ -4946,9 +5482,29 @@ i32.sub i32.store offset=4 local.get $0 + local.tee $1 i32.const 0 i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + local.get $1 + i32.load offset=8 + local.tee $2 + i32.ne + if (result i32) + local.get $2 + if + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $3 + else + local.get $3 + end i32.store offset=8 local.get $0 i32.const 4 @@ -4960,7 +5516,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 66 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 68 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) block (result i32) local.get $0 @@ -4971,12 +5527,12 @@ i32.const 24 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 9 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -5003,7 +5559,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/util/hash/hash64 (; 67 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/hash/hash64 (; 69 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5091,7 +5647,7 @@ local.set $3 local.get $3 ) - (func $~lib/set/Set#find (; 68 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 70 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -5142,7 +5698,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 69 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/set/Set#has (; 71 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) local.get $0 local.get $1 @@ -5157,7 +5713,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 70 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 72 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5272,13 +5828,53 @@ end end local.get $0 + local.tee $9 local.get $3 + local.tee $13 + local.get $9 + i32.load + local.tee $12 + i32.ne + if (result i32) + local.get $12 + if + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $13 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $13 + else + local.get $13 + end i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 + local.tee $9 local.get $5 + local.tee $12 + local.get $9 + i32.load offset=8 + local.tee $13 + i32.ne + if (result i32) + local.get $13 + if + local.get $13 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $12 + else + local.get $12 + end i32.store offset=8 local.get $0 local.get $4 @@ -5288,7 +5884,7 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/set/Set#add (; 71 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) + (func $~lib/set/Set#add (; 73 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) (local $2 i64) (local $3 i32) (local $4 i32) @@ -5387,11 +5983,11 @@ i32.store end ) - (func $~lib/set/Set#get:size (; 72 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#get:size (; 74 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/set/Set#delete (; 73 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/set/Set#delete (; 75 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) (local $3 i32) (local $4 i32) @@ -5465,7 +6061,7 @@ end i32.const 1 ) - (func $std/set/test (; 74 ;) (type $FUNCSIG$v) + (func $std/set/testNumeric (; 76 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i64) i32.const 0 @@ -5488,8 +6084,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -5503,8 +6099,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -5526,8 +6122,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 12 + i32.const 128 + i32.const 13 i32.const 2 call $~lib/env/abort unreachable @@ -5548,8 +6144,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 16 + i32.const 128 + i32.const 17 i32.const 4 call $~lib/env/abort unreachable @@ -5563,8 +6159,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -5586,8 +6182,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 2 call $~lib/env/abort unreachable @@ -5608,8 +6204,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 24 + i32.const 128 + i32.const 25 i32.const 4 call $~lib/env/abort unreachable @@ -5625,8 +6221,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 26 + i32.const 128 + i32.const 27 i32.const 4 call $~lib/env/abort unreachable @@ -5648,8 +6244,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 2 call $~lib/env/abort unreachable @@ -5671,8 +6267,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 4 call $~lib/env/abort unreachable @@ -5686,8 +6282,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 34 + i32.const 128 + i32.const 35 i32.const 4 call $~lib/env/abort unreachable @@ -5703,8 +6299,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -5726,8 +6322,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 2 call $~lib/env/abort unreachable @@ -5741,18 +6337,41 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/set/Set#clear (; 75 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/set/Set#clear (; 77 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 + local.tee $1 i32.const 0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $2 + local.get $1 + i32.load + local.tee $3 + i32.ne + if (result i32) + local.get $3 + if + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $2 + else + local.get $2 + end i32.store local.get $0 i32.const 4 @@ -5760,9 +6379,29 @@ i32.sub i32.store offset=4 local.get $0 + local.tee $1 i32.const 0 i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + local.get $1 + i32.load offset=8 + local.tee $2 + i32.ne + if (result i32) + local.get $2 + if + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $3 + else + local.get $3 + end i32.store offset=8 local.get $0 i32.const 4 @@ -5774,7 +6413,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 76 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 78 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) block (result i32) local.get $0 @@ -5785,12 +6424,12 @@ i32.const 24 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 10 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -5817,7 +6456,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/set/Set#find (; 77 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 79 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -5868,7 +6507,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 78 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/set/Set#has (; 80 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) local.get $0 local.get $1 @@ -5883,7 +6522,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 79 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 81 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5998,13 +6637,53 @@ end end local.get $0 + local.tee $9 local.get $3 + local.tee $13 + local.get $9 + i32.load + local.tee $12 + i32.ne + if (result i32) + local.get $12 + if + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $13 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $13 + else + local.get $13 + end i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 + local.tee $9 local.get $5 + local.tee $12 + local.get $9 + i32.load offset=8 + local.tee $13 + i32.ne + if (result i32) + local.get $13 + if + local.get $13 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $12 + else + local.get $12 + end i32.store offset=8 local.get $0 local.get $4 @@ -6014,7 +6693,7 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/set/Set#add (; 80 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) + (func $~lib/set/Set#add (; 82 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) (local $2 i64) (local $3 i32) (local $4 i32) @@ -6113,11 +6792,11 @@ i32.store end ) - (func $~lib/set/Set#get:size (; 81 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#get:size (; 83 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/set/Set#delete (; 82 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/set/Set#delete (; 84 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) (local $3 i32) (local $4 i32) @@ -6191,7 +6870,7 @@ end i32.const 1 ) - (func $std/set/test (; 83 ;) (type $FUNCSIG$v) + (func $std/set/testNumeric (; 85 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i64) i32.const 0 @@ -6214,8 +6893,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -6229,8 +6908,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -6252,8 +6931,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 12 + i32.const 128 + i32.const 13 i32.const 2 call $~lib/env/abort unreachable @@ -6274,8 +6953,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 16 + i32.const 128 + i32.const 17 i32.const 4 call $~lib/env/abort unreachable @@ -6289,8 +6968,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -6312,8 +6991,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 2 call $~lib/env/abort unreachable @@ -6334,8 +7013,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 24 + i32.const 128 + i32.const 25 i32.const 4 call $~lib/env/abort unreachable @@ -6351,8 +7030,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 26 + i32.const 128 + i32.const 27 i32.const 4 call $~lib/env/abort unreachable @@ -6374,8 +7053,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 2 call $~lib/env/abort unreachable @@ -6397,8 +7076,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 4 call $~lib/env/abort unreachable @@ -6412,8 +7091,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 34 + i32.const 128 + i32.const 35 i32.const 4 call $~lib/env/abort unreachable @@ -6429,8 +7108,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -6452,8 +7131,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 2 call $~lib/env/abort unreachable @@ -6467,18 +7146,41 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/set/Set#clear (; 84 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/set/Set#clear (; 86 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 + local.tee $1 i32.const 0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $2 + local.get $1 + i32.load + local.tee $3 + i32.ne + if (result i32) + local.get $3 + if + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $2 + else + local.get $2 + end i32.store local.get $0 i32.const 4 @@ -6486,9 +7188,29 @@ i32.sub i32.store offset=4 local.get $0 + local.tee $1 i32.const 0 i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + local.get $1 + i32.load offset=8 + local.tee $2 + i32.ne + if (result i32) + local.get $2 + if + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $3 + else + local.get $3 + end i32.store offset=8 local.get $0 i32.const 4 @@ -6500,7 +7222,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 85 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 87 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) block (result i32) local.get $0 @@ -6511,12 +7233,12 @@ i32.const 24 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 11 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -6543,7 +7265,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/set/Set#find (; 86 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 88 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -6594,7 +7316,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 87 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/set/Set#has (; 89 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) (local $2 f32) local.get $0 local.get $1 @@ -6610,7 +7332,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 88 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 90 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6726,13 +7448,53 @@ end end local.get $0 + local.tee $9 local.get $3 + local.tee $13 + local.get $9 + i32.load + local.tee $12 + i32.ne + if (result i32) + local.get $12 + if + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $13 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $13 + else + local.get $13 + end i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 + local.tee $9 local.get $5 + local.tee $12 + local.get $9 + i32.load offset=8 + local.tee $13 + i32.ne + if (result i32) + local.get $13 + if + local.get $13 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $12 + else + local.get $12 + end i32.store offset=8 local.get $0 local.get $4 @@ -6742,7 +7504,7 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/set/Set#add (; 89 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32) + (func $~lib/set/Set#add (; 91 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32) (local $2 f32) (local $3 i32) (local $4 i32) @@ -6842,11 +7604,11 @@ i32.store end ) - (func $~lib/set/Set#get:size (; 90 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#get:size (; 92 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/set/Set#delete (; 91 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/set/Set#delete (; 93 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) (local $2 f32) (local $3 i32) (local $4 i32) @@ -6921,7 +7683,7 @@ end i32.const 1 ) - (func $std/set/test (; 92 ;) (type $FUNCSIG$v) + (func $std/set/testNumeric (; 94 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 f32) i32.const 0 @@ -6944,8 +7706,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -6959,8 +7721,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -6982,8 +7744,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 12 + i32.const 128 + i32.const 13 i32.const 2 call $~lib/env/abort unreachable @@ -7004,8 +7766,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 16 + i32.const 128 + i32.const 17 i32.const 4 call $~lib/env/abort unreachable @@ -7019,8 +7781,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -7042,8 +7804,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 2 call $~lib/env/abort unreachable @@ -7064,8 +7826,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 24 + i32.const 128 + i32.const 25 i32.const 4 call $~lib/env/abort unreachable @@ -7081,8 +7843,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 26 + i32.const 128 + i32.const 27 i32.const 4 call $~lib/env/abort unreachable @@ -7104,8 +7866,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 2 call $~lib/env/abort unreachable @@ -7127,8 +7889,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 4 call $~lib/env/abort unreachable @@ -7142,8 +7904,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 34 + i32.const 128 + i32.const 35 i32.const 4 call $~lib/env/abort unreachable @@ -7159,8 +7921,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -7182,8 +7944,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 2 call $~lib/env/abort unreachable @@ -7197,18 +7959,41 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/set/Set#clear (; 93 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/set/Set#clear (; 95 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 + local.tee $1 i32.const 0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $2 + local.get $1 + i32.load + local.tee $3 + i32.ne + if (result i32) + local.get $3 + if + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $2 + else + local.get $2 + end i32.store local.get $0 i32.const 4 @@ -7216,9 +8001,29 @@ i32.sub i32.store offset=4 local.get $0 + local.tee $1 i32.const 0 i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + local.get $1 + i32.load offset=8 + local.tee $2 + i32.ne + if (result i32) + local.get $2 + if + local.get $2 + local.get $1 + call $~lib/collector/dummy/__ref_unlink + end + local.get $3 + local.get $1 + call $~lib/collector/dummy/__ref_link + local.get $3 + else + local.get $3 + end i32.store offset=8 local.get $0 i32.const 4 @@ -7230,7 +8035,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 94 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 96 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) block (result i32) local.get $0 @@ -7241,12 +8046,12 @@ i32.const 24 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 12 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -7273,7 +8078,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/set/Set#find (; 95 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 97 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -7324,7 +8129,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 96 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/set/Set#has (; 98 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 f64) local.get $0 local.get $1 @@ -7340,7 +8145,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 97 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 99 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7456,13 +8261,53 @@ end end local.get $0 + local.tee $9 local.get $3 + local.tee $13 + local.get $9 + i32.load + local.tee $12 + i32.ne + if (result i32) + local.get $12 + if + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $13 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $13 + else + local.get $13 + end i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 + local.tee $9 local.get $5 + local.tee $12 + local.get $9 + i32.load offset=8 + local.tee $13 + i32.ne + if (result i32) + local.get $13 + if + local.get $13 + local.get $9 + call $~lib/collector/dummy/__ref_unlink + end + local.get $12 + local.get $9 + call $~lib/collector/dummy/__ref_link + local.get $12 + else + local.get $12 + end i32.store offset=8 local.get $0 local.get $4 @@ -7472,7 +8317,7 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/set/Set#add (; 98 ;) (type $FUNCSIG$vid) (param $0 i32) (param $1 f64) + (func $~lib/set/Set#add (; 100 ;) (type $FUNCSIG$vid) (param $0 i32) (param $1 f64) (local $2 f64) (local $3 i32) (local $4 i32) @@ -7572,11 +8417,11 @@ i32.store end ) - (func $~lib/set/Set#get:size (; 99 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#get:size (; 101 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/set/Set#delete (; 100 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/set/Set#delete (; 102 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 f64) (local $3 i32) (local $4 i32) @@ -7651,7 +8496,7 @@ end i32.const 1 ) - (func $std/set/test (; 101 ;) (type $FUNCSIG$v) + (func $std/set/testNumeric (; 103 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 f64) i32.const 0 @@ -7674,8 +8519,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 8 + i32.const 128 + i32.const 9 i32.const 4 call $~lib/env/abort unreachable @@ -7689,8 +8534,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 10 + i32.const 128 + i32.const 11 i32.const 4 call $~lib/env/abort unreachable @@ -7712,8 +8557,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 12 + i32.const 128 + i32.const 13 i32.const 2 call $~lib/env/abort unreachable @@ -7734,8 +8579,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 16 + i32.const 128 + i32.const 17 i32.const 4 call $~lib/env/abort unreachable @@ -7749,8 +8594,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 18 + i32.const 128 + i32.const 19 i32.const 4 call $~lib/env/abort unreachable @@ -7772,8 +8617,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 20 + i32.const 128 + i32.const 21 i32.const 2 call $~lib/env/abort unreachable @@ -7794,8 +8639,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 24 + i32.const 128 + i32.const 25 i32.const 4 call $~lib/env/abort unreachable @@ -7811,8 +8656,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 26 + i32.const 128 + i32.const 27 i32.const 4 call $~lib/env/abort unreachable @@ -7834,8 +8679,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 28 + i32.const 128 + i32.const 29 i32.const 2 call $~lib/env/abort unreachable @@ -7857,8 +8702,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 32 + i32.const 128 + i32.const 33 i32.const 4 call $~lib/env/abort unreachable @@ -7872,8 +8717,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 34 + i32.const 128 + i32.const 35 i32.const 4 call $~lib/env/abort unreachable @@ -7889,8 +8734,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 36 + i32.const 128 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -7912,8 +8757,8 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 38 + i32.const 128 + i32.const 39 i32.const 2 call $~lib/env/abort unreachable @@ -7927,14 +8772,14 @@ i32.eqz if i32.const 0 - i32.const 104 - i32.const 42 + i32.const 128 + i32.const 43 i32.const 2 call $~lib/env/abort unreachable end ) - (func $start:std/set (; 102 ;) (type $FUNCSIG$v) + (func $start:std/set (; 104 ;) (type $FUNCSIG$v) global.get $~lib/memory/HEAP_BASE i32.const 7 i32.add @@ -7945,20 +8790,20 @@ global.set $~lib/allocator/arena/startOffset global.get $~lib/allocator/arena/startOffset global.set $~lib/allocator/arena/offset - call $std/set/test - call $std/set/test - call $std/set/test - call $std/set/test - call $std/set/test - call $std/set/test - call $std/set/test - call $std/set/test - call $std/set/test - call $std/set/test + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric ) - (func $start (; 103 ;) (type $FUNCSIG$v) + (func $start (; 105 ;) (type $FUNCSIG$v) call $start:std/set ) - (func $null (; 104 ;) (type $FUNCSIG$v) + (func $null (; 106 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/static-array.optimized.wat b/tests/compiler/std/static-array.optimized.wat index da37a58e..c2e05786 100644 --- a/tests/compiler/std/static-array.optimized.wat +++ b/tests/compiler/std/static-array.optimized.wat @@ -36,7 +36,7 @@ if i32.const 0 i32.const 240 - i32.const 100 + i32.const 98 i32.const 61 call $~lib/env/abort unreachable @@ -260,7 +260,7 @@ end end ) - (func $~lib/runtime/doReallocate (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/runtime/reallocate (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -329,7 +329,7 @@ if i32.const 0 i32.const 240 - i32.const 14 + i32.const 13 i32.const 64 call $~lib/env/abort unreachable @@ -341,7 +341,7 @@ local.get $1 i32.shl local.tee $1 - call $~lib/runtime/doReallocate + call $~lib/runtime/reallocate local.set $2 local.get $2 local.get $3 @@ -390,7 +390,7 @@ if i32.const 0 i32.const 240 - i32.const 100 + i32.const 98 i32.const 61 call $~lib/env/abort unreachable @@ -434,7 +434,7 @@ if i32.const 0 i32.const 240 - i32.const 100 + i32.const 98 i32.const 61 call $~lib/env/abort unreachable @@ -478,7 +478,7 @@ if i32.const 0 i32.const 240 - i32.const 100 + i32.const 98 i32.const 61 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/static-array.untouched.wat b/tests/compiler/std/static-array.untouched.wat index 29eefd5c..170389a6 100644 --- a/tests/compiler/std/static-array.untouched.wat +++ b/tests/compiler/std/static-array.untouched.wat @@ -30,7 +30,6 @@ (global $std/static-array/I i32 (i32.const 80)) (global $std/static-array/f i32 (i32.const 120)) (global $std/static-array/F i32 (i32.const 168)) - (global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0)) (global $~lib/runtime/HEADER_SIZE i32 (i32.const 8)) (global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) (global $~lib/runtime/MAX_BYTELENGTH i32 (i32.const 1073741816)) @@ -42,7 +41,16 @@ local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__get (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) + (func $~lib/array/Array#__get (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -52,20 +60,16 @@ if i32.const 0 i32.const 240 - i32.const 100 + i32.const 98 i32.const 61 call $~lib/env/abort unreachable end local.get $0 - i32.load offset=4 local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load + call $~lib/array/Array#__unchecked_get ) - (func $~lib/runtime/ADJUSTOBLOCK (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/ADJUSTOBLOCK (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 1 i32.const 32 local.get $0 @@ -77,10 +81,10 @@ i32.sub i32.shl ) - (func $~lib/memory/memory.allocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/memory/memory.allocate (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) unreachable ) - (func $~lib/util/memory/memcpy (; 5 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (; 6 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1281,7 +1285,7 @@ i32.store8 end ) - (func $~lib/memory/memory.copy (; 6 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 7 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1512,7 +1516,7 @@ end end ) - (func $~lib/memory/memory.fill (; 7 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.fill (; 8 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1769,10 +1773,10 @@ end end ) - (func $~lib/memory/memory.free (; 8 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/memory/memory.free (; 9 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) - (func $~lib/runtime/doReallocate (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/runtime/reallocate (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1837,7 +1841,7 @@ if i32.const 0 i32.const 280 - i32.const 133 + i32.const 125 i32.const 8 call $~lib/env/abort unreachable @@ -1869,7 +1873,7 @@ i32.store offset=4 local.get $0 ) - (func $~lib/array/ensureCapacity (; 10 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/ensureCapacity (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1889,7 +1893,7 @@ if i32.const 0 i32.const 240 - i32.const 14 + i32.const 13 i32.const 64 call $~lib/env/abort unreachable @@ -1908,7 +1912,7 @@ local.set $5 local.get $6 local.get $5 - call $~lib/runtime/doReallocate + call $~lib/runtime/reallocate end local.set $5 local.get $5 @@ -1927,17 +1931,7 @@ i32.store offset=8 end ) - (func $~lib/array/Array#__set (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - local.set $3 - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - call $~lib/array/ensureCapacity + (func $~lib/array/Array#__unchecked_set (; 12 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 local.get $1 @@ -1946,6 +1940,22 @@ i32.add local.get $2 i32.store + ) + (func $~lib/array/Array#__set (; 13 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=12 + local.set $3 + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + call $~lib/array/ensureCapacity + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__unchecked_set local.get $1 local.get $3 i32.ge_s @@ -1957,25 +1967,11 @@ i32.store offset=12 end ) - (func $~lib/array/Array#get:length (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__get (; 13 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.ge_u - if - i32.const 0 - i32.const 240 - i32.const 100 - i32.const 61 - call $~lib/env/abort - unreachable - end + (func $~lib/array/Array#__unchecked_get (; 15 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $0 i32.load offset=4 local.get $1 @@ -1984,17 +1980,26 @@ i32.add i64.load ) - (func $~lib/array/Array#__set (; 14 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) + (func $~lib/array/Array#__get (; 16 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + local.get $1 local.get $0 - i32.load offset=12 - local.set $3 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.ge_u + if + i32.const 0 + i32.const 240 + i32.const 98 + i32.const 61 + call $~lib/env/abort + unreachable + end local.get $0 local.get $1 - i32.const 1 - i32.add - i32.const 3 - call $~lib/array/ensureCapacity + call $~lib/array/Array#__unchecked_get + ) + (func $~lib/array/Array#__unchecked_set (; 17 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $0 i32.load offset=4 local.get $1 @@ -2003,6 +2008,22 @@ i32.add local.get $2 i64.store + ) + (func $~lib/array/Array#__set (; 18 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + local.get $0 + i32.load offset=12 + local.set $3 + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 3 + call $~lib/array/ensureCapacity + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__unchecked_set local.get $1 local.get $3 i32.ge_s @@ -2014,25 +2035,11 @@ i32.store offset=12 end ) - (func $~lib/array/Array#get:length (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__get (; 16 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 0 - i32.const 240 - i32.const 100 - i32.const 61 - call $~lib/env/abort - unreachable - end + (func $~lib/array/Array#__unchecked_get (; 20 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) local.get $0 i32.load offset=4 local.get $1 @@ -2041,7 +2048,36 @@ i32.add f32.load ) - (func $~lib/array/Array#__set (; 17 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) + (func $~lib/array/Array#__get (; 21 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 0 + i32.const 240 + i32.const 98 + i32.const 61 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + ) + (func $~lib/array/Array#__unchecked_set (; 22 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + f32.store + ) + (func $~lib/array/Array#__set (; 23 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) local.get $0 i32.load offset=12 @@ -2053,13 +2089,9 @@ i32.const 2 call $~lib/array/ensureCapacity local.get $0 - i32.load offset=4 local.get $1 - i32.const 2 - i32.shl - i32.add local.get $2 - f32.store + call $~lib/array/Array#__unchecked_set local.get $1 local.get $3 i32.ge_s @@ -2071,11 +2103,20 @@ i32.store offset=12 end ) - (func $~lib/array/Array#get:length (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 24 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__get (; 19 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/array/Array#__unchecked_get (; 25 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + ) + (func $~lib/array/Array#__get (; 26 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) local.get $1 local.get $0 i32.load offset=8 @@ -2085,20 +2126,26 @@ if i32.const 0 i32.const 240 - i32.const 100 + i32.const 98 i32.const 61 call $~lib/env/abort unreachable end + local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + ) + (func $~lib/array/Array#__unchecked_set (; 27 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) local.get $0 i32.load offset=4 local.get $1 i32.const 3 i32.shl i32.add - f64.load + local.get $2 + f64.store ) - (func $~lib/array/Array#__set (; 20 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) + (func $~lib/array/Array#__set (; 28 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) local.get $0 i32.load offset=12 @@ -2110,13 +2157,9 @@ i32.const 3 call $~lib/array/ensureCapacity local.get $0 - i32.load offset=4 local.get $1 - i32.const 3 - i32.shl - i32.add local.get $2 - f64.store + call $~lib/array/Array#__unchecked_set local.get $1 local.get $3 i32.ge_s @@ -2128,7 +2171,7 @@ i32.store offset=12 end ) - (func $start:std/static-array (; 21 ;) (type $FUNCSIG$v) + (func $start:std/static-array (; 29 ;) (type $FUNCSIG$v) global.get $std/static-array/i call $~lib/array/Array#get:length i32.const 2 @@ -2366,9 +2409,9 @@ unreachable end ) - (func $start (; 22 ;) (type $FUNCSIG$v) + (func $start (; 30 ;) (type $FUNCSIG$v) call $start:std/static-array ) - (func $null (; 23 ;) (type $FUNCSIG$v) + (func $null (; 31 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/string-utf8.optimized.wat b/tests/compiler/std/string-utf8.optimized.wat index 0c17afed..b4144633 100644 --- a/tests/compiler/std/string-utf8.optimized.wat +++ b/tests/compiler/std/string-utf8.optimized.wat @@ -3,7 +3,6 @@ (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$v (func)) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) @@ -395,7 +394,7 @@ i32.store8 local.get $5 ) - (func $~lib/runtime/doAllocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/allocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) i32.const 1 i32.const 32 @@ -1507,32 +1506,38 @@ end end ) - (func $~lib/runtime/assertUnregistered (; 7 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/register (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) local.get $0 i32.const 228 i32.le_u if i32.const 0 i32.const 136 - i32.const 313 - i32.const 2 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 i32.const 8 i32.sub + local.tee $1 i32.load i32.const -1520547049 i32.ne if i32.const 0 i32.const 136 - i32.const 314 - i32.const 2 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end + local.get $1 + i32.const 1 + i32.store + local.get $0 ) (func $~lib/string/String.fromUTF8 (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1596,7 +1601,7 @@ if i32.const 0 i32.const 96 - i32.const 448 + i32.const 447 i32.const 8 call $~lib/env/abort unreachable @@ -1643,7 +1648,7 @@ if i32.const 0 i32.const 96 - i32.const 452 + i32.const 451 i32.const 8 call $~lib/env/abort unreachable @@ -1716,7 +1721,7 @@ if i32.const 0 i32.const 96 - i32.const 464 + i32.const 463 i32.const 8 call $~lib/env/abort unreachable @@ -1769,25 +1774,19 @@ if i32.const 0 i32.const 96 - i32.const 473 + i32.const 472 i32.const 4 call $~lib/env/abort unreachable end local.get $4 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.tee $3 local.get $5 local.get $4 call $~lib/memory/memory.copy local.get $3 - call $~lib/runtime/assertUnregistered - local.get $3 - i32.const 8 - i32.sub - i32.const 1 - i32.store - local.get $3 + call $~lib/runtime/register ) (func $~lib/util/string/compareImpl (; 9 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) diff --git a/tests/compiler/std/string-utf8.untouched.wat b/tests/compiler/std/string-utf8.untouched.wat index d2237c0f..07c3f866 100644 --- a/tests/compiler/std/string-utf8.untouched.wat +++ b/tests/compiler/std/string-utf8.untouched.wat @@ -20,7 +20,6 @@ (table $0 1 funcref) (elem (i32.const 0) $null) (global $std/string-utf8/str (mut i32) (i32.const 16)) - (global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0)) (global $~lib/runtime/HEADER_SIZE i32 (i32.const 8)) (global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) (global $std/string-utf8/len (mut i32) (i32.const 0)) @@ -467,7 +466,7 @@ i32.sub i32.shl ) - (func $~lib/runtime/doAllocate (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/allocate (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/runtime/ADJUSTOBLOCK @@ -1920,7 +1919,8 @@ local.get $0 local.set $1 ) - (func $~lib/runtime/assertUnregistered (; 10 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/register (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 global.get $~lib/memory/HEAP_BASE i32.gt_u @@ -1928,14 +1928,16 @@ if i32.const 0 i32.const 136 - i32.const 313 - i32.const 2 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 global.get $~lib/runtime/HEADER_SIZE i32.sub + local.set $2 + local.get $2 i32.load global.get $~lib/runtime/HEADER_MAGIC i32.eq @@ -1943,23 +1945,17 @@ if i32.const 0 i32.const 136 - i32.const 314 - i32.const 2 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $~lib/runtime/doRegister (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/runtime/assertUnregistered - local.get $0 - global.get $~lib/runtime/HEADER_SIZE - i32.sub + local.get $2 local.get $1 i32.store local.get $0 ) - (func $~lib/string/String.fromUTF8 (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.fromUTF8 (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2036,7 +2032,7 @@ if i32.const 0 i32.const 96 - i32.const 448 + i32.const 447 i32.const 8 call $~lib/env/abort unreachable @@ -2090,7 +2086,7 @@ if i32.const 0 i32.const 96 - i32.const 452 + i32.const 451 i32.const 8 call $~lib/env/abort unreachable @@ -2185,7 +2181,7 @@ if i32.const 0 i32.const 96 - i32.const 464 + i32.const 463 i32.const 8 call $~lib/env/abort unreachable @@ -2248,7 +2244,7 @@ if i32.const 0 i32.const 96 - i32.const 473 + i32.const 472 i32.const 4 call $~lib/env/abort unreachable @@ -2257,7 +2253,7 @@ local.get $4 local.set $5 local.get $5 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $7 local.get $7 @@ -2271,10 +2267,10 @@ local.set $5 local.get $5 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end ) - (func $~lib/util/string/compareImpl (; 13 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (func $~lib/util/string/compareImpl (; 12 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -2327,7 +2323,7 @@ end local.get $5 ) - (func $~lib/string/String.__eq (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -2371,7 +2367,7 @@ call $~lib/util/string/compareImpl i32.eqz ) - (func $start:std/string-utf8 (; 15 ;) (type $FUNCSIG$v) + (func $start:std/string-utf8 (; 14 ;) (type $FUNCSIG$v) global.get $std/string-utf8/str call $~lib/string/String#get:lengthUTF8 global.set $std/string-utf8/len @@ -2638,9 +2634,9 @@ global.get $std/string-utf8/ptr call $~lib/memory/memory.free ) - (func $start (; 16 ;) (type $FUNCSIG$v) + (func $start (; 15 ;) (type $FUNCSIG$v) call $start:std/string-utf8 ) - (func $null (; 17 ;) (type $FUNCSIG$v) + (func $null (; 16 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index 3e975099..98c1e44b 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -17,164 +17,317 @@ (type $FUNCSIG$vii (func (param i32 i32))) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\01\00\00\00 \00\00\00h\00i\00,\00 \00I\00\'\00m\00 \00a\00 \00s\00t\00r\00i\00n\00g") - (data (i32.const 48) "\01\00\00\00\1a\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") - (data (i32.const 88) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") - (data (i32.const 128) "\01\00\00\00\02") - (data (i32.const 144) "\01\00\00\00\02\00\00\006") - (data (i32.const 160) "\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") - (data (i32.const 200) "\01\00\00\00\04\00\00\004\d8\06\df") - (data (i32.const 216) "\01\00\00\00\04\00\00\00h\00i") - (data (i32.const 232) "\01\00\00\00\08\00\00\00n\00u\00l\00l") - (data (i32.const 248) "\01\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g") - (data (i32.const 272) "\01\00\00\00\06\00\00\00I\00\'\00m") - (data (i32.const 288) "\01\00\00\00\02\00\00\00 ") - (data (i32.const 304) "\01") - (data (i32.const 312) "\01\00\00\00\06\00\00\00 \00 \00 ") - (data (i32.const 328) "\01\00\00\00\02\00\00\00a") - (data (i32.const 344) "\01\00\00\00\06\00\00\00a\00b\00c") - (data (i32.const 360) "\01\00\00\00\n\00\00\00 \00 \00a\00b\00c") - (data (i32.const 384) "\01\00\00\00\06\00\00\001\002\003") - (data (i32.const 400) "\01\00\00\00\0c\00\00\001\002\003\00a\00b\00c") - (data (i32.const 424) "\01\00\00\00\10\00\00\001\002\003\001\002\00a\00b\00c") - (data (i32.const 448) "\01\00\00\00\n\00\00\00a\00b\00c\00 \00 ") - (data (i32.const 472) "\01\00\00\00\0c\00\00\00a\00b\00c\00a\00b\00c") - (data (i32.const 496) "\01\00\00\00\10\00\00\00a\00b\00c\00a\00b\00c\00a\00b") - (data (i32.const 520) "\01\00\00\00\02\00\00\00,") - (data (i32.const 536) "\01\00\00\00\02\00\00\00x") - (data (i32.const 552) "\01\00\00\00\06\00\00\00,\00 \00I") - (data (i32.const 568) "\01\00\00\00\02\00\00\00g") - (data (i32.const 584) "\01\00\00\00\02\00\00\00i") - (data (i32.const 600) "\01\00\00\00\02\00\00\000") - (data (i32.const 616) "\01\00\00\00\02\00\00\001") - (data (i32.const 632) "\01\00\00\00\n\00\00\000\00b\001\000\001") - (data (i32.const 656) "\01\00\00\00\n\00\00\000\00o\007\000\007") - (data (i32.const 680) "\01\00\00\00\n\00\00\000\00x\00f\000\00f") - (data (i32.const 704) "\01\00\00\00\n\00\00\000\00x\00F\000\00F") - (data (i32.const 728) "\01\00\00\00\06\00\00\000\001\001") - (data (i32.const 744) "\01\00\00\00\08\00\00\000\00x\001\00g") - (data (i32.const 760) "\01\00\00\00\06\00\00\000\00.\001") - (data (i32.const 776) "\01\00\00\00\06\00\00\00.\002\005") - (data (i32.const 792) "\01\00\00\00\10\00\00\00.\001\00f\00o\00o\00b\00a\00r") - (data (i32.const 816) "\01\00\00\00\02\00\00\00b") - (data (i32.const 832) "\01\00\00\00\04\00\00\00a\00b") - (data (i32.const 848) "\01\00\00\00\08\00\00\00k\00e\00y\001") - (data (i32.const 864) "\01\00\00\00\08\00\00\00k\00e\00y\002") - (data (i32.const 880) "\01\00\00\00\06\00\00\00k\00e\001") - (data (i32.const 896) "\01\00\00\00\06\00\00\00k\00e\002") - (data (i32.const 912) "\01\00\00\00\n\00\00\00k\00e\00y\001\002") - (data (i32.const 936) "\01\00\00\00\n\00\00\00k\00e\00y\001\001") - (data (i32.const 960) "\01\00\00\00\0e\00\00\00\a40\ed0\cf0\cb0\db0\d80\c80") - (data (i32.const 984) "\01\00\00\00\0e\00\00\00\a60\f00\ce0\aa0\af0\e40\de0") - (data (i32.const 1008) "\01\00\00\00\16\00\00\00D\00\19 f\00h\00u\00a\00s\00c\00a\00i\00l") - (data (i32.const 1040) "\01\00\00\00\14\00\00\00D\00\19 \1f\1eu\00a\00s\00c\00a\00i\00l") - (data (i32.const 1072) "\01\00\00\00\04\00\00\00b\00a") - (data (i32.const 1088) "\01\00\00\00\04\00\00\00a\00a") - (data (i32.const 1104) "\01\00\00\00\06\00\00\00a\00a\00a") - (data (i32.const 1120) "\01\00\00\00\10\00\00\00a\00b\00a\00b\00a\00b\00a\00b") - (data (i32.const 1144) "\01\00\00\00\n\00\00\00a\00a\00a\00a\00a") - (data (i32.const 1168) "\01\00\00\00\0c\00\00\00a\00a\00a\00a\00a\00a") - (data (i32.const 1192) "\01\00\00\00\0e\00\00\00a\00a\00a\00a\00a\00a\00a") - (data (i32.const 1216) "\01\00\00\00\1c\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n") - (data (i32.const 1256) "\01\00\00\00\02\00\00\00n") - (data (i32.const 1272) "\01\00\00\00\n\00\00\00j\00k\00l\00m\00n") - (data (i32.const 1296) "\01\00\00\00\n\00\00\00c\00d\00e\00f\00g") - (data (i32.const 1320) "\01\00\00\00\n\00\00\00d\00e\00f\00g\00h") - (data (i32.const 1344) "\01\00\00\00\1a\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m") - (data (i32.const 1384) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1424) "\01\00\00\00\n\00\00\00a\00,\00b\00,\00c") - (data (i32.const 1448) "\01\00\00\00\02\00\00\00.") - (data (i32.const 1464) "\01\00\00\00\02\00\00\00c") - (data (i32.const 1480) "\01\00\00\00\0e\00\00\00a\00,\00 \00b\00,\00 \00c") - (data (i32.const 1504) "\01\00\00\00\04\00\00\00,\00 ") - (data (i32.const 1520) "\01\00\00\00\0c\00\00\00a\00,\00b\00,\00,\00c") - (data (i32.const 1544) "\01\00\00\00\0c\00\00\00,\00a\00,\00b\00,\00c") - (data (i32.const 1568) "\01\00\00\00\0c\00\00\00a\00,\00b\00,\00c\00,") - (data (i32.const 1592) "\03\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") - (data (i32.const 2000) "\04\00\00\00\10\00\00\00@\06\00\00@\06\00\00\90\01\00\00d") - (data (i32.const 2024) "\01\00\00\00\02\00\00\008") - (data (i32.const 2040) "\01\00\00\00\n\00\00\00-\001\000\000\000") - (data (i32.const 2064) "\01\00\00\00\08\00\00\001\002\003\004") - (data (i32.const 2080) "\01\00\00\00\n\00\00\001\002\003\004\005") - (data (i32.const 2104) "\01\00\00\00\0c\00\00\001\002\003\004\005\006") - (data (i32.const 2128) "\01\00\00\00\0e\00\00\001\001\001\001\001\001\001") - (data (i32.const 2152) "\01\00\00\00\0e\00\00\001\002\003\004\005\006\007") - (data (i32.const 2176) "\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\006") - (data (i32.const 2208) "\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\007") - (data (i32.const 2240) "\01\00\00\00\16\00\00\00-\002\001\004\007\004\008\003\006\004\008") - (data (i32.const 2272) "\01\00\00\00\04\00\00\00-\001") - (data (i32.const 2288) "\01\00\00\00\08\00\00\001\000\000\000") - (data (i32.const 2304) "\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\008") - (data (i32.const 2336) "\01\00\00\00\14\00\00\004\002\009\004\009\006\007\002\009\005") - (data (i32.const 2368) "\01\00\00\00\10\00\00\009\009\009\009\009\009\009\009") - (data (i32.const 2392) "\01\00\00\00\12\00\00\001\000\000\000\000\000\000\000\000") - (data (i32.const 2424) "\01\00\00\00\16\00\00\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 2456) "\01\00\00\00\18\00\00\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 2488) "\01\00\00\00\1e\00\00\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 2528) "\01\00\00\00 \00\00\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 2568) "\01\00\00\00\"\00\00\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 2616) "\01\00\00\00(\00\00\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005") - (data (i32.const 2664) "\01\00\00\00\n\00\00\00-\001\002\003\004") - (data (i32.const 2688) "\01\00\00\00\16\00\00\00-\004\002\009\004\009\006\007\002\009\005") - (data (i32.const 2720) "\01\00\00\00\18\00\00\00-\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 2752) "\01\00\00\00\1a\00\00\00-\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 2792) "\01\00\00\00 \00\00\00-\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 2832) "\01\00\00\00$\00\00\00-\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 2880) "\01\00\00\00&\00\00\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007") - (data (i32.const 2928) "\01\00\00\00(\00\00\00-\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\008") - (data (i32.const 2976) "\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 2992) "\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 3008) "\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 3040) "\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 3064) "\03\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 (; 18 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) + (func $~lib/util/string/parse (; 17 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) (local $1 i32) (local $2 i32) (local $3 i32) @@ -2045,7 +2202,7 @@ (local $5 f64) (local $6 f64) local.get $0 - i32.const 8 + i32.const 16 i32.sub i32.load offset=4 i32.const 1 @@ -2274,7 +2431,7 @@ local.get $5 f64.mul ) - (func $~lib/string/parseFloat (; 19 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) + (func $~lib/string/parseFloat (; 18 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) (local $1 i32) (local $2 i32) (local $3 i32) @@ -2282,7 +2439,7 @@ (local $5 f64) (local $6 f64) local.get $0 - i32.const 8 + i32.const 16 i32.sub i32.load offset=4 i32.const 1 @@ -2385,8 +2542,8 @@ end if i32.const 0 - i32.const 168 - i32.const 570 + i32.const 216 + i32.const 569 i32.const 10 call $~lib/env/abort unreachable @@ -2445,16 +2602,16 @@ local.get $4 f64.mul ) - (func $~lib/string/String#concat (; 20 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) local.get $1 - i32.const 240 + i32.const 312 local.get $1 select local.tee $1 - i32.const 8 + i32.const 16 i32.sub i32.load offset=4 i32.const 1 @@ -2463,7 +2620,7 @@ i32.shl local.tee $4 local.get $0 - i32.const 8 + i32.const 16 i32.sub i32.load offset=4 i32.const 1 @@ -2475,11 +2632,11 @@ local.tee $2 i32.eqz if - i32.const 312 + i32.const 416 return end local.get $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.tee $2 local.get $0 local.get $3 @@ -2492,23 +2649,23 @@ call $~lib/memory/memory.copy local.get $2 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register ) - (func $~lib/string/String.__concat (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 20 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.const 240 + i32.const 312 local.get $0 select local.get $1 call $~lib/string/String#concat ) - (func $~lib/string/String.__ne (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__ne (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/string/String.__eq i32.eqz ) - (func $~lib/string/String.__gt (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__gt (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) block (result i32) @@ -2536,14 +2693,14 @@ return end local.get $1 - i32.const 8 + i32.const 16 i32.sub i32.load offset=4 i32.const 1 i32.shr_u local.set $3 local.get $0 - i32.const 8 + i32.const 16 i32.sub i32.load offset=4 i32.const 1 @@ -2573,7 +2730,7 @@ i32.const 0 i32.gt_s ) - (func $~lib/string/String.__lt (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__lt (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) block (result i32) @@ -2601,14 +2758,14 @@ return end local.get $0 - i32.const 8 + i32.const 16 i32.sub i32.load offset=4 i32.const 1 i32.shr_u local.set $2 local.get $1 - i32.const 8 + i32.const 16 i32.sub i32.load offset=4 i32.const 1 @@ -2638,33 +2795,33 @@ i32.const 0 i32.lt_s ) - (func $~lib/string/String.__gte (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__gte (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/string/String.__lt i32.eqz ) - (func $~lib/string/String.__lte (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 312 + (func $~lib/string/String.__lte (; 25 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.const 416 local.get $0 call $~lib/string/String.__gt i32.eqz ) - (func $~lib/string/String#repeat (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#repeat (; 26 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 i32.eqz if i32.const 0 - i32.const 168 - i32.const 321 + i32.const 216 + i32.const 323 i32.const 4 call $~lib/env/abort unreachable end local.get $0 - i32.const 8 + i32.const 16 i32.sub i32.load offset=4 i32.const 1 @@ -2687,8 +2844,8 @@ end if i32.const 0 - i32.const 168 - i32.const 326 + i32.const 216 + i32.const 328 i32.const 6 call $~lib/env/abort unreachable @@ -2703,7 +2860,7 @@ i32.eqz end if - i32.const 312 + i32.const 416 return end local.get $1 @@ -2718,7 +2875,7 @@ i32.mul i32.const 1 i32.shl - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.tee $2 local.get $0 local.get $3 @@ -2728,13 +2885,13 @@ call $~lib/memory/memory.repeat local.get $2 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register ) - (func $~lib/string/String#slice (; 28 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#slice (; 27 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 - i32.const 8 + i32.const 16 i32.sub i32.load offset=4 i32.const 1 @@ -2790,14 +2947,14 @@ i32.const 0 i32.le_s if - i32.const 312 + i32.const 416 return end local.get $3 i32.const 1 i32.shl local.tee $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.tee $1 local.get $4 i32.const 1 @@ -2808,25 +2965,32 @@ call $~lib/memory/memory.copy local.get $1 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register ) - (func $~lib/runtime/doMakeArray (; 29 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/makeArray (; 28 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) i32.const 16 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 2 - call $~lib/runtime/doRegister - local.tee $1 + call $~lib/runtime/register + local.set $1 local.get $0 i32.const 2 i32.shl local.tee $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 3 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $3 + local.set $4 + local.get $1 + i32.load + drop + local.get $1 + local.get $4 i32.store local.get $1 local.get $3 @@ -2839,7 +3003,7 @@ i32.store offset=12 local.get $1 ) - (func $~lib/memory/memory.fill (; 30 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/memory/memory.fill (; 29 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block $~lib/util/memory/memset|inlined.0 local.get $1 @@ -3050,13 +3214,13 @@ end end ) - (func $~lib/runtime/doReallocate (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/runtime/reallocate (; 30 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) local.get $0 - i32.const 8 + i32.const 16 i32.sub local.tee $3 i32.load offset=4 @@ -3067,20 +3231,20 @@ i32.const 1 i32.const 32 local.get $2 - i32.const 7 + i32.const 15 i32.add i32.clz i32.sub i32.shl i32.const 0 local.get $0 - i32.const 5496 + i32.const 6736 i32.gt_u select i32.const 1 i32.const 32 local.get $1 - i32.const 7 + i32.const 15 i32.add i32.clz i32.sub @@ -3090,19 +3254,25 @@ if local.get $4 call $~lib/memory/memory.allocate - local.tee $4 + local.tee $5 local.get $3 i32.load i32.store - local.get $4 - i32.const 8 + local.get $5 + i32.const 0 + i32.store offset=8 + local.get $5 + i32.const 0 + i32.store offset=12 + local.get $5 + i32.const 16 i32.add - local.tee $5 + local.tee $4 local.get $0 local.get $2 call $~lib/memory/memory.copy local.get $2 - local.get $5 + local.get $4 i32.add local.get $1 local.get $2 @@ -3114,20 +3284,20 @@ i32.eq if local.get $0 - i32.const 5496 + i32.const 6736 i32.le_u if i32.const 0 - i32.const 96 - i32.const 133 + i32.const 120 + i32.const 125 i32.const 8 call $~lib/env/abort unreachable end end - local.get $4 - local.set $3 local.get $5 + local.set $3 + local.get $4 local.set $0 else local.get $0 @@ -3144,7 +3314,7 @@ i32.store offset=4 local.get $0 ) - (func $~lib/array/ensureCapacity (; 32 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/ensureCapacity (; 31 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $1 @@ -3155,12 +3325,12 @@ i32.gt_u if local.get $1 - i32.const 268435454 + i32.const 268435452 i32.gt_u if i32.const 0 - i32.const 1392 - i32.const 14 + i32.const 1912 + i32.const 13 i32.const 64 call $~lib/env/abort unreachable @@ -3172,11 +3342,14 @@ i32.const 2 i32.shl local.tee $3 - call $~lib/runtime/doReallocate + call $~lib/runtime/reallocate local.tee $1 local.get $2 i32.ne if + local.get $0 + i32.load + drop local.get $0 local.get $1 i32.store @@ -3189,30 +3362,37 @@ i32.store offset=8 end ) - (func $~lib/array/Array#push (; 33 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#push (; 32 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) + (local $3 i32) local.get $0 local.get $0 i32.load offset=12 + local.tee $2 i32.const 1 i32.add - local.tee $2 + local.tee $3 call $~lib/array/ensureCapacity local.get $0 - local.get $2 - i32.store offset=12 - local.get $0 i32.load offset=4 local.get $2 - i32.const 1 - i32.sub i32.const 2 i32.shl i32.add + local.tee $2 + i32.load local.get $1 - i32.store + i32.ne + if + local.get $2 + local.get $1 + i32.store + end + local.get $0 + local.get $3 + i32.store offset=12 ) - (func $~lib/string/String#split (; 34 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#split (; 33 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3225,228 +3405,241 @@ i32.eqz if i32.const 0 - i32.const 168 - i32.const 348 + i32.const 216 + i32.const 350 i32.const 4 call $~lib/env/abort unreachable end - block $folding-inner1 - block $folding-inner0 - local.get $2 - i32.eqz - br_if $folding-inner0 - local.get $1 - i32.eqz - br_if $folding-inner1 - local.get $0 - i32.const 8 - i32.sub - i32.load offset=4 + block $folding-inner0 + local.get $2 + i32.eqz + br_if $folding-inner0 + local.get $1 + i32.eqz + if i32.const 1 - i32.shr_u - local.set $4 - i32.const 2147483647 - local.get $2 - local.get $2 - i32.const 0 - i32.lt_s - select - local.set $2 - local.get $1 - i32.const 8 - i32.sub - i32.load offset=4 - i32.const 1 - i32.shr_u + call $~lib/runtime/makeArray local.tee $3 - local.set $9 + i32.load offset=4 + local.get $0 + i32.store local.get $3 + return + end + local.get $0 + i32.const 16 + i32.sub + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $5 + i32.const 2147483647 + local.get $2 + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + local.get $1 + i32.const 16 + i32.sub + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $3 + local.set $9 + local.get $3 + if + local.get $5 + i32.eqz if - local.get $4 - i32.eqz - if - i32.const 1 - call $~lib/runtime/doMakeArray - local.tee $3 - i32.load offset=4 - i32.const 312 - i32.store - local.get $3 - return - end - else - local.get $4 - i32.eqz - br_if $folding-inner0 - local.get $4 - local.get $2 - local.get $4 - local.get $2 - i32.lt_s - select - local.tee $4 - call $~lib/runtime/doMakeArray - local.tee $7 + i32.const 1 + call $~lib/runtime/makeArray + local.tee $3 i32.load offset=4 - local.set $3 - i32.const 0 - local.set $1 - loop $repeat|0 - local.get $1 - local.get $4 - i32.lt_s - if - i32.const 2 - call $~lib/runtime/doAllocate - i32.const 1 - call $~lib/runtime/doRegister - local.tee $2 - local.get $1 - i32.const 1 - i32.shl - local.get $0 - i32.add - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.shl - local.get $3 - i32.add - local.get $2 - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|0 - end - end - local.get $7 + i32.const 416 + i32.store + local.get $3 return end - i32.const 0 - call $~lib/runtime/doMakeArray - local.set $5 - loop $continue|1 - local.get $1 - i32.eqz + else + local.get $5 + i32.eqz + br_if $folding-inner0 + local.get $5 + local.get $2 + local.get $5 + local.get $2 + i32.lt_s + select + local.tee $5 + call $~lib/runtime/makeArray + local.tee $7 + i32.load offset=4 + local.set $3 + loop $repeat|0 + local.get $4 + local.get $5 + i32.lt_s if - unreachable - end - local.get $0 - local.get $1 - local.get $6 - call $~lib/string/String#indexOf - local.tee $8 - i32.const -1 - i32.ne - if - local.get $8 - local.get $6 - i32.sub - local.tee $3 - i32.const 0 - i32.gt_s - if - local.get $3 - i32.const 1 - i32.shl - local.tee $3 - call $~lib/runtime/doAllocate - local.tee $7 - local.get $6 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $3 - call $~lib/memory/memory.copy - local.get $5 - local.get $7 - i32.const 1 - call $~lib/runtime/doRegister - call $~lib/array/Array#push - else - local.get $5 - i32.const 312 - call $~lib/array/Array#push - end - local.get $10 + i32.const 2 + call $~lib/runtime/allocate + i32.const 1 + call $~lib/runtime/register + local.tee $1 + local.get $4 + i32.const 1 + i32.shl + local.get $0 + i32.add + i32.load16_u + i32.store16 + local.get $4 + i32.const 2 + i32.shl + local.get $3 + i32.add + local.get $1 + i32.store + local.get $4 i32.const 1 i32.add - local.tee $10 - local.get $2 - i32.eq - if - local.get $5 - return - end - local.get $8 - local.get $9 - i32.add - local.set $6 - br $continue|1 + local.set $4 + br $repeat|0 end end - local.get $6 - i32.eqz - br_if $folding-inner1 - local.get $4 - local.get $6 - i32.sub - local.tee $1 - i32.const 0 - i32.gt_s - if - local.get $1 - i32.const 1 - i32.shl - local.tee $1 - call $~lib/runtime/doAllocate - local.tee $3 - local.get $6 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $1 - call $~lib/memory/memory.copy - local.get $5 - local.get $3 - i32.const 1 - call $~lib/runtime/doRegister - call $~lib/array/Array#push - else - local.get $5 - i32.const 312 - call $~lib/array/Array#push - end - local.get $5 + local.get $7 return end i32.const 0 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray + local.set $6 + loop $continue|1 + local.get $1 + i32.eqz + if + unreachable + end + local.get $0 + local.get $1 + local.get $4 + call $~lib/string/String#indexOf + local.tee $8 + i32.const -1 + i32.ne + if + local.get $8 + local.get $4 + i32.sub + local.tee $3 + i32.const 0 + i32.gt_s + if + local.get $3 + i32.const 1 + i32.shl + local.tee $3 + call $~lib/runtime/allocate + local.tee $7 + local.get $4 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $3 + call $~lib/memory/memory.copy + local.get $6 + local.get $7 + i32.const 1 + call $~lib/runtime/register + call $~lib/array/Array#push + else + local.get $6 + i32.const 416 + call $~lib/array/Array#push + end + local.get $10 + i32.const 1 + i32.add + local.tee $10 + local.get $2 + i32.eq + if + local.get $6 + return + end + local.get $8 + local.get $9 + i32.add + local.set $4 + br $continue|1 + end + end + local.get $4 + i32.eqz + if + i32.const 1 + call $~lib/runtime/makeArray + local.tee $3 + i32.load offset=4 + local.tee $1 + i32.load + local.get $0 + i32.ne + if + local.get $1 + local.get $0 + i32.store + end + local.get $3 + return + end + local.get $5 + local.get $4 + i32.sub + local.tee $1 + i32.const 0 + i32.gt_s + if + local.get $1 + i32.const 1 + i32.shl + local.tee $1 + call $~lib/runtime/allocate + local.tee $3 + local.get $4 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $1 + call $~lib/memory/memory.copy + local.get $6 + local.get $3 + i32.const 1 + call $~lib/runtime/register + call $~lib/array/Array#push + else + local.get $6 + i32.const 416 + call $~lib/array/Array#push + end + local.get $6 return end - i32.const 1 - call $~lib/runtime/doMakeArray - local.tee $3 - i32.load offset=4 - local.get $0 - i32.store - local.get $3 + i32.const 0 + call $~lib/runtime/makeArray ) - (func $~lib/array/Array#__get (; 35 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 34 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if i32.const 0 - i32.const 1392 - i32.const 97 + i32.const 1912 + i32.const 95 i32.const 45 call $~lib/env/abort unreachable @@ -3459,8 +3652,8 @@ i32.ge_u if i32.const 0 - i32.const 1392 - i32.const 100 + i32.const 1912 + i32.const 98 i32.const 61 call $~lib/env/abort unreachable @@ -3473,7 +3666,7 @@ i32.add i32.load ) - (func $~lib/util/number/decimalCount32 (; 36 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 35 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 100000 i32.lt_u @@ -3527,10 +3720,10 @@ end end ) - (func $~lib/util/number/utoa32_lut (; 37 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa32_lut (; 36 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - i32.const 2012 + i32.const 2612 i32.load local.set $3 loop $continue|0 @@ -3637,14 +3830,14 @@ i32.store16 end ) - (func $~lib/util/number/itoa32 (; 38 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 37 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) local.get $0 i32.eqz if - i32.const 608 + i32.const 840 return end local.get $0 @@ -3664,7 +3857,7 @@ local.tee $3 i32.const 1 i32.shl - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.tee $2 local.get $0 local.get $3 @@ -3677,15 +3870,15 @@ end local.get $2 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register ) - (func $~lib/util/number/utoa32 (; 39 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/utoa32 (; 38 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 i32.eqz if - i32.const 608 + i32.const 840 return end local.get $0 @@ -3693,16 +3886,16 @@ local.tee $1 i32.const 1 i32.shl - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.tee $2 local.get $0 local.get $1 call $~lib/util/number/utoa32_lut local.get $2 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register ) - (func $~lib/util/number/decimalCount64 (; 40 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/decimalCount64 (; 39 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) local.get $0 i64.const 1000000000000000 i64.lt_u @@ -3756,12 +3949,12 @@ end end ) - (func $~lib/util/number/utoa64_lut (; 41 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa64_lut (; 40 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 2012 + i32.const 2612 i32.load local.set $3 loop $continue|0 @@ -3853,14 +4046,14 @@ local.get $2 call $~lib/util/number/utoa32_lut ) - (func $~lib/util/number/utoa64 (; 42 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/utoa64 (; 41 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) local.get $0 i64.eqz if - i32.const 608 + i32.const 840 return end local.get $0 @@ -3874,7 +4067,7 @@ local.tee $1 i32.const 1 i32.shl - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.tee $2 local.get $3 local.get $1 @@ -3885,7 +4078,7 @@ local.tee $1 i32.const 1 i32.shl - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.tee $2 local.get $0 local.get $1 @@ -3893,9 +4086,9 @@ end local.get $2 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register ) - (func $~lib/util/number/itoa64 (; 43 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa64 (; 42 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3903,7 +4096,7 @@ local.get $0 i64.eqz if - i32.const 608 + i32.const 840 return end block (result i32) @@ -3931,7 +4124,7 @@ local.tee $2 i32.const 1 i32.shl - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.tee $3 local.get $4 local.get $2 @@ -3944,7 +4137,7 @@ local.tee $2 i32.const 1 i32.shl - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.tee $3 local.get $0 local.get $2 @@ -3958,9 +4151,9 @@ end local.get $3 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register ) - (func $~lib/util/number/genDigits (; 44 ;) (type $FUNCSIG$iijijiji) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) + (func $~lib/util/number/genDigits (; 43 ;) (type $FUNCSIG$iijijiji) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) (local $7 i32) (local $8 i64) (local $9 i32) @@ -3995,7 +4188,7 @@ local.tee $7 call $~lib/util/number/decimalCount32 local.set $9 - i32.const 4060 + i32.const 4980 i32.load local.set $13 loop $continue|0 @@ -4371,7 +4564,7 @@ local.get $2 end ) - (func $~lib/util/number/prettify (; 45 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 44 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4633,14 +4826,14 @@ end end ) - (func $~lib/util/number/dtoa_core (; 46 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/util/number/dtoa_core (; 45 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 i64) (local $3 i32) (local $4 i64) - (local $5 i64) + (local $5 i32) (local $6 i64) (local $7 i32) - (local $8 i32) + (local $8 i64) (local $9 i64) (local $10 i64) (local $11 i32) @@ -4650,15 +4843,15 @@ f64.const 0 f64.lt local.tee $11 - if (result f64) + if local.get $0 i32.const 45 i32.store16 local.get $1 f64.neg - else - local.get $1 + local.set $1 end + local.get $1 i64.reinterpret_f64 local.tee $2 i64.const 9218868437227405312 @@ -4666,14 +4859,14 @@ i64.const 52 i64.shr_u i32.wrap_i64 + local.tee $5 + i32.const 0 + i32.ne local.set $7 local.get $2 i64.const 4503599627370495 i64.and local.get $7 - i32.const 0 - i32.ne - local.tee $8 i64.extend_i32_u i64.const 52 i64.shl @@ -4683,43 +4876,43 @@ i64.shl i64.const 1 i64.add - local.tee $5 + local.tee $8 i64.clz i32.wrap_i64 local.set $3 - local.get $5 + local.get $8 local.get $3 i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_plus - local.get $7 + local.get $5 i32.const 1 - local.get $8 + local.get $7 select i32.const 1075 i32.sub - local.tee $7 - i32.const 1 - i32.sub - local.get $3 - i32.sub - local.set $3 + local.set $5 local.get $2 local.get $2 i64.const 4503599627370496 i64.eq i32.const 1 i32.add - local.tee $8 + local.tee $7 i64.extend_i32_s i64.shl i64.const 1 i64.sub + local.get $5 local.get $7 - local.get $8 + i32.sub + local.get $5 + i32.const 1 i32.sub local.get $3 i32.sub + local.tee $3 + i32.sub i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_minus @@ -4749,16 +4942,16 @@ local.tee $3 i32.const 3 i32.shl - local.tee $8 + local.tee $7 i32.sub global.set $~lib/util/number/_K - i32.const 3780 + i32.const 4668 i32.load - local.get $8 + local.get $7 i32.add i64.load global.set $~lib/util/number/_frc_pow - i32.const 3988 + i32.const 4892 i32.load local.get $3 i32.const 1 @@ -4766,6 +4959,16 @@ i32.add i32.load16_s global.set $~lib/util/number/_exp_pow + global.get $~lib/util/number/_frc_pow + local.tee $8 + i64.const 4294967295 + i64.and + local.set $4 + local.get $8 + i64.const 32 + i64.shr_u + local.tee $12 + local.tee $6 local.get $2 local.get $2 i64.clz @@ -4777,30 +4980,20 @@ i64.const 4294967295 i64.and local.tee $9 - global.get $~lib/util/number/_frc_pow - local.tee $5 - i64.const 4294967295 - i64.and - local.tee $10 - i64.mul - local.set $4 - local.get $5 - i64.const 32 - i64.shr_u - local.tee $6 - local.get $9 i64.mul + local.get $4 local.get $2 i64.const 32 i64.shr_u local.tee $2 - local.get $10 i64.mul local.get $4 + local.get $9 + i64.mul i64.const 32 i64.shr_u i64.add - local.tee $4 + local.tee $10 i64.const 4294967295 i64.and i64.add @@ -4811,36 +5004,30 @@ local.get $2 local.get $6 i64.mul - local.get $4 + local.get $10 i64.const 32 i64.shr_u i64.add i64.add local.set $13 - local.get $5 - i64.const 4294967295 - i64.and - local.tee $2 global.get $~lib/util/number/_frc_plus - local.tee $4 + local.tee $10 i64.const 4294967295 i64.and local.tee $6 - i64.mul - local.set $12 - local.get $6 - local.get $5 - i64.const 32 - i64.shr_u + local.get $12 local.tee $9 i64.mul - local.get $2 local.get $4 + local.tee $2 + local.get $10 i64.const 32 i64.shr_u - local.tee $10 + local.tee $4 + i64.mul + local.get $2 + local.get $6 i64.mul - local.get $12 i64.const 32 i64.shr_u i64.add @@ -4852,8 +5039,8 @@ i64.add i64.const 32 i64.shr_u + local.get $4 local.get $9 - local.get $10 i64.mul local.get $2 i64.const 32 @@ -4861,39 +5048,61 @@ i64.add i64.add local.set $6 - global.get $~lib/util/number/_frc_minus - local.tee $12 - i64.const 4294967295 - i64.and - local.tee $9 - local.get $5 + local.get $8 local.tee $2 i64.const 4294967295 i64.and - local.tee $10 - i64.mul local.set $4 + local.get $5 + local.get $3 + i32.sub + local.set $5 + local.get $11 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $0 + local.get $13 + local.get $5 + global.get $~lib/util/number/_exp_pow + local.tee $3 + i32.add + i32.const -64 + i32.sub local.get $6 i64.const 1 i64.sub - local.tee $5 + local.tee $8 + global.get $~lib/util/number/_exp + local.get $3 + i32.add + i32.const -64 + i32.sub + local.get $8 local.get $2 i64.const 32 i64.shr_u local.tee $6 - local.get $9 + global.get $~lib/util/number/_frc_minus + local.tee $2 + i64.const 4294967295 + i64.and + local.tee $9 i64.mul - local.get $12 + local.get $4 + local.get $2 i64.const 32 i64.shr_u local.tee $2 - local.get $10 i64.mul local.get $4 + local.get $9 + i64.mul i64.const 32 i64.shr_u i64.add - local.tee $4 + local.tee $10 i64.const 4294967295 i64.and i64.add @@ -4904,7 +5113,7 @@ local.get $2 local.get $6 i64.mul - local.get $4 + local.get $10 i64.const 32 i64.shr_u i64.add @@ -4912,29 +5121,6 @@ i64.const 1 i64.add i64.sub - local.set $4 - local.get $11 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $0 - local.get $13 - local.get $7 - local.get $3 - i32.sub - global.get $~lib/util/number/_exp_pow - local.tee $3 - i32.add - i32.const -64 - i32.sub - local.get $5 - global.get $~lib/util/number/_exp - local.get $3 - i32.add - i32.const -64 - i32.sub - local.get $4 local.get $11 call $~lib/util/number/genDigits local.get $11 @@ -4944,7 +5130,7 @@ local.get $11 i32.add ) - (func $~lib/string/String#substring (; 47 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#substring (; 46 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4952,8 +5138,8 @@ i32.eqz if i32.const 0 - i32.const 168 - i32.const 187 + i32.const 216 + i32.const 189 i32.const 4 call $~lib/env/abort unreachable @@ -4966,7 +5152,7 @@ select local.tee $2 local.get $0 - i32.const 8 + i32.const 16 i32.sub i32.load offset=4 i32.const 1 @@ -5006,7 +5192,7 @@ local.tee $3 i32.eqz if - i32.const 312 + i32.const 416 return end local.get $4 @@ -5014,7 +5200,7 @@ local.tee $2 if local.get $0 - i32.const 8 + i32.const 16 i32.sub i32.load offset=4 i32.const 1 @@ -5031,7 +5217,7 @@ return end local.get $3 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.tee $2 local.get $0 local.get $4 @@ -5040,7 +5226,34 @@ call $~lib/memory/memory.copy local.get $2 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register + ) + (func $~lib/runtime/discard (; 47 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + i32.const 6736 + i32.le_u + if + i32.const 0 + i32.const 120 + i32.const 185 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.const 16 + i32.sub + i32.load + i32.const -1520547049 + i32.ne + if + i32.const 0 + i32.const 120 + i32.const 187 + i32.const 4 + call $~lib/env/abort + unreachable + end ) (func $~lib/util/number/dtoa (; 48 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) (local $1 i32) @@ -5049,7 +5262,7 @@ f64.const 0 f64.eq if - i32.const 2984 + i32.const 3832 return end local.get $0 @@ -5062,11 +5275,11 @@ local.get $0 f64.ne if - i32.const 3000 + i32.const 3856 return end - i32.const 3016 - i32.const 3048 + i32.const 3880 + i32.const 3920 local.get $0 f64.const 0 f64.lt @@ -5074,7 +5287,7 @@ return end i32.const 56 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.tee $2 local.get $0 call $~lib/util/number/dtoa_core @@ -5084,24 +5297,24 @@ call $~lib/string/String#substring local.set $1 local.get $2 - call $~lib/runtime/assertUnregistered + call $~lib/runtime/discard local.get $1 ) (func $start:std/string (; 49 ;) (type $FUNCSIG$v) (local $0 i32) global.get $std/string/str - i32.const 16 + i32.const 24 i32.ne if i32.const 0 - i32.const 56 - i32.const 16 + i32.const 72 + i32.const 18 i32.const 0 call $~lib/env/abort unreachable end global.get $std/string/str - i32.const 8 + i32.const 16 i32.sub i32.load offset=4 i32.const 1 @@ -5110,8 +5323,8 @@ i32.ne if i32.const 0 - i32.const 56 - i32.const 18 + i32.const 72 + i32.const 20 i32.const 0 call $~lib/env/abort unreachable @@ -5121,7 +5334,7 @@ i32.const 0 global.get $std/string/str local.tee $0 - i32.const 8 + i32.const 16 i32.sub i32.load offset=4 i32.const 1 @@ -5136,77 +5349,77 @@ i32.ne if i32.const 0 - i32.const 56 - i32.const 19 + i32.const 72 + i32.const 21 i32.const 0 call $~lib/env/abort unreachable end - i32.const 5496 + i32.const 6736 global.set $~lib/allocator/arena/startOffset global.get $~lib/allocator/arena/startOffset global.set $~lib/allocator/arena/offset i32.const 0 call $~lib/string/String.fromCharCode - i32.const 136 + i32.const 168 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 21 + i32.const 72 + i32.const 23 i32.const 0 call $~lib/env/abort unreachable end i32.const 54 call $~lib/string/String.fromCharCode - i32.const 152 + i32.const 192 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 22 + i32.const 72 + i32.const 24 i32.const 0 call $~lib/env/abort unreachable end i32.const 65590 call $~lib/string/String.fromCharCode - i32.const 152 + i32.const 192 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 23 + i32.const 72 + i32.const 25 i32.const 0 call $~lib/env/abort unreachable end i32.const 0 call $~lib/string/String.fromCodePoint - i32.const 136 + i32.const 168 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 25 + i32.const 72 + i32.const 27 i32.const 0 call $~lib/env/abort unreachable end i32.const 54 call $~lib/string/String.fromCodePoint - i32.const 152 + i32.const 192 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 26 + i32.const 72 + i32.const 28 i32.const 0 call $~lib/env/abort unreachable @@ -5215,9 +5428,9 @@ call $~lib/string/String.fromCodePoint i32.eqz if - i32.const 208 - i32.const 56 - i32.const 27 + i32.const 264 + i32.const 72 + i32.const 29 i32.const 0 call $~lib/env/abort unreachable @@ -5227,8 +5440,8 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 29 + i32.const 72 + i32.const 31 i32.const 0 call $~lib/env/abort unreachable @@ -5238,133 +5451,58 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 30 + i32.const 72 + i32.const 32 i32.const 0 call $~lib/env/abort unreachable end global.get $std/string/str - i32.const 280 + i32.const 368 i32.const 0 call $~lib/string/String#indexOf i32.const -1 i32.eq if i32.const 0 - i32.const 56 - i32.const 31 - i32.const 0 - call $~lib/env/abort - unreachable - end - global.get $std/string/str - i32.const 0 - i32.const 296 - call $~lib/string/String#padStart - global.get $std/string/str - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 + i32.const 72 i32.const 33 i32.const 0 call $~lib/env/abort unreachable end global.get $std/string/str - i32.const 15 - i32.const 296 + i32.const 0 + i32.const 392 call $~lib/string/String#padStart global.get $std/string/str call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 34 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 312 - i32.const 3 - i32.const 296 - call $~lib/string/String#padStart - i32.const 320 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 + i32.const 72 i32.const 35 i32.const 0 call $~lib/env/abort unreachable end - i32.const 312 - i32.const 10 - i32.const 312 + global.get $std/string/str + i32.const 15 + i32.const 392 call $~lib/string/String#padStart - i32.const 312 + global.get $std/string/str call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 36 i32.const 0 call $~lib/env/abort unreachable end - i32.const 336 - i32.const 100 - i32.const 312 - call $~lib/string/String#padStart - i32.const 336 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 37 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 352 - i32.const 5 - i32.const 296 - call $~lib/string/String#padStart - i32.const 368 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 38 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 352 - i32.const 6 - i32.const 392 - call $~lib/string/String#padStart - i32.const 408 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 39 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 352 - i32.const 8 + i32.const 416 + i32.const 3 i32.const 392 call $~lib/string/String#padStart i32.const 432 @@ -5372,166 +5510,241 @@ i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 + i32.const 37 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 416 + i32.const 10 + i32.const 416 + call $~lib/string/String#padStart + i32.const 416 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 38 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 456 + i32.const 100 + i32.const 416 + call $~lib/string/String#padStart + i32.const 456 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 39 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 480 + i32.const 5 + i32.const 392 + call $~lib/string/String#padStart + i32.const 504 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 i32.const 40 i32.const 0 call $~lib/env/abort unreachable end - global.get $std/string/str - i32.const 0 - i32.const 296 - call $~lib/string/String#padEnd - global.get $std/string/str + i32.const 480 + i32.const 6 + i32.const 536 + call $~lib/string/String#padStart + i32.const 560 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 + i32.const 41 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 480 + i32.const 8 + i32.const 536 + call $~lib/string/String#padStart + i32.const 592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 i32.const 42 i32.const 0 call $~lib/env/abort unreachable end global.get $std/string/str - i32.const 15 - i32.const 296 + i32.const 0 + i32.const 392 call $~lib/string/String#padEnd global.get $std/string/str call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 43 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 312 - i32.const 3 - i32.const 296 - call $~lib/string/String#padEnd - i32.const 320 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 + i32.const 72 i32.const 44 i32.const 0 call $~lib/env/abort unreachable end - i32.const 312 - i32.const 10 - i32.const 312 + global.get $std/string/str + i32.const 15 + i32.const 392 call $~lib/string/String#padEnd - i32.const 312 + global.get $std/string/str call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 45 i32.const 0 call $~lib/env/abort unreachable end - i32.const 336 - i32.const 100 - i32.const 312 + i32.const 416 + i32.const 3 + i32.const 392 call $~lib/string/String#padEnd - i32.const 336 + i32.const 432 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 46 i32.const 0 call $~lib/env/abort unreachable end - i32.const 352 - i32.const 5 - i32.const 296 + i32.const 416 + i32.const 10 + i32.const 416 + call $~lib/string/String#padEnd + i32.const 416 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 47 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 456 + i32.const 100 + i32.const 416 call $~lib/string/String#padEnd i32.const 456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 47 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 352 - i32.const 6 - i32.const 352 - call $~lib/string/String#padEnd - i32.const 480 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 + i32.const 72 i32.const 48 i32.const 0 call $~lib/env/abort unreachable end - i32.const 352 - i32.const 8 - i32.const 352 + i32.const 480 + i32.const 5 + i32.const 392 call $~lib/string/String#padEnd - i32.const 504 + i32.const 624 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 49 i32.const 0 call $~lib/env/abort unreachable end - i32.const 312 - i32.const 312 - i32.const 0 - call $~lib/string/String#indexOf + i32.const 480 + i32.const 6 + i32.const 480 + call $~lib/string/String#padEnd + i32.const 656 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 + i32.const 50 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 480 + i32.const 8 + i32.const 480 + call $~lib/string/String#padEnd + i32.const 688 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 i32.const 51 i32.const 0 call $~lib/env/abort unreachable end - i32.const 312 - i32.const 224 + i32.const 416 + i32.const 416 + i32.const 0 + call $~lib/string/String#indexOf + if + i32.const 0 + i32.const 72 + i32.const 53 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 416 + i32.const 288 i32.const 0 call $~lib/string/String#indexOf i32.const -1 i32.ne if i32.const 0 - i32.const 56 - i32.const 52 + i32.const 72 + i32.const 54 i32.const 0 call $~lib/env/abort unreachable end - i32.const 336 - i32.const 336 + i32.const 456 + i32.const 456 i32.const 0 call $~lib/string/String#indexOf if i32.const 0 - i32.const 56 - i32.const 53 + i32.const 72 + i32.const 55 i32.const 0 call $~lib/env/abort unreachable @@ -5543,126 +5756,126 @@ call $~lib/string/String#indexOf if i32.const 0 - i32.const 56 - i32.const 54 - i32.const 0 - call $~lib/env/abort - unreachable - end - global.get $std/string/str - i32.const 312 - i32.const 0 - call $~lib/string/String#indexOf - if - i32.const 0 - i32.const 56 - i32.const 55 - i32.const 0 - call $~lib/env/abort - unreachable - end - global.get $std/string/str - i32.const 528 - i32.const 0 - call $~lib/string/String#indexOf - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 56 + i32.const 72 i32.const 56 i32.const 0 call $~lib/env/abort unreachable end global.get $std/string/str - i32.const 544 + i32.const 416 i32.const 0 call $~lib/string/String#indexOf - i32.const -1 - i32.ne if i32.const 0 - i32.const 56 + i32.const 72 i32.const 57 i32.const 0 call $~lib/env/abort unreachable end global.get $std/string/str - i32.const 528 - i32.const 2 + i32.const 720 + i32.const 0 call $~lib/string/String#indexOf i32.const 2 i32.ne if i32.const 0 - i32.const 56 + i32.const 72 i32.const 58 i32.const 0 call $~lib/env/abort unreachable end global.get $std/string/str - i32.const 528 - i32.const 3 + i32.const 744 + i32.const 0 call $~lib/string/String#indexOf i32.const -1 i32.ne if i32.const 0 - i32.const 56 + i32.const 72 i32.const 59 i32.const 0 call $~lib/env/abort unreachable end global.get $std/string/str - i32.const 560 + i32.const 720 + i32.const 2 + call $~lib/string/String#indexOf + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 72 + i32.const 60 + i32.const 0 + call $~lib/env/abort + unreachable + end + global.get $std/string/str + i32.const 720 + i32.const 3 + call $~lib/string/String#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 72 + i32.const 61 + i32.const 0 + call $~lib/env/abort + unreachable + end + global.get $std/string/str + i32.const 768 i32.const -1 call $~lib/string/String#indexOf i32.const 2 i32.ne if i32.const 0 - i32.const 56 - i32.const 60 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 312 - i32.const 312 - i32.const 2147483647 - call $~lib/string/String#lastIndexOf - if - i32.const 0 - i32.const 56 + i32.const 72 i32.const 62 i32.const 0 call $~lib/env/abort unreachable end - i32.const 312 - i32.const 224 + i32.const 416 + i32.const 416 + i32.const 2147483647 + call $~lib/string/String#lastIndexOf + if + i32.const 0 + i32.const 72 + i32.const 64 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 416 + i32.const 288 i32.const 2147483647 call $~lib/string/String#lastIndexOf i32.const -1 i32.ne if i32.const 0 - i32.const 56 - i32.const 63 + i32.const 72 + i32.const 65 i32.const 0 call $~lib/env/abort unreachable end global.get $std/string/str - i32.const 312 + i32.const 416 i32.const 2147483647 call $~lib/string/String#lastIndexOf global.get $std/string/str - i32.const 8 + i32.const 16 i32.sub i32.load offset=4 i32.const 1 @@ -5670,641 +5883,641 @@ i32.ne if i32.const 0 - i32.const 56 - i32.const 64 - i32.const 0 - call $~lib/env/abort - unreachable - end - global.get $std/string/str - i32.const 528 - i32.const 2147483647 - call $~lib/string/String#lastIndexOf - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 56 - i32.const 65 - i32.const 0 - call $~lib/env/abort - unreachable - end - global.get $std/string/str - i32.const 544 - i32.const 2147483647 - call $~lib/string/String#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 56 + i32.const 72 i32.const 66 i32.const 0 call $~lib/env/abort unreachable end global.get $std/string/str - i32.const 576 + i32.const 720 i32.const 2147483647 call $~lib/string/String#lastIndexOf - i32.const 15 + i32.const 2 i32.ne if i32.const 0 - i32.const 56 + i32.const 72 i32.const 67 i32.const 0 call $~lib/env/abort unreachable end global.get $std/string/str - i32.const 528 - i32.const 2 + i32.const 744 + i32.const 2147483647 call $~lib/string/String#lastIndexOf - i32.const 2 + i32.const -1 i32.ne if i32.const 0 - i32.const 56 + i32.const 72 i32.const 68 i32.const 0 call $~lib/env/abort unreachable end global.get $std/string/str - i32.const 528 - i32.const 3 + i32.const 792 + i32.const 2147483647 call $~lib/string/String#lastIndexOf - i32.const 2 + i32.const 15 i32.ne if i32.const 0 - i32.const 56 + i32.const 72 i32.const 69 i32.const 0 call $~lib/env/abort unreachable end global.get $std/string/str - i32.const 560 - i32.const -1 + i32.const 720 + i32.const 2 call $~lib/string/String#lastIndexOf - i32.const -1 + i32.const 2 i32.ne if i32.const 0 - i32.const 56 + i32.const 72 i32.const 70 i32.const 0 call $~lib/env/abort unreachable end global.get $std/string/str - i32.const 592 - i32.const 0 + i32.const 720 + i32.const 3 call $~lib/string/String#lastIndexOf - i32.const -1 + i32.const 2 i32.ne if i32.const 0 - i32.const 56 + i32.const 72 i32.const 71 i32.const 0 call $~lib/env/abort unreachable end global.get $std/string/str - i32.const 224 - i32.const 0 + i32.const 768 + i32.const -1 call $~lib/string/String#lastIndexOf + i32.const -1 + i32.ne if i32.const 0 - i32.const 56 + i32.const 72 i32.const 72 i32.const 0 call $~lib/env/abort unreachable end - i32.const 608 + global.get $std/string/str + i32.const 816 + i32.const 0 + call $~lib/string/String#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 72 + i32.const 73 + i32.const 0 + call $~lib/env/abort + unreachable + end + global.get $std/string/str + i32.const 288 + i32.const 0 + call $~lib/string/String#lastIndexOf + if + i32.const 0 + i32.const 72 + i32.const 74 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 840 call $~lib/util/string/parse f64.const 0 f64.ne if i32.const 0 - i32.const 56 - i32.const 78 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 624 - call $~lib/util/string/parse - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 56 - i32.const 79 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 640 - call $~lib/util/string/parse - f64.const 5 - f64.ne - if - i32.const 0 - i32.const 56 + i32.const 72 i32.const 80 i32.const 0 call $~lib/env/abort unreachable end - i32.const 664 + i32.const 864 call $~lib/util/string/parse - f64.const 455 + f64.const 1 f64.ne if i32.const 0 - i32.const 56 + i32.const 72 i32.const 81 i32.const 0 call $~lib/env/abort unreachable end - i32.const 688 + i32.const 888 call $~lib/util/string/parse - f64.const 3855 + f64.const 5 f64.ne if i32.const 0 - i32.const 56 + i32.const 72 i32.const 82 i32.const 0 call $~lib/env/abort unreachable end - i32.const 712 + i32.const 920 call $~lib/util/string/parse - f64.const 3855 + f64.const 455 f64.ne if i32.const 0 - i32.const 56 + i32.const 72 i32.const 83 i32.const 0 call $~lib/env/abort unreachable end - i32.const 736 + i32.const 952 call $~lib/util/string/parse - f64.const 11 + f64.const 3855 f64.ne if i32.const 0 - i32.const 56 + i32.const 72 i32.const 84 i32.const 0 call $~lib/env/abort unreachable end - i32.const 752 + i32.const 984 call $~lib/util/string/parse - f64.const 1 + f64.const 3855 f64.ne if i32.const 0 - i32.const 56 + i32.const 72 i32.const 85 i32.const 0 call $~lib/env/abort unreachable end - i32.const 608 - call $~lib/string/parseFloat - f64.const 0 + i32.const 1016 + call $~lib/util/string/parse + f64.const 11 f64.ne if i32.const 0 - i32.const 56 + i32.const 72 + i32.const 86 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 1040 + call $~lib/util/string/parse + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 72 i32.const 87 i32.const 0 call $~lib/env/abort unreachable end - i32.const 624 + i32.const 840 call $~lib/string/parseFloat - f64.const 1 + f64.const 0 f64.ne if i32.const 0 - i32.const 56 - i32.const 88 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 768 - call $~lib/string/parseFloat - f64.const 0.1 - f64.ne - if - i32.const 0 - i32.const 56 + i32.const 72 i32.const 89 i32.const 0 call $~lib/env/abort unreachable end - i32.const 784 + i32.const 864 call $~lib/string/parseFloat - f64.const 0.25 + f64.const 1 f64.ne if i32.const 0 - i32.const 56 + i32.const 72 i32.const 90 i32.const 0 call $~lib/env/abort unreachable end - i32.const 800 + i32.const 1064 call $~lib/string/parseFloat f64.const 0.1 f64.ne if i32.const 0 - i32.const 56 + i32.const 72 i32.const 91 i32.const 0 call $~lib/env/abort unreachable end - i32.const 336 - i32.const 824 + i32.const 1088 + call $~lib/string/parseFloat + f64.const 0.25 + f64.ne + if + i32.const 0 + i32.const 72 + i32.const 92 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 1112 + call $~lib/string/parseFloat + f64.const 0.1 + f64.ne + if + i32.const 0 + i32.const 72 + i32.const 93 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 456 + i32.const 1144 call $~lib/string/String.__concat global.set $std/string/c global.get $std/string/c - i32.const 840 + i32.const 1168 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 94 - i32.const 0 - call $~lib/env/abort - unreachable - end - global.get $std/string/c - i32.const 336 - call $~lib/string/String.__ne - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 95 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 312 - i32.const 312 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 + i32.const 72 i32.const 96 i32.const 0 call $~lib/env/abort unreachable end - i32.const 312 - global.get $std/string/nullStr + global.get $std/string/c + i32.const 456 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 97 i32.const 0 call $~lib/env/abort unreachable end - global.get $std/string/nullStr - i32.const 312 - call $~lib/string/String.__ne + i32.const 416 + i32.const 416 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 98 i32.const 0 call $~lib/env/abort unreachable end - i32.const 336 - i32.const 824 + i32.const 416 + global.get $std/string/nullStr call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 99 i32.const 0 call $~lib/env/abort unreachable end - i32.const 336 - i32.const 336 - call $~lib/string/String.__eq + global.get $std/string/nullStr + i32.const 416 + call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 100 i32.const 0 call $~lib/env/abort unreachable end - i32.const 856 - i32.const 872 + i32.const 456 + i32.const 1144 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 101 i32.const 0 call $~lib/env/abort unreachable end - i32.const 856 - i32.const 856 + i32.const 456 + i32.const 456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 102 i32.const 0 call $~lib/env/abort unreachable end - i32.const 888 - i32.const 904 + i32.const 1192 + i32.const 1216 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 103 i32.const 0 call $~lib/env/abort unreachable end - i32.const 920 - i32.const 944 - call $~lib/string/String.__ne + i32.const 1192 + i32.const 1192 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 104 i32.const 0 call $~lib/env/abort unreachable end - i32.const 968 - i32.const 968 - call $~lib/string/String.__eq + i32.const 1240 + i32.const 1264 + call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 105 i32.const 0 call $~lib/env/abort unreachable end - i32.const 968 - i32.const 992 + i32.const 1288 + i32.const 1320 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 106 i32.const 0 call $~lib/env/abort unreachable end - i32.const 1016 - i32.const 1048 - call $~lib/string/String.__ne + i32.const 1352 + i32.const 1352 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 107 i32.const 0 call $~lib/env/abort unreachable end - i32.const 824 - i32.const 336 - call $~lib/string/String.__gt + i32.const 1352 + i32.const 1384 + call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 + i32.const 108 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 1416 + i32.const 1456 + call $~lib/string/String.__ne + i32.eqz + if + i32.const 0 + i32.const 72 i32.const 109 i32.const 0 call $~lib/env/abort unreachable end - i32.const 1080 - i32.const 336 + i32.const 1144 + i32.const 456 call $~lib/string/String.__gt i32.eqz if i32.const 0 - i32.const 56 - i32.const 110 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 1080 - i32.const 1096 - call $~lib/string/String.__gte - i32.eqz - if - i32.const 0 - i32.const 56 + i32.const 72 i32.const 111 i32.const 0 call $~lib/env/abort unreachable end - i32.const 1080 - i32.const 840 + i32.const 1496 + i32.const 456 call $~lib/string/String.__gt i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 112 i32.const 0 call $~lib/env/abort unreachable end - i32.const 1080 - i32.const 840 - call $~lib/string/String.__lt + i32.const 1496 + i32.const 1520 + call $~lib/string/String.__gte + i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 113 i32.const 0 call $~lib/env/abort unreachable end - i32.const 824 - global.get $std/string/nullStr + i32.const 1496 + i32.const 1168 + call $~lib/string/String.__gt + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 114 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 1496 + i32.const 1168 call $~lib/string/String.__lt if i32.const 0 - i32.const 56 + i32.const 72 i32.const 115 i32.const 0 call $~lib/env/abort unreachable end + i32.const 1144 global.get $std/string/nullStr - i32.const 824 call $~lib/string/String.__lt if i32.const 0 - i32.const 56 - i32.const 116 + i32.const 72 + i32.const 117 i32.const 0 call $~lib/env/abort unreachable end - i32.const 352 - i32.const 312 - call $~lib/string/String.__gt - i32.eqz + global.get $std/string/nullStr + i32.const 1144 + call $~lib/string/String.__lt if i32.const 0 - i32.const 56 + i32.const 72 i32.const 118 i32.const 0 call $~lib/env/abort unreachable end - i32.const 312 - i32.const 352 - call $~lib/string/String.__lt + i32.const 480 + i32.const 416 + call $~lib/string/String.__gt i32.eqz if i32.const 0 - i32.const 56 - i32.const 119 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 352 - i32.const 312 - call $~lib/string/String.__gte - i32.eqz - if - i32.const 0 - i32.const 56 + i32.const 72 i32.const 120 i32.const 0 call $~lib/env/abort unreachable end - i32.const 352 - call $~lib/string/String.__lte + i32.const 416 + i32.const 480 + call $~lib/string/String.__lt i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 121 i32.const 0 call $~lib/env/abort unreachable end - i32.const 352 - i32.const 312 - call $~lib/string/String.__lt + i32.const 480 + i32.const 416 + call $~lib/string/String.__gte + i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 122 i32.const 0 call $~lib/env/abort unreachable end - i32.const 312 - i32.const 352 - call $~lib/string/String.__gt + i32.const 480 + call $~lib/string/String.__lte + i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 123 i32.const 0 call $~lib/env/abort unreachable end - i32.const 312 - i32.const 312 + i32.const 480 + i32.const 416 call $~lib/string/String.__lt if i32.const 0 - i32.const 56 + i32.const 72 i32.const 124 i32.const 0 call $~lib/env/abort unreachable end - i32.const 312 - i32.const 312 + i32.const 416 + i32.const 480 call $~lib/string/String.__gt if i32.const 0 - i32.const 56 + i32.const 72 i32.const 125 i32.const 0 call $~lib/env/abort unreachable end - i32.const 312 - i32.const 312 - call $~lib/string/String.__gte - i32.eqz + i32.const 416 + i32.const 416 + call $~lib/string/String.__lt if i32.const 0 - i32.const 56 + i32.const 72 i32.const 126 i32.const 0 call $~lib/env/abort unreachable end - i32.const 312 + i32.const 416 + i32.const 416 + call $~lib/string/String.__gt + if + i32.const 0 + i32.const 72 + i32.const 127 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 416 + i32.const 416 + call $~lib/string/String.__gte + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 128 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 416 call $~lib/string/String.__lte i32.eqz if i32.const 0 - i32.const 56 - i32.const 127 + i32.const 72 + i32.const 129 i32.const 0 call $~lib/env/abort unreachable @@ -6324,13 +6537,13 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 131 + i32.const 72 + i32.const 133 i32.const 0 call $~lib/env/abort unreachable end - i32.const 388 + i32.const 524 i32.load i32.const 1 i32.shr_u @@ -6338,151 +6551,151 @@ i32.ne if i32.const 0 - i32.const 56 - i32.const 133 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 312 - i32.const 100 - call $~lib/string/String#repeat - i32.const 312 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 + i32.const 72 i32.const 135 i32.const 0 call $~lib/env/abort unreachable end - i32.const 336 - i32.const 0 + i32.const 416 + i32.const 100 call $~lib/string/String#repeat - i32.const 312 + i32.const 416 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 136 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 336 - i32.const 1 - call $~lib/string/String#repeat - i32.const 336 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 + i32.const 72 i32.const 137 i32.const 0 call $~lib/env/abort unreachable end - i32.const 336 - i32.const 2 + i32.const 456 + i32.const 0 call $~lib/string/String#repeat - i32.const 1096 + i32.const 416 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 138 i32.const 0 call $~lib/env/abort unreachable end - i32.const 336 - i32.const 3 + i32.const 456 + i32.const 1 call $~lib/string/String#repeat - i32.const 1112 + i32.const 456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 139 i32.const 0 call $~lib/env/abort unreachable end - i32.const 840 - i32.const 4 + i32.const 456 + i32.const 2 call $~lib/string/String#repeat - i32.const 1128 + i32.const 1520 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 140 i32.const 0 call $~lib/env/abort unreachable end - i32.const 336 - i32.const 5 + i32.const 456 + i32.const 3 call $~lib/string/String#repeat - i32.const 1152 + i32.const 1544 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 141 i32.const 0 call $~lib/env/abort unreachable end - i32.const 336 - i32.const 6 + i32.const 1168 + i32.const 4 call $~lib/string/String#repeat - i32.const 1176 + i32.const 1568 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 142 i32.const 0 call $~lib/env/abort unreachable end - i32.const 336 - i32.const 7 + i32.const 456 + i32.const 5 call $~lib/string/String#repeat - i32.const 1200 + i32.const 1600 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 143 i32.const 0 call $~lib/env/abort unreachable end - i32.const 1224 + i32.const 456 + i32.const 6 + call $~lib/string/String#repeat + i32.const 1632 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 144 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 456 + i32.const 7 + call $~lib/string/String#repeat + i32.const 1664 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 145 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 1696 global.set $std/string/str global.get $std/string/str i32.const 0 i32.const 2147483647 call $~lib/string/String#slice - i32.const 1224 + i32.const 1696 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 147 + i32.const 72 + i32.const 149 i32.const 0 call $~lib/env/abort unreachable @@ -6491,13 +6704,13 @@ i32.const -1 i32.const 2147483647 call $~lib/string/String#slice - i32.const 1264 + i32.const 1744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 148 + i32.const 72 + i32.const 150 i32.const 0 call $~lib/env/abort unreachable @@ -6506,13 +6719,13 @@ i32.const -5 i32.const 2147483647 call $~lib/string/String#slice - i32.const 1280 + i32.const 1768 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 149 + i32.const 72 + i32.const 151 i32.const 0 call $~lib/env/abort unreachable @@ -6521,13 +6734,13 @@ i32.const 2 i32.const 7 call $~lib/string/String#slice - i32.const 1304 + i32.const 1800 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 150 + i32.const 72 + i32.const 152 i32.const 0 call $~lib/env/abort unreachable @@ -6536,13 +6749,13 @@ i32.const -11 i32.const -6 call $~lib/string/String#slice - i32.const 1328 + i32.const 1832 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 151 + i32.const 72 + i32.const 153 i32.const 0 call $~lib/env/abort unreachable @@ -6551,13 +6764,13 @@ i32.const 4 i32.const 3 call $~lib/string/String#slice - i32.const 312 + i32.const 416 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 152 + i32.const 72 + i32.const 154 i32.const 0 call $~lib/env/abort unreachable @@ -6566,18 +6779,18 @@ i32.const 0 i32.const -1 call $~lib/string/String#slice - i32.const 1352 + i32.const 1864 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 153 + i32.const 72 + i32.const 155 i32.const 0 call $~lib/env/abort unreachable end - i32.const 312 + i32.const 416 i32.const 0 i32.const 2147483647 call $~lib/string/String#split @@ -6591,7 +6804,7 @@ global.get $std/string/sa i32.const 0 call $~lib/array/Array#__get - i32.const 312 + i32.const 416 call $~lib/string/String.__eq local.set $0 end @@ -6599,57 +6812,29 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 158 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 312 - i32.const 312 - i32.const 2147483647 - call $~lib/string/String#split - global.set $std/string/sa - global.get $std/string/sa - i32.load offset=12 - if - i32.const 0 - i32.const 56 + i32.const 72 i32.const 160 i32.const 0 call $~lib/env/abort unreachable end - i32.const 312 - i32.const 528 + i32.const 416 + i32.const 416 i32.const 2147483647 call $~lib/string/String#split global.set $std/string/sa global.get $std/string/sa i32.load offset=12 - i32.const 1 - i32.eq - local.tee $0 - if - global.get $std/string/sa - i32.const 0 - call $~lib/array/Array#__get - i32.const 312 - call $~lib/string/String.__eq - local.set $0 - end - local.get $0 - i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 162 i32.const 0 call $~lib/env/abort unreachable end - i32.const 1432 - i32.const 1456 + i32.const 416 + i32.const 720 i32.const 2147483647 call $~lib/string/String#split global.set $std/string/sa @@ -6662,7 +6847,7 @@ global.get $std/string/sa i32.const 0 call $~lib/array/Array#__get - i32.const 1432 + i32.const 416 call $~lib/string/String.__eq local.set $0 end @@ -6670,49 +6855,27 @@ i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 164 i32.const 0 call $~lib/env/abort unreachable end - i32.const 1432 - i32.const 528 + i32.const 1960 + i32.const 1992 i32.const 2147483647 call $~lib/string/String#split global.set $std/string/sa - block (result i32) - block (result i32) - global.get $std/string/sa - i32.load offset=12 - i32.const 3 - i32.eq - local.tee $0 - if - global.get $std/string/sa - i32.const 0 - call $~lib/array/Array#__get - i32.const 336 - call $~lib/string/String.__eq - local.set $0 - end - local.get $0 - end - if - global.get $std/string/sa - i32.const 1 - call $~lib/array/Array#__get - i32.const 824 - call $~lib/string/String.__eq - local.set $0 - end - local.get $0 - end + global.get $std/string/sa + i32.load offset=12 + i32.const 1 + i32.eq + local.tee $0 if global.get $std/string/sa - i32.const 2 + i32.const 0 call $~lib/array/Array#__get - i32.const 1472 + i32.const 1960 call $~lib/string/String.__eq local.set $0 end @@ -6720,14 +6883,14 @@ i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 166 i32.const 0 call $~lib/env/abort unreachable end - i32.const 1488 - i32.const 1512 + i32.const 1960 + i32.const 720 i32.const 2147483647 call $~lib/string/String#split global.set $std/string/sa @@ -6742,7 +6905,7 @@ global.get $std/string/sa i32.const 0 call $~lib/array/Array#__get - i32.const 336 + i32.const 456 call $~lib/string/String.__eq local.set $0 end @@ -6752,7 +6915,7 @@ global.get $std/string/sa i32.const 1 call $~lib/array/Array#__get - i32.const 824 + i32.const 1144 call $~lib/string/String.__eq local.set $0 end @@ -6762,7 +6925,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array#__get - i32.const 1472 + i32.const 2016 call $~lib/string/String.__eq local.set $0 end @@ -6770,197 +6933,14 @@ i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 168 i32.const 0 call $~lib/env/abort unreachable end - i32.const 1528 - i32.const 528 - i32.const 2147483647 - call $~lib/string/String#split - global.set $std/string/sa - block (result i32) - block (result i32) - block (result i32) - global.get $std/string/sa - i32.load offset=12 - i32.const 4 - i32.eq - local.tee $0 - if - global.get $std/string/sa - i32.const 0 - call $~lib/array/Array#__get - i32.const 336 - call $~lib/string/String.__eq - local.set $0 - end - local.get $0 - end - if - global.get $std/string/sa - i32.const 1 - call $~lib/array/Array#__get - i32.const 824 - call $~lib/string/String.__eq - local.set $0 - end - local.get $0 - end - if - global.get $std/string/sa - i32.const 2 - call $~lib/array/Array#__get - i32.const 312 - call $~lib/string/String.__eq - local.set $0 - end - local.get $0 - end - if - global.get $std/string/sa - i32.const 3 - call $~lib/array/Array#__get - i32.const 1472 - call $~lib/string/String.__eq - local.set $0 - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 170 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 1552 - i32.const 528 - i32.const 2147483647 - call $~lib/string/String#split - global.set $std/string/sa - block (result i32) - block (result i32) - block (result i32) - global.get $std/string/sa - i32.load offset=12 - i32.const 4 - i32.eq - local.tee $0 - if - global.get $std/string/sa - i32.const 0 - call $~lib/array/Array#__get - i32.const 312 - call $~lib/string/String.__eq - local.set $0 - end - local.get $0 - end - if - global.get $std/string/sa - i32.const 1 - call $~lib/array/Array#__get - i32.const 336 - call $~lib/string/String.__eq - local.set $0 - end - local.get $0 - end - if - global.get $std/string/sa - i32.const 2 - call $~lib/array/Array#__get - i32.const 824 - call $~lib/string/String.__eq - local.set $0 - end - local.get $0 - end - if - global.get $std/string/sa - i32.const 3 - call $~lib/array/Array#__get - i32.const 1472 - call $~lib/string/String.__eq - local.set $0 - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 172 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 1576 - i32.const 528 - i32.const 2147483647 - call $~lib/string/String#split - global.set $std/string/sa - block (result i32) - block (result i32) - block (result i32) - global.get $std/string/sa - i32.load offset=12 - i32.const 4 - i32.eq - local.tee $0 - if - global.get $std/string/sa - i32.const 0 - call $~lib/array/Array#__get - i32.const 336 - call $~lib/string/String.__eq - local.set $0 - end - local.get $0 - end - if - global.get $std/string/sa - i32.const 1 - call $~lib/array/Array#__get - i32.const 824 - call $~lib/string/String.__eq - local.set $0 - end - local.get $0 - end - if - global.get $std/string/sa - i32.const 2 - call $~lib/array/Array#__get - i32.const 1472 - call $~lib/string/String.__eq - local.set $0 - end - local.get $0 - end - if - global.get $std/string/sa - i32.const 3 - call $~lib/array/Array#__get - i32.const 312 - call $~lib/string/String.__eq - local.set $0 - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 174 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 352 - i32.const 312 + i32.const 2040 + i32.const 2072 i32.const 2147483647 call $~lib/string/String#split global.set $std/string/sa @@ -6975,7 +6955,7 @@ global.get $std/string/sa i32.const 0 call $~lib/array/Array#__get - i32.const 336 + i32.const 456 call $~lib/string/String.__eq local.set $0 end @@ -6985,7 +6965,7 @@ global.get $std/string/sa i32.const 1 call $~lib/array/Array#__get - i32.const 824 + i32.const 1144 call $~lib/string/String.__eq local.set $0 end @@ -6995,7 +6975,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array#__get - i32.const 1472 + i32.const 2016 call $~lib/string/String.__eq local.set $0 end @@ -7003,14 +6983,247 @@ i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 + i32.const 170 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 2096 + i32.const 720 + i32.const 2147483647 + call $~lib/string/String#split + global.set $std/string/sa + block (result i32) + block (result i32) + block (result i32) + global.get $std/string/sa + i32.load offset=12 + i32.const 4 + i32.eq + local.tee $0 + if + global.get $std/string/sa + i32.const 0 + call $~lib/array/Array#__get + i32.const 456 + call $~lib/string/String.__eq + local.set $0 + end + local.get $0 + end + if + global.get $std/string/sa + i32.const 1 + call $~lib/array/Array#__get + i32.const 1144 + call $~lib/string/String.__eq + local.set $0 + end + local.get $0 + end + if + global.get $std/string/sa + i32.const 2 + call $~lib/array/Array#__get + i32.const 416 + call $~lib/string/String.__eq + local.set $0 + end + local.get $0 + end + if + global.get $std/string/sa + i32.const 3 + call $~lib/array/Array#__get + i32.const 2016 + call $~lib/string/String.__eq + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 172 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 2128 + i32.const 720 + i32.const 2147483647 + call $~lib/string/String#split + global.set $std/string/sa + block (result i32) + block (result i32) + block (result i32) + global.get $std/string/sa + i32.load offset=12 + i32.const 4 + i32.eq + local.tee $0 + if + global.get $std/string/sa + i32.const 0 + call $~lib/array/Array#__get + i32.const 416 + call $~lib/string/String.__eq + local.set $0 + end + local.get $0 + end + if + global.get $std/string/sa + i32.const 1 + call $~lib/array/Array#__get + i32.const 456 + call $~lib/string/String.__eq + local.set $0 + end + local.get $0 + end + if + global.get $std/string/sa + i32.const 2 + call $~lib/array/Array#__get + i32.const 1144 + call $~lib/string/String.__eq + local.set $0 + end + local.get $0 + end + if + global.get $std/string/sa + i32.const 3 + call $~lib/array/Array#__get + i32.const 2016 + call $~lib/string/String.__eq + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 174 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 2160 + i32.const 720 + i32.const 2147483647 + call $~lib/string/String#split + global.set $std/string/sa + block (result i32) + block (result i32) + block (result i32) + global.get $std/string/sa + i32.load offset=12 + i32.const 4 + i32.eq + local.tee $0 + if + global.get $std/string/sa + i32.const 0 + call $~lib/array/Array#__get + i32.const 456 + call $~lib/string/String.__eq + local.set $0 + end + local.get $0 + end + if + global.get $std/string/sa + i32.const 1 + call $~lib/array/Array#__get + i32.const 1144 + call $~lib/string/String.__eq + local.set $0 + end + local.get $0 + end + if + global.get $std/string/sa + i32.const 2 + call $~lib/array/Array#__get + i32.const 2016 + call $~lib/string/String.__eq + local.set $0 + end + local.get $0 + end + if + global.get $std/string/sa + i32.const 3 + call $~lib/array/Array#__get + i32.const 416 + call $~lib/string/String.__eq + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 72 i32.const 176 i32.const 0 call $~lib/env/abort unreachable end - i32.const 352 - i32.const 312 + i32.const 480 + i32.const 416 + i32.const 2147483647 + call $~lib/string/String#split + global.set $std/string/sa + block (result i32) + block (result i32) + global.get $std/string/sa + i32.load offset=12 + i32.const 3 + i32.eq + local.tee $0 + if + global.get $std/string/sa + i32.const 0 + call $~lib/array/Array#__get + i32.const 456 + call $~lib/string/String.__eq + local.set $0 + end + local.get $0 + end + if + global.get $std/string/sa + i32.const 1 + call $~lib/array/Array#__get + i32.const 1144 + call $~lib/string/String.__eq + local.set $0 + end + local.get $0 + end + if + global.get $std/string/sa + i32.const 2 + call $~lib/array/Array#__get + i32.const 2016 + call $~lib/string/String.__eq + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 178 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 480 + i32.const 416 i32.const 0 call $~lib/string/String#split global.set $std/string/sa @@ -7018,42 +7231,14 @@ i32.load offset=12 if i32.const 0 - i32.const 56 - i32.const 178 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 352 - i32.const 312 - i32.const 1 - call $~lib/string/String#split - global.set $std/string/sa - global.get $std/string/sa - i32.load offset=12 - i32.const 1 - i32.eq - local.tee $0 - if - global.get $std/string/sa - i32.const 0 - call $~lib/array/Array#__get - i32.const 336 - call $~lib/string/String.__eq - local.set $0 - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 56 + i32.const 72 i32.const 180 i32.const 0 call $~lib/env/abort unreachable end - i32.const 1432 - i32.const 528 + i32.const 480 + i32.const 416 i32.const 1 call $~lib/string/String#split global.set $std/string/sa @@ -7066,7 +7251,7 @@ global.get $std/string/sa i32.const 0 call $~lib/array/Array#__get - i32.const 336 + i32.const 456 call $~lib/string/String.__eq local.set $0 end @@ -7074,14 +7259,42 @@ i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 182 i32.const 0 call $~lib/env/abort unreachable end - i32.const 352 - i32.const 312 + i32.const 1960 + i32.const 720 + i32.const 1 + call $~lib/string/String#split + global.set $std/string/sa + global.get $std/string/sa + i32.load offset=12 + i32.const 1 + i32.eq + local.tee $0 + if + global.get $std/string/sa + i32.const 0 + call $~lib/array/Array#__get + i32.const 456 + call $~lib/string/String.__eq + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 184 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 480 + i32.const 416 i32.const 4 call $~lib/string/String#split global.set $std/string/sa @@ -7096,7 +7309,7 @@ global.get $std/string/sa i32.const 0 call $~lib/array/Array#__get - i32.const 336 + i32.const 456 call $~lib/string/String.__eq local.set $0 end @@ -7106,7 +7319,7 @@ global.get $std/string/sa i32.const 1 call $~lib/array/Array#__get - i32.const 824 + i32.const 1144 call $~lib/string/String.__eq local.set $0 end @@ -7116,7 +7329,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array#__get - i32.const 1472 + i32.const 2016 call $~lib/string/String.__eq local.set $0 end @@ -7124,64 +7337,14 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 184 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 352 - i32.const 312 - i32.const -1 - call $~lib/string/String#split - global.set $std/string/sa - block (result i32) - block (result i32) - global.get $std/string/sa - i32.load offset=12 - i32.const 3 - i32.eq - local.tee $0 - if - global.get $std/string/sa - i32.const 0 - call $~lib/array/Array#__get - i32.const 336 - call $~lib/string/String.__eq - local.set $0 - end - local.get $0 - end - if - global.get $std/string/sa - i32.const 1 - call $~lib/array/Array#__get - i32.const 824 - call $~lib/string/String.__eq - local.set $0 - end - local.get $0 - end - if - global.get $std/string/sa - i32.const 2 - call $~lib/array/Array#__get - i32.const 1472 - call $~lib/string/String.__eq - local.set $0 - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 56 + i32.const 72 i32.const 186 i32.const 0 call $~lib/env/abort unreachable end - i32.const 1432 - i32.const 528 + i32.const 480 + i32.const 416 i32.const -1 call $~lib/string/String#split global.set $std/string/sa @@ -7196,7 +7359,7 @@ global.get $std/string/sa i32.const 0 call $~lib/array/Array#__get - i32.const 336 + i32.const 456 call $~lib/string/String.__eq local.set $0 end @@ -7206,7 +7369,7 @@ global.get $std/string/sa i32.const 1 call $~lib/array/Array#__get - i32.const 824 + i32.const 1144 call $~lib/string/String.__eq local.set $0 end @@ -7216,7 +7379,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array#__get - i32.const 1472 + i32.const 2016 call $~lib/string/String.__eq local.set $0 end @@ -7224,1191 +7387,1241 @@ i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 188 i32.const 0 call $~lib/env/abort unreachable end + i32.const 1960 + i32.const 720 + i32.const -1 + call $~lib/string/String#split + global.set $std/string/sa + block (result i32) + block (result i32) + global.get $std/string/sa + i32.load offset=12 + i32.const 3 + i32.eq + local.tee $0 + if + global.get $std/string/sa + i32.const 0 + call $~lib/array/Array#__get + i32.const 456 + call $~lib/string/String.__eq + local.set $0 + end + local.get $0 + end + if + global.get $std/string/sa + i32.const 1 + call $~lib/array/Array#__get + i32.const 1144 + call $~lib/string/String.__eq + local.set $0 + end + local.get $0 + end + if + global.get $std/string/sa + i32.const 2 + call $~lib/array/Array#__get + i32.const 2016 + call $~lib/string/String.__eq + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 190 + i32.const 0 + call $~lib/env/abort + unreachable + end i32.const 0 call $~lib/util/number/itoa32 - i32.const 608 + i32.const 840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 190 + i32.const 72 + i32.const 192 i32.const 0 call $~lib/env/abort unreachable end i32.const 1 call $~lib/util/number/itoa32 - i32.const 624 + i32.const 864 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 191 + i32.const 72 + i32.const 193 i32.const 0 call $~lib/env/abort unreachable end i32.const 8 call $~lib/util/number/itoa32 - i32.const 2032 + i32.const 2640 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 192 + i32.const 72 + i32.const 194 i32.const 0 call $~lib/env/abort unreachable end i32.const 123 call $~lib/util/number/itoa32 - i32.const 392 + i32.const 536 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 193 + i32.const 72 + i32.const 195 i32.const 0 call $~lib/env/abort unreachable end i32.const -1000 call $~lib/util/number/itoa32 - i32.const 2048 + i32.const 2664 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 194 + i32.const 72 + i32.const 196 i32.const 0 call $~lib/env/abort unreachable end i32.const 1234 call $~lib/util/number/itoa32 - i32.const 2072 + i32.const 2696 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 195 + i32.const 72 + i32.const 197 i32.const 0 call $~lib/env/abort unreachable end i32.const 12345 call $~lib/util/number/itoa32 - i32.const 2088 + i32.const 2720 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 196 + i32.const 72 + i32.const 198 i32.const 0 call $~lib/env/abort unreachable end i32.const 123456 call $~lib/util/number/itoa32 - i32.const 2112 + i32.const 2752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 197 + i32.const 72 + i32.const 199 i32.const 0 call $~lib/env/abort unreachable end i32.const 1111111 call $~lib/util/number/itoa32 - i32.const 2136 + i32.const 2784 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 198 + i32.const 72 + i32.const 200 i32.const 0 call $~lib/env/abort unreachable end i32.const 1234567 call $~lib/util/number/itoa32 - i32.const 2160 + i32.const 2816 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 199 + i32.const 72 + i32.const 201 i32.const 0 call $~lib/env/abort unreachable end i32.const 2147483646 call $~lib/util/number/itoa32 - i32.const 2184 + i32.const 2848 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 200 + i32.const 72 + i32.const 202 i32.const 0 call $~lib/env/abort unreachable end i32.const 2147483647 call $~lib/util/number/itoa32 - i32.const 2216 + i32.const 2888 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 201 + i32.const 72 + i32.const 203 i32.const 0 call $~lib/env/abort unreachable end i32.const -2147483648 call $~lib/util/number/itoa32 - i32.const 2248 + i32.const 2928 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 202 + i32.const 72 + i32.const 204 i32.const 0 call $~lib/env/abort unreachable end i32.const -1 call $~lib/util/number/itoa32 - i32.const 2280 + i32.const 2968 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 203 + i32.const 72 + i32.const 205 i32.const 0 call $~lib/env/abort unreachable end i32.const 0 call $~lib/util/number/utoa32 - i32.const 608 + i32.const 840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 205 + i32.const 72 + i32.const 207 i32.const 0 call $~lib/env/abort unreachable end i32.const 1000 call $~lib/util/number/utoa32 - i32.const 2296 + i32.const 2992 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 206 + i32.const 72 + i32.const 208 i32.const 0 call $~lib/env/abort unreachable end i32.const 2147483647 call $~lib/util/number/utoa32 - i32.const 2216 + i32.const 2888 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 207 + i32.const 72 + i32.const 209 i32.const 0 call $~lib/env/abort unreachable end i32.const -2147483648 call $~lib/util/number/utoa32 - i32.const 2312 + i32.const 3016 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 208 + i32.const 72 + i32.const 210 i32.const 0 call $~lib/env/abort unreachable end i32.const -1 call $~lib/util/number/utoa32 - i32.const 2344 + i32.const 3056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 209 + i32.const 72 + i32.const 211 i32.const 0 call $~lib/env/abort unreachable end i64.const 0 call $~lib/util/number/utoa64 - i32.const 608 + i32.const 840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 211 + i32.const 72 + i32.const 213 i32.const 0 call $~lib/env/abort unreachable end i64.const 1234 call $~lib/util/number/utoa64 - i32.const 2072 + i32.const 2696 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 212 + i32.const 72 + i32.const 214 i32.const 0 call $~lib/env/abort unreachable end i64.const 99999999 call $~lib/util/number/utoa64 - i32.const 2376 + i32.const 3096 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 213 + i32.const 72 + i32.const 215 i32.const 0 call $~lib/env/abort unreachable end i64.const 100000000 call $~lib/util/number/utoa64 - i32.const 2400 + i32.const 3128 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 214 + i32.const 72 + i32.const 216 i32.const 0 call $~lib/env/abort unreachable end i64.const 4294967295 call $~lib/util/number/utoa64 - i32.const 2344 + i32.const 3056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 215 + i32.const 72 + i32.const 217 i32.const 0 call $~lib/env/abort unreachable end i64.const 68719476735 call $~lib/util/number/utoa64 - i32.const 2432 + i32.const 3168 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 216 + i32.const 72 + i32.const 218 i32.const 0 call $~lib/env/abort unreachable end i64.const 868719476735 call $~lib/util/number/utoa64 - i32.const 2464 + i32.const 3208 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 217 + i32.const 72 + i32.const 219 i32.const 0 call $~lib/env/abort unreachable end i64.const 999868719476735 call $~lib/util/number/utoa64 - i32.const 2496 + i32.const 3248 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 218 + i32.const 72 + i32.const 220 i32.const 0 call $~lib/env/abort unreachable end i64.const 9999868719476735 call $~lib/util/number/utoa64 - i32.const 2536 + i32.const 3296 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 219 + i32.const 72 + i32.const 221 i32.const 0 call $~lib/env/abort unreachable end i64.const 19999868719476735 call $~lib/util/number/utoa64 - i32.const 2576 + i32.const 3344 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 220 + i32.const 72 + i32.const 222 i32.const 0 call $~lib/env/abort unreachable end i64.const -1 call $~lib/util/number/utoa64 - i32.const 2624 + i32.const 3400 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 221 + i32.const 72 + i32.const 223 i32.const 0 call $~lib/env/abort unreachable end i64.const 0 call $~lib/util/number/itoa64 - i32.const 608 + i32.const 840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 223 + i32.const 72 + i32.const 225 i32.const 0 call $~lib/env/abort unreachable end i64.const -1234 call $~lib/util/number/itoa64 - i32.const 2672 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 224 + i32.const 72 + i32.const 226 i32.const 0 call $~lib/env/abort unreachable end i64.const 4294967295 call $~lib/util/number/itoa64 - i32.const 2344 + i32.const 3056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 225 + i32.const 72 + i32.const 227 i32.const 0 call $~lib/env/abort unreachable end i64.const -4294967295 call $~lib/util/number/itoa64 - i32.const 2696 + i32.const 3488 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 226 + i32.const 72 + i32.const 228 i32.const 0 call $~lib/env/abort unreachable end i64.const 68719476735 call $~lib/util/number/itoa64 - i32.const 2432 + i32.const 3168 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 227 + i32.const 72 + i32.const 229 i32.const 0 call $~lib/env/abort unreachable end i64.const -68719476735 call $~lib/util/number/itoa64 - i32.const 2728 + i32.const 3528 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 228 + i32.const 72 + i32.const 230 i32.const 0 call $~lib/env/abort unreachable end i64.const -868719476735 call $~lib/util/number/itoa64 - i32.const 2760 + i32.const 3568 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 229 + i32.const 72 + i32.const 231 i32.const 0 call $~lib/env/abort unreachable end i64.const -999868719476735 call $~lib/util/number/itoa64 - i32.const 2800 + i32.const 3616 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 230 + i32.const 72 + i32.const 232 i32.const 0 call $~lib/env/abort unreachable end i64.const -19999868719476735 call $~lib/util/number/itoa64 - i32.const 2840 + i32.const 3664 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 231 + i32.const 72 + i32.const 233 i32.const 0 call $~lib/env/abort unreachable end i64.const 9223372036854775807 call $~lib/util/number/itoa64 - i32.const 2888 + i32.const 3720 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 232 + i32.const 72 + i32.const 234 i32.const 0 call $~lib/env/abort unreachable end i64.const -9223372036854775808 call $~lib/util/number/itoa64 - i32.const 2936 + i32.const 3776 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 233 + i32.const 72 + i32.const 235 i32.const 0 call $~lib/env/abort unreachable end f64.const 0 call $~lib/util/number/dtoa - i32.const 2984 + i32.const 3832 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 236 + i32.const 72 + i32.const 238 i32.const 0 call $~lib/env/abort unreachable end f64.const -0 call $~lib/util/number/dtoa - i32.const 2984 + i32.const 3832 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 237 + i32.const 72 + i32.const 239 i32.const 0 call $~lib/env/abort unreachable end f64.const nan:0x8000000000000 call $~lib/util/number/dtoa - i32.const 3000 + i32.const 3856 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 238 + i32.const 72 + i32.const 240 i32.const 0 call $~lib/env/abort unreachable end f64.const inf call $~lib/util/number/dtoa - i32.const 3048 + i32.const 3920 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 239 + i32.const 72 + i32.const 241 i32.const 0 call $~lib/env/abort unreachable end f64.const -inf call $~lib/util/number/dtoa - i32.const 3016 + i32.const 3880 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 240 + i32.const 72 + i32.const 242 i32.const 0 call $~lib/env/abort unreachable end f64.const 2.220446049250313e-16 call $~lib/util/number/dtoa - i32.const 4080 + i32.const 5008 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 241 + i32.const 72 + i32.const 243 i32.const 0 call $~lib/env/abort unreachable end f64.const -2.220446049250313e-16 call $~lib/util/number/dtoa - i32.const 4136 + i32.const 5072 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 242 + i32.const 72 + i32.const 244 i32.const 0 call $~lib/env/abort unreachable end f64.const 1797693134862315708145274e284 call $~lib/util/number/dtoa - i32.const 4192 + i32.const 5136 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 243 + i32.const 72 + i32.const 245 i32.const 0 call $~lib/env/abort unreachable end f64.const -1797693134862315708145274e284 call $~lib/util/number/dtoa - i32.const 4248 + i32.const 5200 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 244 + i32.const 72 + i32.const 246 i32.const 0 call $~lib/env/abort unreachable end f64.const 4185580496821356722454785e274 call $~lib/util/number/dtoa - i32.const 4304 + i32.const 5264 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 245 + i32.const 72 + i32.const 247 i32.const 0 call $~lib/env/abort unreachable end f64.const 2.2250738585072014e-308 call $~lib/util/number/dtoa - i32.const 4360 + i32.const 5328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 246 + i32.const 72 + i32.const 248 i32.const 0 call $~lib/env/abort unreachable end f64.const 4.940656e-318 call $~lib/util/number/dtoa - i32.const 4416 + i32.const 5392 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 249 + i32.const 72 + i32.const 251 i32.const 0 call $~lib/env/abort unreachable end f64.const 9060801153433600 call $~lib/util/number/dtoa - i32.const 4456 + i32.const 5440 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 250 + i32.const 72 + i32.const 252 i32.const 0 call $~lib/env/abort unreachable end f64.const 4708356024711512064 call $~lib/util/number/dtoa - i32.const 4504 + i32.const 5496 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 251 + i32.const 72 + i32.const 253 i32.const 0 call $~lib/env/abort unreachable end f64.const 9409340012568248320 call $~lib/util/number/dtoa - i32.const 4560 + i32.const 5560 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 252 + i32.const 72 + i32.const 254 i32.const 0 call $~lib/env/abort unreachable end f64.const 5e-324 call $~lib/util/number/dtoa - i32.const 4616 + i32.const 5624 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 253 + i32.const 72 + i32.const 255 i32.const 0 call $~lib/env/abort unreachable end f64.const 1 call $~lib/util/number/dtoa - i32.const 4640 + i32.const 5656 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 259 + i32.const 72 + i32.const 261 i32.const 0 call $~lib/env/abort unreachable end f64.const 0.1 call $~lib/util/number/dtoa - i32.const 768 + i32.const 1064 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 260 + i32.const 72 + i32.const 262 i32.const 0 call $~lib/env/abort unreachable end f64.const -1 call $~lib/util/number/dtoa - i32.const 4656 + i32.const 5680 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 261 + i32.const 72 + i32.const 263 i32.const 0 call $~lib/env/abort unreachable end f64.const -0.1 call $~lib/util/number/dtoa - i32.const 4672 + i32.const 5704 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 262 + i32.const 72 + i32.const 264 i32.const 0 call $~lib/env/abort unreachable end f64.const 1e6 call $~lib/util/number/dtoa - i32.const 4688 + i32.const 5728 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 264 + i32.const 72 + i32.const 266 i32.const 0 call $~lib/env/abort unreachable end f64.const 1e-06 call $~lib/util/number/dtoa - i32.const 4720 + i32.const 5768 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 265 + i32.const 72 + i32.const 267 i32.const 0 call $~lib/env/abort unreachable end f64.const -1e6 call $~lib/util/number/dtoa - i32.const 4744 + i32.const 5800 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 266 + i32.const 72 + i32.const 268 i32.const 0 call $~lib/env/abort unreachable end f64.const -1e-06 call $~lib/util/number/dtoa - i32.const 4776 + i32.const 5840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 267 + i32.const 72 + i32.const 269 i32.const 0 call $~lib/env/abort unreachable end f64.const 1e7 call $~lib/util/number/dtoa - i32.const 4808 + i32.const 5880 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 268 + i32.const 72 + i32.const 270 i32.const 0 call $~lib/env/abort unreachable end f64.const 1e-07 call $~lib/util/number/dtoa - i32.const 4840 + i32.const 5920 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 269 + i32.const 72 + i32.const 271 i32.const 0 call $~lib/env/abort unreachable end f64.const 1.e+308 call $~lib/util/number/dtoa - i32.const 4856 + i32.const 5944 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 271 + i32.const 72 + i32.const 273 i32.const 0 call $~lib/env/abort unreachable end f64.const -1.e+308 call $~lib/util/number/dtoa - i32.const 4880 + i32.const 5976 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 272 + i32.const 72 + i32.const 274 i32.const 0 call $~lib/env/abort unreachable end f64.const inf call $~lib/util/number/dtoa - i32.const 3048 + i32.const 3920 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 273 + i32.const 72 + i32.const 275 i32.const 0 call $~lib/env/abort unreachable end f64.const -inf call $~lib/util/number/dtoa - i32.const 3016 + i32.const 3880 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 274 + i32.const 72 + i32.const 276 i32.const 0 call $~lib/env/abort unreachable end f64.const 1e-308 call $~lib/util/number/dtoa - i32.const 4904 + i32.const 6008 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 275 + i32.const 72 + i32.const 277 i32.const 0 call $~lib/env/abort unreachable end f64.const -1e-308 call $~lib/util/number/dtoa - i32.const 4928 + i32.const 6040 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 276 + i32.const 72 + i32.const 278 i32.const 0 call $~lib/env/abort unreachable end f64.const 1e-323 call $~lib/util/number/dtoa - i32.const 4952 + i32.const 6072 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 277 + i32.const 72 + i32.const 279 i32.const 0 call $~lib/env/abort unreachable end f64.const -1e-323 call $~lib/util/number/dtoa - i32.const 4976 + i32.const 6104 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 278 + i32.const 72 + i32.const 280 i32.const 0 call $~lib/env/abort unreachable end f64.const 0 call $~lib/util/number/dtoa - i32.const 2984 + i32.const 3832 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 279 + i32.const 72 + i32.const 281 i32.const 0 call $~lib/env/abort unreachable end f64.const 4294967272 call $~lib/util/number/dtoa - i32.const 5000 + i32.const 6136 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 281 + i32.const 72 + i32.const 283 i32.const 0 call $~lib/env/abort unreachable end f64.const 1.2312145673456234e-08 call $~lib/util/number/dtoa - i32.const 5032 + i32.const 6176 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 282 + i32.const 72 + i32.const 284 i32.const 0 call $~lib/env/abort unreachable end f64.const 555555555.5555556 call $~lib/util/number/dtoa - i32.const 5088 + i32.const 6240 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 284 + i32.const 72 + i32.const 286 i32.const 0 call $~lib/env/abort unreachable end f64.const 0.9999999999999999 call $~lib/util/number/dtoa - i32.const 5136 + i32.const 6296 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 285 + i32.const 72 + i32.const 287 i32.const 0 call $~lib/env/abort unreachable end f64.const 1 call $~lib/util/number/dtoa - i32.const 4640 + i32.const 5656 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 286 + i32.const 72 + i32.const 288 i32.const 0 call $~lib/env/abort unreachable end f64.const 12.34 call $~lib/util/number/dtoa - i32.const 5184 + i32.const 6352 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 287 + i32.const 72 + i32.const 289 i32.const 0 call $~lib/env/abort unreachable end f64.const 0.3333333333333333 call $~lib/util/number/dtoa - i32.const 5208 + i32.const 6384 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 289 + i32.const 72 + i32.const 291 i32.const 0 call $~lib/env/abort unreachable end f64.const 1234e17 call $~lib/util/number/dtoa - i32.const 5256 + i32.const 6440 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 290 + i32.const 72 + i32.const 292 i32.const 0 call $~lib/env/abort unreachable end f64.const 1234e18 call $~lib/util/number/dtoa - i32.const 5312 + i32.const 6504 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 291 + i32.const 72 + i32.const 293 i32.const 0 call $~lib/env/abort unreachable end f64.const 2.71828 call $~lib/util/number/dtoa - i32.const 5344 + i32.const 6544 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 292 + i32.const 72 + i32.const 294 i32.const 0 call $~lib/env/abort unreachable end f64.const 0.0271828 call $~lib/util/number/dtoa - i32.const 5368 + i32.const 6576 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 293 + i32.const 72 + i32.const 295 i32.const 0 call $~lib/env/abort unreachable end f64.const 271.828 call $~lib/util/number/dtoa - i32.const 5400 + i32.const 6616 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 294 + i32.const 72 + i32.const 296 i32.const 0 call $~lib/env/abort unreachable end f64.const 1.1e+128 call $~lib/util/number/dtoa - i32.const 5424 + i32.const 6648 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 295 + i32.const 72 + i32.const 297 i32.const 0 call $~lib/env/abort unreachable end f64.const 1.1e-64 call $~lib/util/number/dtoa - i32.const 5448 + i32.const 6680 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 296 + i32.const 72 + i32.const 298 i32.const 0 call $~lib/env/abort unreachable end f64.const 0.000035689 call $~lib/util/number/dtoa - i32.const 5472 + i32.const 6712 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 297 + i32.const 72 + i32.const 299 i32.const 0 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/string.ts b/tests/compiler/std/string.ts index 5642cfb2..e448e0f3 100644 --- a/tests/compiler/std/string.ts +++ b/tests/compiler/std/string.ts @@ -1,4 +1,6 @@ import "allocator/arena"; +import "collector/dummy"; + import { utoa32, itoa32, diff --git a/tests/compiler/std/string.untouched.wat b/tests/compiler/std/string.untouched.wat index 55cfeb8d..3a3b500d 100644 --- a/tests/compiler/std/string.untouched.wat +++ b/tests/compiler/std/string.untouched.wat @@ -9,187 +9,188 @@ (type $FUNCSIG$dii (func (param i32 i32) (result f64))) (type $FUNCSIG$di (func (param i32) (result f64))) (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) + (type $FUNCSIG$vii (func (param i32 i32))) (type $FUNCSIG$ij (func (param i64) (result i32))) (type $FUNCSIG$viji (func (param i32 i64 i32))) (type $FUNCSIG$id (func (param f64) (result i32))) (type $FUNCSIG$iid (func (param i32 f64) (result i32))) + (type $FUNCSIG$jii (func (param i32 i32) (result i64))) (type $FUNCSIG$iijijiji (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $FUNCSIG$v (func)) (type $FUNCSIG$i (func (result i32))) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\01\00\00\00 \00\00\00h\00i\00,\00 \00I\00\'\00m\00 \00a\00 \00s\00t\00r\00i\00n\00g\00") - (data (i32.const 48) "\01\00\00\00\1a\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 88) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") - (data (i32.const 128) "\01\00\00\00\02\00\00\00\00\00") - (data (i32.const 144) "\01\00\00\00\02\00\00\006\00") - (data (i32.const 160) "\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 200) "\01\00\00\00\04\00\00\004\d8\06\df") - (data (i32.const 216) "\01\00\00\00\04\00\00\00h\00i\00") - (data (i32.const 232) "\01\00\00\00\08\00\00\00n\00u\00l\00l\00") - (data (i32.const 248) "\01\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g\00") - (data (i32.const 272) "\01\00\00\00\06\00\00\00I\00\'\00m\00") - (data (i32.const 288) "\01\00\00\00\02\00\00\00 \00") - (data (i32.const 304) "\01\00\00\00\00\00\00\00") - (data (i32.const 312) "\01\00\00\00\06\00\00\00 \00 \00 \00") - (data (i32.const 328) "\01\00\00\00\02\00\00\00a\00") - (data (i32.const 344) "\01\00\00\00\06\00\00\00a\00b\00c\00") - (data (i32.const 360) "\01\00\00\00\n\00\00\00 \00 \00a\00b\00c\00") - (data (i32.const 384) "\01\00\00\00\06\00\00\001\002\003\00") - (data (i32.const 400) "\01\00\00\00\0c\00\00\001\002\003\00a\00b\00c\00") - (data (i32.const 424) "\01\00\00\00\10\00\00\001\002\003\001\002\00a\00b\00c\00") - (data (i32.const 448) "\01\00\00\00\n\00\00\00a\00b\00c\00 \00 \00") - (data (i32.const 472) "\01\00\00\00\0c\00\00\00a\00b\00c\00a\00b\00c\00") - (data (i32.const 496) "\01\00\00\00\10\00\00\00a\00b\00c\00a\00b\00c\00a\00b\00") - (data (i32.const 520) "\01\00\00\00\02\00\00\00,\00") - (data (i32.const 536) "\01\00\00\00\02\00\00\00x\00") - (data (i32.const 552) "\01\00\00\00\06\00\00\00,\00 \00I\00") - (data (i32.const 568) "\01\00\00\00\02\00\00\00g\00") - (data (i32.const 584) "\01\00\00\00\02\00\00\00i\00") - (data (i32.const 600) "\01\00\00\00\02\00\00\000\00") - (data (i32.const 616) "\01\00\00\00\02\00\00\001\00") - (data (i32.const 632) "\01\00\00\00\n\00\00\000\00b\001\000\001\00") - (data (i32.const 656) "\01\00\00\00\n\00\00\000\00o\007\000\007\00") - (data (i32.const 680) "\01\00\00\00\n\00\00\000\00x\00f\000\00f\00") - (data (i32.const 704) "\01\00\00\00\n\00\00\000\00x\00F\000\00F\00") - (data (i32.const 728) "\01\00\00\00\06\00\00\000\001\001\00") - (data (i32.const 744) "\01\00\00\00\08\00\00\000\00x\001\00g\00") - (data (i32.const 760) "\01\00\00\00\06\00\00\000\00.\001\00") - (data (i32.const 776) "\01\00\00\00\06\00\00\00.\002\005\00") - (data (i32.const 792) "\01\00\00\00\10\00\00\00.\001\00f\00o\00o\00b\00a\00r\00") - (data (i32.const 816) "\01\00\00\00\02\00\00\00b\00") - (data (i32.const 832) "\01\00\00\00\04\00\00\00a\00b\00") - (data (i32.const 848) "\01\00\00\00\08\00\00\00k\00e\00y\001\00") - (data (i32.const 864) "\01\00\00\00\08\00\00\00k\00e\00y\002\00") - (data (i32.const 880) "\01\00\00\00\06\00\00\00k\00e\001\00") - (data (i32.const 896) "\01\00\00\00\06\00\00\00k\00e\002\00") - (data (i32.const 912) "\01\00\00\00\n\00\00\00k\00e\00y\001\002\00") - (data (i32.const 936) "\01\00\00\00\n\00\00\00k\00e\00y\001\001\00") - (data (i32.const 960) "\01\00\00\00\0e\00\00\00\a40\ed0\cf0\cb0\db0\d80\c80") - (data (i32.const 984) "\01\00\00\00\0e\00\00\00\a60\f00\ce0\aa0\af0\e40\de0") - (data (i32.const 1008) "\01\00\00\00\16\00\00\00D\00\19 f\00h\00u\00a\00s\00c\00a\00i\00l\00") - (data (i32.const 1040) "\01\00\00\00\14\00\00\00D\00\19 \1f\1eu\00a\00s\00c\00a\00i\00l\00") - (data (i32.const 1072) "\01\00\00\00\04\00\00\00b\00a\00") - (data (i32.const 1088) "\01\00\00\00\04\00\00\00a\00a\00") - (data (i32.const 1104) "\01\00\00\00\06\00\00\00a\00a\00a\00") - (data (i32.const 1120) "\01\00\00\00\10\00\00\00a\00b\00a\00b\00a\00b\00a\00b\00") - (data (i32.const 1144) "\01\00\00\00\n\00\00\00a\00a\00a\00a\00a\00") - (data (i32.const 1168) "\01\00\00\00\0c\00\00\00a\00a\00a\00a\00a\00a\00") - (data (i32.const 1192) "\01\00\00\00\0e\00\00\00a\00a\00a\00a\00a\00a\00a\00") - (data (i32.const 1216) "\01\00\00\00\1c\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00") - (data (i32.const 1256) "\01\00\00\00\02\00\00\00n\00") - (data (i32.const 1272) "\01\00\00\00\n\00\00\00j\00k\00l\00m\00n\00") - (data (i32.const 1296) "\01\00\00\00\n\00\00\00c\00d\00e\00f\00g\00") - (data (i32.const 1320) "\01\00\00\00\n\00\00\00d\00e\00f\00g\00h\00") - (data (i32.const 1344) "\01\00\00\00\1a\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00") - (data (i32.const 1384) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 1424) "\01\00\00\00\n\00\00\00a\00,\00b\00,\00c\00") - (data (i32.const 1448) "\01\00\00\00\02\00\00\00.\00") - (data (i32.const 1464) "\01\00\00\00\02\00\00\00c\00") - (data (i32.const 1480) "\01\00\00\00\0e\00\00\00a\00,\00 \00b\00,\00 \00c\00") - (data (i32.const 1504) "\01\00\00\00\04\00\00\00,\00 \00") - (data (i32.const 1520) "\01\00\00\00\0c\00\00\00a\00,\00b\00,\00,\00c\00") - (data (i32.const 1544) "\01\00\00\00\0c\00\00\00,\00a\00,\00b\00,\00c\00") - (data (i32.const 1568) "\01\00\00\00\0c\00\00\00a\00,\00b\00,\00c\00,\00") - (data (i32.const 1592) "\03\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 2000) "\04\00\00\00\10\00\00\00@\06\00\00@\06\00\00\90\01\00\00d\00\00\00") - (data (i32.const 2024) "\01\00\00\00\02\00\00\008\00") - (data (i32.const 2040) "\01\00\00\00\n\00\00\00-\001\000\000\000\00") - (data (i32.const 2064) "\01\00\00\00\08\00\00\001\002\003\004\00") - (data (i32.const 2080) "\01\00\00\00\n\00\00\001\002\003\004\005\00") - (data (i32.const 2104) "\01\00\00\00\0c\00\00\001\002\003\004\005\006\00") - (data (i32.const 2128) "\01\00\00\00\0e\00\00\001\001\001\001\001\001\001\00") - (data (i32.const 2152) "\01\00\00\00\0e\00\00\001\002\003\004\005\006\007\00") - (data (i32.const 2176) "\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\006\00") - (data (i32.const 2208) "\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\007\00") - (data (i32.const 2240) "\01\00\00\00\16\00\00\00-\002\001\004\007\004\008\003\006\004\008\00") - (data (i32.const 2272) "\01\00\00\00\04\00\00\00-\001\00") - (data (i32.const 2288) "\01\00\00\00\08\00\00\001\000\000\000\00") - (data (i32.const 2304) "\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\008\00") - (data (i32.const 2336) "\01\00\00\00\14\00\00\004\002\009\004\009\006\007\002\009\005\00") - (data (i32.const 2368) "\01\00\00\00\10\00\00\009\009\009\009\009\009\009\009\00") - (data (i32.const 2392) "\01\00\00\00\12\00\00\001\000\000\000\000\000\000\000\000\00") - (data (i32.const 2424) "\01\00\00\00\16\00\00\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 2456) "\01\00\00\00\18\00\00\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 2488) "\01\00\00\00\1e\00\00\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 2528) "\01\00\00\00 \00\00\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 2568) "\01\00\00\00\"\00\00\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 2616) "\01\00\00\00(\00\00\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00") - (data (i32.const 2664) "\01\00\00\00\n\00\00\00-\001\002\003\004\00") - (data (i32.const 2688) "\01\00\00\00\16\00\00\00-\004\002\009\004\009\006\007\002\009\005\00") - (data (i32.const 2720) "\01\00\00\00\18\00\00\00-\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 2752) "\01\00\00\00\1a\00\00\00-\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 2792) "\01\00\00\00 \00\00\00-\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 2832) "\01\00\00\00$\00\00\00-\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 2880) "\01\00\00\00&\00\00\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007\00") - (data (i32.const 2928) "\01\00\00\00(\00\00\00-\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\008\00") - (data (i32.const 2976) "\01\00\00\00\06\00\00\000\00.\000\00") - (data (i32.const 2992) "\01\00\00\00\06\00\00\00N\00a\00N\00") - (data (i32.const 3008) "\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 3040) "\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 3064) "\03\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#push (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#push (; 40 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $0 i32.load offset=12 + local.set $2 + local.get $2 i32.const 1 i32.add - local.set $2 + local.set $3 local.get $0 - local.get $2 + local.get $3 i32.const 2 call $~lib/array/ensureCapacity local.get $0 - local.get $2 - i32.store offset=12 - local.get $0 i32.load offset=4 local.get $2 - i32.const 1 - i32.sub i32.const 2 i32.shl i32.add + local.set $4 + local.get $4 + i32.load + local.set $5 + local.get $5 local.get $1 - i32.store - local.get $2 + i32.ne + if + local.get $4 + local.get $1 + i32.store + local.get $1 + local.get $0 + call $~lib/collector/dummy/__ref_link + local.get $5 + i32.const 0 + i32.ne + if + local.get $5 + local.get $0 + call $~lib/collector/dummy/__ref_unlink + end + end + local.get $0 + local.get $3 + i32.store offset=12 + local.get $3 ) - (func $~lib/string/String#split (; 39 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#__unchecked_set (; 41 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.set $3 + local.get $3 + i32.load + local.set $4 + local.get $2 + local.get $4 + i32.ne + if + local.get $3 + local.get $2 + i32.store + local.get $4 + i32.const 0 + i32.ne + if + local.get $4 + local.get $0 + call $~lib/collector/dummy/__ref_unlink + end + local.get $2 + local.get $0 + call $~lib/collector/dummy/__ref_link + end + ) + (func $~lib/string/String#split (; 42 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3982,8 +4108,8 @@ i32.eqz if i32.const 0 - i32.const 168 - i32.const 348 + i32.const 216 + i32.const 350 i32.const 4 call $~lib/env/abort unreachable @@ -4000,7 +4126,7 @@ local.get $3 i32.const 2 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end return end @@ -4018,14 +4144,21 @@ local.get $6 i32.const 2 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end local.set $3 local.get $3 i32.load offset=4 local.set $4 local.get $4 - local.get $0 + block (result i32) + local.get $0 + local.set $6 + local.get $6 + local.get $3 + call $~lib/collector/dummy/__ref_link + local.get $6 + end i32.store local.get $3 end @@ -4059,7 +4192,7 @@ local.get $4 i32.const 2 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end return end @@ -4081,7 +4214,7 @@ local.get $4 i32.const 2 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end local.set $4 local.get $4 @@ -4102,12 +4235,12 @@ i32.const 2 local.set $9 local.get $9 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $5 local.get $5 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $5 local.get $5 @@ -4125,6 +4258,9 @@ i32.add local.get $5 i32.store + local.get $5 + local.get $4 + call $~lib/collector/dummy/__ref_link end local.get $6 i32.const 1 @@ -4150,12 +4286,12 @@ local.get $3 i32.const 2 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end local.set $3 local.get $3 i32.load offset=4 - i32.const 312 + i32.const 416 i32.store local.get $3 return @@ -4170,7 +4306,7 @@ local.get $3 i32.const 2 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end local.set $10 i32.const 0 @@ -4210,7 +4346,7 @@ i32.shl local.set $4 local.get $4 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $4 local.get $4 @@ -4229,13 +4365,13 @@ local.set $6 local.get $6 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end call $~lib/array/Array#push drop else local.get $10 - i32.const 312 + i32.const 416 call $~lib/array/Array#push drop end @@ -4270,13 +4406,13 @@ local.get $3 i32.const 2 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end local.set $3 local.get $3 - i32.load offset=4 + i32.const 0 local.get $0 - i32.store + call $~lib/array/Array#__unchecked_set local.get $3 return end @@ -4294,7 +4430,7 @@ i32.shl local.set $3 local.get $3 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $3 local.get $3 @@ -4313,31 +4449,40 @@ local.set $4 local.get $4 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end call $~lib/array/Array#push drop else local.get $10 - i32.const 312 + i32.const 416 call $~lib/array/Array#push drop end local.get $10 ) - (func $~lib/array/Array#get:length (; 40 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 43 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__get (; 41 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 44 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) + (func $~lib/array/Array#__get (; 45 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if i32.const 0 - i32.const 1392 - i32.const 97 + i32.const 1912 + i32.const 95 i32.const 45 call $~lib/env/abort unreachable @@ -4350,21 +4495,17 @@ i32.ge_u if i32.const 0 - i32.const 1392 - i32.const 100 + i32.const 1912 + i32.const 98 i32.const 61 call $~lib/env/abort unreachable end local.get $0 - i32.load offset=4 local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load + call $~lib/array/Array#__unchecked_get ) - (func $~lib/util/number/decimalCount32 (; 42 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 46 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 100000 @@ -4433,7 +4574,7 @@ unreachable unreachable ) - (func $~lib/util/number/utoa32_lut (; 43 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa32_lut (; 47 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4441,7 +4582,7 @@ (local $7 i32) (local $8 i64) (local $9 i64) - i32.const 2008 + i32.const 2608 i32.load offset=4 local.set $3 block $break|0 @@ -4576,7 +4717,7 @@ i32.store16 end ) - (func $~lib/util/number/itoa32 (; 44 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 48 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4586,7 +4727,7 @@ local.get $0 i32.eqz if - i32.const 608 + i32.const 840 return end local.get $0 @@ -4611,7 +4752,7 @@ i32.shl local.set $3 local.get $3 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $4 block $~lib/util/number/utoa32_core|inlined.0 @@ -4637,10 +4778,10 @@ local.set $3 local.get $3 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end ) - (func $~lib/util/number/utoa32 (; 45 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/utoa32 (; 49 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4649,7 +4790,7 @@ local.get $0 i32.eqz if - i32.const 608 + i32.const 840 return end local.get $0 @@ -4661,7 +4802,7 @@ i32.shl local.set $2 local.get $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $3 block $~lib/util/number/utoa32_core|inlined.1 @@ -4681,10 +4822,10 @@ local.set $2 local.get $2 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end ) - (func $~lib/util/number/decimalCount64 (; 46 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/decimalCount64 (; 50 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) local.get $0 i64.const 1000000000000000 @@ -4753,7 +4894,7 @@ unreachable unreachable ) - (func $~lib/util/number/utoa64_lut (; 47 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa64_lut (; 51 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) (local $4 i64) (local $5 i32) @@ -4765,7 +4906,7 @@ (local $11 i32) (local $12 i64) (local $13 i64) - i32.const 2008 + i32.const 2608 i32.load offset=4 local.set $3 block $break|0 @@ -4881,7 +5022,7 @@ local.get $2 call $~lib/util/number/utoa32_lut ) - (func $~lib/util/number/utoa64 (; 48 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/utoa64 (; 52 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4892,7 +5033,7 @@ local.get $0 i64.eqz if - i32.const 608 + i32.const 840 return end local.get $0 @@ -4912,7 +5053,7 @@ i32.shl local.set $4 local.get $4 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 block $~lib/util/number/utoa32_core|inlined.2 @@ -4937,7 +5078,7 @@ i32.shl local.set $2 local.get $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 block $~lib/util/number/utoa64_core|inlined.0 @@ -4958,10 +5099,10 @@ local.set $3 local.get $3 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end ) - (func $~lib/util/number/itoa64 (; 49 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa64 (; 53 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4973,7 +5114,7 @@ local.get $0 i64.eqz if - i32.const 608 + i32.const 840 return end local.get $0 @@ -5006,7 +5147,7 @@ i32.shl local.set $5 local.get $5 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $2 block $~lib/util/number/utoa32_core|inlined.3 @@ -5033,7 +5174,7 @@ i32.shl local.set $3 local.get $3 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $2 block $~lib/util/number/utoa64_core|inlined.1 @@ -5060,22 +5201,40 @@ local.set $4 local.get $4 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end ) - (func $~lib/builtins/isFinite (; 50 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/builtins/isFinite (; 54 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 local.get $0 f64.sub f64.const 0 f64.eq ) - (func $~lib/builtins/isNaN (; 51 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/builtins/isNaN (; 55 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 local.get $0 f64.ne ) - (func $~lib/util/number/genDigits (; 52 ;) (type $FUNCSIG$iijijiji) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 56 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + ) + (func $~lib/array/Array#__unchecked_get (; 57 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + ) + (func $~lib/util/number/genDigits (; 58 ;) (type $FUNCSIG$iijijiji) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) (local $7 i32) (local $8 i64) (local $9 i64) @@ -5131,7 +5290,7 @@ local.set $14 local.get $6 local.set $15 - i32.const 4056 + i32.const 4976 i32.load offset=4 local.set $16 block $break|0 @@ -5646,7 +5805,7 @@ end local.get $15 ) - (func $~lib/util/number/prettify (; 53 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 59 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5979,7 +6138,7 @@ unreachable unreachable ) - (func $~lib/util/number/dtoa_core (; 54 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/util/number/dtoa_core (; 60 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 i32) (local $3 f64) (local $4 i32) @@ -6148,21 +6307,13 @@ i32.shl i32.sub global.set $~lib/util/number/_K - i32.const 3776 - i32.load offset=4 + i32.const 4664 local.get $13 - i32.const 3 - i32.shl - i32.add - i64.load + call $~lib/array/Array#__unchecked_get global.set $~lib/util/number/_frc_pow - i32.const 3984 - i32.load offset=4 + i32.const 4888 local.get $13 - i32.const 1 - i32.shl - i32.add - i32.load16_s + call $~lib/array/Array#__unchecked_get global.set $~lib/util/number/_exp_pow end local.get $9 @@ -6425,7 +6576,7 @@ local.get $2 i32.add ) - (func $~lib/string/String#substring (; 55 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substring (; 61 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6440,8 +6591,8 @@ i32.eqz if i32.const 0 - i32.const 168 - i32.const 187 + i32.const 216 + i32.const 189 i32.const 4 call $~lib/env/abort unreachable @@ -6510,7 +6661,7 @@ local.get $3 i32.eqz if - i32.const 312 + i32.const 416 return end local.get $8 @@ -6534,7 +6685,7 @@ local.get $3 local.set $4 local.get $4 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $10 local.get $10 @@ -6548,18 +6699,44 @@ local.set $4 local.get $4 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end ) - (func $~lib/runtime/doDiscard (; 56 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/discard (; 62 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) local.get $0 - call $~lib/runtime/assertUnregistered + global.get $~lib/memory/HEAP_BASE + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 120 + i32.const 185 + i32.const 4 + call $~lib/env/abort + unreachable + end local.get $0 global.get $~lib/runtime/HEADER_SIZE i32.sub + local.set $1 + local.get $1 + i32.load + global.get $~lib/runtime/HEADER_MAGIC + i32.eq + i32.eqz + if + i32.const 0 + i32.const 120 + i32.const 187 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 call $~lib/memory/memory.free ) - (func $~lib/util/number/dtoa (; 57 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/util/number/dtoa (; 63 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6568,7 +6745,7 @@ f64.const 0 f64.eq if - i32.const 2984 + i32.const 3832 return end local.get $0 @@ -6578,11 +6755,11 @@ local.get $0 call $~lib/builtins/isNaN if - i32.const 3000 + i32.const 3856 return end - i32.const 3016 - i32.const 3048 + i32.const 3880 + i32.const 3920 local.get $0 f64.const 0 f64.lt @@ -6595,7 +6772,7 @@ i32.shl local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $2 local.get $2 @@ -6611,22 +6788,22 @@ local.get $2 local.set $1 local.get $1 - call $~lib/runtime/doDiscard + call $~lib/runtime/discard end local.get $4 ) - (func $start:std/string (; 58 ;) (type $FUNCSIG$v) + (func $start:std/string (; 64 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) global.get $std/string/str - i32.const 16 + i32.const 24 i32.eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 16 + i32.const 72 + i32.const 18 i32.const 0 call $~lib/env/abort unreachable @@ -6638,8 +6815,8 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 18 + i32.const 72 + i32.const 20 i32.const 0 call $~lib/env/abort unreachable @@ -6652,8 +6829,8 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 19 + i32.const 72 + i32.const 21 i32.const 0 call $~lib/env/abort unreachable @@ -6670,26 +6847,26 @@ global.set $~lib/allocator/arena/offset i32.const 0 call $~lib/string/String.fromCharCode - i32.const 136 + i32.const 168 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 21 + i32.const 72 + i32.const 23 i32.const 0 call $~lib/env/abort unreachable end i32.const 54 call $~lib/string/String.fromCharCode - i32.const 152 + i32.const 192 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 22 + i32.const 72 + i32.const 24 i32.const 0 call $~lib/env/abort unreachable @@ -6698,39 +6875,39 @@ i32.const 54 i32.add call $~lib/string/String.fromCharCode - i32.const 152 + i32.const 192 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 23 + i32.const 72 + i32.const 25 i32.const 0 call $~lib/env/abort unreachable end i32.const 0 call $~lib/string/String.fromCodePoint - i32.const 136 + i32.const 168 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 25 + i32.const 72 + i32.const 27 i32.const 0 call $~lib/env/abort unreachable end i32.const 54 call $~lib/string/String.fromCodePoint - i32.const 152 + i32.const 192 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 26 + i32.const 72 + i32.const 28 i32.const 0 call $~lib/env/abort unreachable @@ -6739,35 +6916,35 @@ call $~lib/string/String.fromCodePoint i32.eqz if - i32.const 208 - i32.const 56 - i32.const 27 - i32.const 0 - call $~lib/env/abort - unreachable - end - global.get $std/string/str - i32.const 224 - i32.const 0 - call $~lib/string/String#startsWith - i32.eqz - if - i32.const 0 - i32.const 56 + i32.const 264 + i32.const 72 i32.const 29 i32.const 0 call $~lib/env/abort unreachable end global.get $std/string/str - i32.const 256 + i32.const 288 + i32.const 0 + call $~lib/string/String#startsWith + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 31 + i32.const 0 + call $~lib/env/abort + unreachable + end + global.get $std/string/str + i32.const 336 global.get $~lib/string/String.MAX_LENGTH call $~lib/string/String#endsWith i32.eqz if i32.const 0 - i32.const 56 - i32.const 30 + i32.const 72 + i32.const 32 i32.const 0 call $~lib/env/abort unreachable @@ -6775,7 +6952,7 @@ block $~lib/string/String#includes|inlined.0 (result i32) global.get $std/string/str local.set $2 - i32.const 280 + i32.const 368 local.set $1 i32.const 0 local.set $0 @@ -6791,119 +6968,44 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 31 - i32.const 0 - call $~lib/env/abort - unreachable - end - global.get $std/string/str - i32.const 0 - i32.const 296 - call $~lib/string/String#padStart - global.get $std/string/str - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 + i32.const 72 i32.const 33 i32.const 0 call $~lib/env/abort unreachable end global.get $std/string/str - i32.const 15 - i32.const 296 + i32.const 0 + i32.const 392 call $~lib/string/String#padStart global.get $std/string/str call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 34 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 312 - i32.const 3 - i32.const 296 - call $~lib/string/String#padStart - i32.const 320 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 + i32.const 72 i32.const 35 i32.const 0 call $~lib/env/abort unreachable end - i32.const 312 - i32.const 10 - i32.const 312 + global.get $std/string/str + i32.const 15 + i32.const 392 call $~lib/string/String#padStart - i32.const 312 + global.get $std/string/str call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 36 i32.const 0 call $~lib/env/abort unreachable end - i32.const 336 - i32.const 100 - i32.const 312 - call $~lib/string/String#padStart - i32.const 336 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 37 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 352 - i32.const 5 - i32.const 296 - call $~lib/string/String#padStart - i32.const 368 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 38 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 352 - i32.const 6 - i32.const 392 - call $~lib/string/String#padStart - i32.const 408 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 39 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 352 - i32.const 8 + i32.const 416 + i32.const 3 i32.const 392 call $~lib/string/String#padStart i32.const 432 @@ -6911,134 +7013,209 @@ i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 + i32.const 37 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 416 + i32.const 10 + i32.const 416 + call $~lib/string/String#padStart + i32.const 416 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 38 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 456 + i32.const 100 + i32.const 416 + call $~lib/string/String#padStart + i32.const 456 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 39 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 480 + i32.const 5 + i32.const 392 + call $~lib/string/String#padStart + i32.const 504 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 i32.const 40 i32.const 0 call $~lib/env/abort unreachable end - global.get $std/string/str - i32.const 0 - i32.const 296 - call $~lib/string/String#padEnd - global.get $std/string/str + i32.const 480 + i32.const 6 + i32.const 536 + call $~lib/string/String#padStart + i32.const 560 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 + i32.const 41 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 480 + i32.const 8 + i32.const 536 + call $~lib/string/String#padStart + i32.const 592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 i32.const 42 i32.const 0 call $~lib/env/abort unreachable end global.get $std/string/str - i32.const 15 - i32.const 296 + i32.const 0 + i32.const 392 call $~lib/string/String#padEnd global.get $std/string/str call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 43 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 312 - i32.const 3 - i32.const 296 - call $~lib/string/String#padEnd - i32.const 320 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 + i32.const 72 i32.const 44 i32.const 0 call $~lib/env/abort unreachable end - i32.const 312 - i32.const 10 - i32.const 312 + global.get $std/string/str + i32.const 15 + i32.const 392 call $~lib/string/String#padEnd - i32.const 312 + global.get $std/string/str call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 45 i32.const 0 call $~lib/env/abort unreachable end - i32.const 336 - i32.const 100 - i32.const 312 + i32.const 416 + i32.const 3 + i32.const 392 call $~lib/string/String#padEnd - i32.const 336 + i32.const 432 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 46 i32.const 0 call $~lib/env/abort unreachable end - i32.const 352 - i32.const 5 - i32.const 296 + i32.const 416 + i32.const 10 + i32.const 416 + call $~lib/string/String#padEnd + i32.const 416 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 47 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 456 + i32.const 100 + i32.const 416 call $~lib/string/String#padEnd i32.const 456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 47 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 352 - i32.const 6 - i32.const 352 - call $~lib/string/String#padEnd - i32.const 480 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 + i32.const 72 i32.const 48 i32.const 0 call $~lib/env/abort unreachable end - i32.const 352 - i32.const 8 - i32.const 352 + i32.const 480 + i32.const 5 + i32.const 392 call $~lib/string/String#padEnd - i32.const 504 + i32.const 624 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 49 i32.const 0 call $~lib/env/abort unreachable end - i32.const 312 - i32.const 312 + i32.const 480 + i32.const 6 + i32.const 480 + call $~lib/string/String#padEnd + i32.const 656 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 50 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 480 + i32.const 8 + i32.const 480 + call $~lib/string/String#padEnd + i32.const 688 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 51 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 416 + i32.const 416 i32.const 0 call $~lib/string/String#indexOf i32.const 0 @@ -7046,14 +7223,14 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 51 + i32.const 72 + i32.const 53 i32.const 0 call $~lib/env/abort unreachable end - i32.const 312 - i32.const 224 + i32.const 416 + i32.const 288 i32.const 0 call $~lib/string/String#indexOf i32.const -1 @@ -7061,44 +7238,14 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 52 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 336 - i32.const 336 - i32.const 0 - call $~lib/string/String#indexOf - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 53 - i32.const 0 - call $~lib/env/abort - unreachable - end - global.get $std/string/str - global.get $std/string/str - i32.const 0 - call $~lib/string/String#indexOf - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 56 + i32.const 72 i32.const 54 i32.const 0 call $~lib/env/abort unreachable end - global.get $std/string/str - i32.const 312 + i32.const 456 + i32.const 456 i32.const 0 call $~lib/string/String#indexOf i32.const 0 @@ -7106,14 +7253,44 @@ i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 55 i32.const 0 call $~lib/env/abort unreachable end global.get $std/string/str - i32.const 528 + global.get $std/string/str + i32.const 0 + call $~lib/string/String#indexOf + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 56 + i32.const 0 + call $~lib/env/abort + unreachable + end + global.get $std/string/str + i32.const 416 + i32.const 0 + call $~lib/string/String#indexOf + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 57 + i32.const 0 + call $~lib/env/abort + unreachable + end + global.get $std/string/str + i32.const 720 i32.const 0 call $~lib/string/String#indexOf i32.const 2 @@ -7121,14 +7298,14 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 56 + i32.const 72 + i32.const 58 i32.const 0 call $~lib/env/abort unreachable end global.get $std/string/str - i32.const 544 + i32.const 744 i32.const 0 call $~lib/string/String#indexOf i32.const -1 @@ -7136,14 +7313,14 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 57 + i32.const 72 + i32.const 59 i32.const 0 call $~lib/env/abort unreachable end global.get $std/string/str - i32.const 528 + i32.const 720 i32.const 2 call $~lib/string/String#indexOf i32.const 2 @@ -7151,14 +7328,14 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 58 + i32.const 72 + i32.const 60 i32.const 0 call $~lib/env/abort unreachable end global.get $std/string/str - i32.const 528 + i32.const 720 i32.const 3 call $~lib/string/String#indexOf i32.const -1 @@ -7166,14 +7343,14 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 59 + i32.const 72 + i32.const 61 i32.const 0 call $~lib/env/abort unreachable end global.get $std/string/str - i32.const 560 + i32.const 768 i32.const -1 call $~lib/string/String#indexOf i32.const 2 @@ -7181,14 +7358,14 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 60 + i32.const 72 + i32.const 62 i32.const 0 call $~lib/env/abort unreachable end - i32.const 312 - i32.const 312 + i32.const 416 + i32.const 416 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#lastIndexOf i32.const 0 @@ -7196,14 +7373,14 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 62 + i32.const 72 + i32.const 64 i32.const 0 call $~lib/env/abort unreachable end - i32.const 312 - i32.const 224 + i32.const 416 + i32.const 288 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#lastIndexOf i32.const -1 @@ -7211,14 +7388,14 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 63 + i32.const 72 + i32.const 65 i32.const 0 call $~lib/env/abort unreachable end global.get $std/string/str - i32.const 312 + i32.const 416 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#lastIndexOf global.get $std/string/str @@ -7227,14 +7404,14 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 64 + i32.const 72 + i32.const 66 i32.const 0 call $~lib/env/abort unreachable end global.get $std/string/str - i32.const 528 + i32.const 720 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#lastIndexOf i32.const 2 @@ -7242,14 +7419,14 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 65 + i32.const 72 + i32.const 67 i32.const 0 call $~lib/env/abort unreachable end global.get $std/string/str - i32.const 544 + i32.const 744 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#lastIndexOf i32.const -1 @@ -7257,14 +7434,14 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 66 + i32.const 72 + i32.const 68 i32.const 0 call $~lib/env/abort unreachable end global.get $std/string/str - i32.const 576 + i32.const 792 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#lastIndexOf i32.const 15 @@ -7272,14 +7449,14 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 67 + i32.const 72 + i32.const 69 i32.const 0 call $~lib/env/abort unreachable end global.get $std/string/str - i32.const 528 + i32.const 720 i32.const 2 call $~lib/string/String#lastIndexOf i32.const 2 @@ -7287,14 +7464,14 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 68 + i32.const 72 + i32.const 70 i32.const 0 call $~lib/env/abort unreachable end global.get $std/string/str - i32.const 528 + i32.const 720 i32.const 3 call $~lib/string/String#lastIndexOf i32.const 2 @@ -7302,44 +7479,44 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 69 - i32.const 0 - call $~lib/env/abort - unreachable - end - global.get $std/string/str - i32.const 560 - i32.const -1 - call $~lib/string/String#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 70 - i32.const 0 - call $~lib/env/abort - unreachable - end - global.get $std/string/str - i32.const 592 - i32.const 0 - call $~lib/string/String#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 56 + i32.const 72 i32.const 71 i32.const 0 call $~lib/env/abort unreachable end global.get $std/string/str - i32.const 224 + i32.const 768 + i32.const -1 + call $~lib/string/String#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 72 + i32.const 0 + call $~lib/env/abort + unreachable + end + global.get $std/string/str + i32.const 816 + i32.const 0 + call $~lib/string/String#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 73 + i32.const 0 + call $~lib/env/abort + unreachable + end + global.get $std/string/str + i32.const 288 i32.const 0 call $~lib/string/String#lastIndexOf i32.const 0 @@ -7347,13 +7524,13 @@ i32.eqz if i32.const 0 - i32.const 56 i32.const 72 + i32.const 74 i32.const 0 call $~lib/env/abort unreachable end - i32.const 608 + i32.const 840 i32.const 0 call $~lib/string/parseInt f64.const 0 @@ -7361,13 +7538,13 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 78 + i32.const 72 + i32.const 80 i32.const 0 call $~lib/env/abort unreachable end - i32.const 624 + i32.const 864 i32.const 0 call $~lib/string/parseInt f64.const 1 @@ -7375,13 +7552,13 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 79 + i32.const 72 + i32.const 81 i32.const 0 call $~lib/env/abort unreachable end - i32.const 640 + i32.const 888 i32.const 0 call $~lib/string/parseInt f64.const 5 @@ -7389,13 +7566,13 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 80 + i32.const 72 + i32.const 82 i32.const 0 call $~lib/env/abort unreachable end - i32.const 664 + i32.const 920 i32.const 0 call $~lib/string/parseInt f64.const 455 @@ -7403,41 +7580,41 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 81 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 688 - i32.const 0 - call $~lib/string/parseInt - f64.const 3855 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 82 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 712 - i32.const 0 - call $~lib/string/parseInt - f64.const 3855 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 56 + i32.const 72 i32.const 83 i32.const 0 call $~lib/env/abort unreachable end - i32.const 736 + i32.const 952 + i32.const 0 + call $~lib/string/parseInt + f64.const 3855 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 84 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 984 + i32.const 0 + call $~lib/string/parseInt + f64.const 3855 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 85 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 1016 i32.const 0 call $~lib/string/parseInt f64.const 11 @@ -7445,13 +7622,13 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 84 + i32.const 72 + i32.const 86 i32.const 0 call $~lib/env/abort unreachable end - i32.const 752 + i32.const 1040 i32.const 0 call $~lib/string/parseInt f64.const 1 @@ -7459,456 +7636,456 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 85 + i32.const 72 + i32.const 87 i32.const 0 call $~lib/env/abort unreachable end - i32.const 608 + i32.const 840 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 87 + i32.const 72 + i32.const 89 i32.const 0 call $~lib/env/abort unreachable end - i32.const 624 + i32.const 864 call $~lib/string/parseFloat f64.const 1 f64.eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 88 + i32.const 72 + i32.const 90 i32.const 0 call $~lib/env/abort unreachable end - i32.const 768 + i32.const 1064 call $~lib/string/parseFloat f64.const 0.1 f64.eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 89 + i32.const 72 + i32.const 91 i32.const 0 call $~lib/env/abort unreachable end - i32.const 784 + i32.const 1088 call $~lib/string/parseFloat f64.const 0.25 f64.eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 90 + i32.const 72 + i32.const 92 i32.const 0 call $~lib/env/abort unreachable end - i32.const 800 + i32.const 1112 call $~lib/string/parseFloat f64.const 0.1 f64.eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 91 + i32.const 72 + i32.const 93 i32.const 0 call $~lib/env/abort unreachable end - i32.const 336 - i32.const 824 + i32.const 456 + i32.const 1144 call $~lib/string/String.__concat global.set $std/string/c global.get $std/string/c - i32.const 840 + i32.const 1168 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 94 - i32.const 0 - call $~lib/env/abort - unreachable - end - global.get $std/string/c - i32.const 336 - call $~lib/string/String.__ne - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 95 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 312 - i32.const 312 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 + i32.const 72 i32.const 96 i32.const 0 call $~lib/env/abort unreachable end - i32.const 312 - global.get $std/string/nullStr + global.get $std/string/c + i32.const 456 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 97 i32.const 0 call $~lib/env/abort unreachable end - global.get $std/string/nullStr - i32.const 312 - call $~lib/string/String.__ne + i32.const 416 + i32.const 416 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 98 i32.const 0 call $~lib/env/abort unreachable end - i32.const 336 - i32.const 824 + i32.const 416 + global.get $std/string/nullStr call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 99 i32.const 0 call $~lib/env/abort unreachable end - i32.const 336 - i32.const 336 - call $~lib/string/String.__eq + global.get $std/string/nullStr + i32.const 416 + call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 100 i32.const 0 call $~lib/env/abort unreachable end - i32.const 856 - i32.const 872 + i32.const 456 + i32.const 1144 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 101 i32.const 0 call $~lib/env/abort unreachable end - i32.const 856 - i32.const 856 + i32.const 456 + i32.const 456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 102 i32.const 0 call $~lib/env/abort unreachable end - i32.const 888 - i32.const 904 + i32.const 1192 + i32.const 1216 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 103 i32.const 0 call $~lib/env/abort unreachable end - i32.const 920 - i32.const 944 - call $~lib/string/String.__ne + i32.const 1192 + i32.const 1192 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 104 i32.const 0 call $~lib/env/abort unreachable end - i32.const 968 - i32.const 968 - call $~lib/string/String.__eq + i32.const 1240 + i32.const 1264 + call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 105 i32.const 0 call $~lib/env/abort unreachable end - i32.const 968 - i32.const 992 + i32.const 1288 + i32.const 1320 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 106 i32.const 0 call $~lib/env/abort unreachable end - i32.const 1016 - i32.const 1048 - call $~lib/string/String.__ne + i32.const 1352 + i32.const 1352 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 107 i32.const 0 call $~lib/env/abort unreachable end - i32.const 824 - i32.const 336 - call $~lib/string/String.__gt + i32.const 1352 + i32.const 1384 + call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 + i32.const 108 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 1416 + i32.const 1456 + call $~lib/string/String.__ne + i32.eqz + if + i32.const 0 + i32.const 72 i32.const 109 i32.const 0 call $~lib/env/abort unreachable end - i32.const 1080 - i32.const 336 + i32.const 1144 + i32.const 456 call $~lib/string/String.__gt i32.eqz if i32.const 0 - i32.const 56 - i32.const 110 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 1080 - i32.const 1096 - call $~lib/string/String.__gte - i32.eqz - if - i32.const 0 - i32.const 56 + i32.const 72 i32.const 111 i32.const 0 call $~lib/env/abort unreachable end - i32.const 1080 - i32.const 840 + i32.const 1496 + i32.const 456 call $~lib/string/String.__gt i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 112 i32.const 0 call $~lib/env/abort unreachable end - i32.const 1080 - i32.const 840 - call $~lib/string/String.__lt - i32.eqz + i32.const 1496 + i32.const 1520 + call $~lib/string/String.__gte i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 113 i32.const 0 call $~lib/env/abort unreachable end - i32.const 824 - global.get $std/string/nullStr + i32.const 1496 + i32.const 1168 + call $~lib/string/String.__gt + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 114 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 1496 + i32.const 1168 call $~lib/string/String.__lt i32.eqz i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 115 i32.const 0 call $~lib/env/abort unreachable end + i32.const 1144 global.get $std/string/nullStr - i32.const 824 call $~lib/string/String.__lt i32.eqz i32.eqz if i32.const 0 - i32.const 56 - i32.const 116 + i32.const 72 + i32.const 117 i32.const 0 call $~lib/env/abort unreachable end - i32.const 352 - i32.const 312 - call $~lib/string/String.__gt + global.get $std/string/nullStr + i32.const 1144 + call $~lib/string/String.__lt + i32.eqz i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 118 i32.const 0 call $~lib/env/abort unreachable end - i32.const 312 - i32.const 352 - call $~lib/string/String.__lt + i32.const 480 + i32.const 416 + call $~lib/string/String.__gt i32.eqz if i32.const 0 - i32.const 56 - i32.const 119 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 352 - i32.const 312 - call $~lib/string/String.__gte - i32.eqz - if - i32.const 0 - i32.const 56 + i32.const 72 i32.const 120 i32.const 0 call $~lib/env/abort unreachable end - i32.const 312 - i32.const 352 - call $~lib/string/String.__lte + i32.const 416 + i32.const 480 + call $~lib/string/String.__lt i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 121 i32.const 0 call $~lib/env/abort unreachable end - i32.const 352 - i32.const 312 - call $~lib/string/String.__lt - i32.eqz + i32.const 480 + i32.const 416 + call $~lib/string/String.__gte i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 122 i32.const 0 call $~lib/env/abort unreachable end - i32.const 312 - i32.const 352 - call $~lib/string/String.__gt - i32.eqz + i32.const 416 + i32.const 480 + call $~lib/string/String.__lte i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 123 i32.const 0 call $~lib/env/abort unreachable end - i32.const 312 - i32.const 312 + i32.const 480 + i32.const 416 call $~lib/string/String.__lt i32.eqz i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 124 i32.const 0 call $~lib/env/abort unreachable end - i32.const 312 - i32.const 312 + i32.const 416 + i32.const 480 call $~lib/string/String.__gt i32.eqz i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 125 i32.const 0 call $~lib/env/abort unreachable end - i32.const 312 - i32.const 312 - call $~lib/string/String.__gte + i32.const 416 + i32.const 416 + call $~lib/string/String.__lt + i32.eqz i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 126 i32.const 0 call $~lib/env/abort unreachable end - i32.const 312 - i32.const 312 + i32.const 416 + i32.const 416 + call $~lib/string/String.__gt + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 127 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 416 + i32.const 416 + call $~lib/string/String.__gte + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 128 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 416 + i32.const 416 call $~lib/string/String.__lte i32.eqz if i32.const 0 - i32.const 56 - i32.const 127 + i32.const 72 + i32.const 129 i32.const 0 call $~lib/env/abort unreachable @@ -7928,164 +8105,164 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 131 + i32.const 72 + i32.const 133 i32.const 0 call $~lib/env/abort unreachable end - i32.const 392 + i32.const 536 call $~lib/string/String#get:length i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 133 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 312 - i32.const 100 - call $~lib/string/String#repeat - i32.const 312 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 + i32.const 72 i32.const 135 i32.const 0 call $~lib/env/abort unreachable end - i32.const 336 - i32.const 0 + i32.const 416 + i32.const 100 call $~lib/string/String#repeat - i32.const 312 + i32.const 416 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 136 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 336 - i32.const 1 - call $~lib/string/String#repeat - i32.const 336 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 + i32.const 72 i32.const 137 i32.const 0 call $~lib/env/abort unreachable end - i32.const 336 - i32.const 2 + i32.const 456 + i32.const 0 call $~lib/string/String#repeat - i32.const 1096 + i32.const 416 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 138 i32.const 0 call $~lib/env/abort unreachable end - i32.const 336 - i32.const 3 + i32.const 456 + i32.const 1 call $~lib/string/String#repeat - i32.const 1112 + i32.const 456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 139 i32.const 0 call $~lib/env/abort unreachable end - i32.const 840 - i32.const 4 + i32.const 456 + i32.const 2 call $~lib/string/String#repeat - i32.const 1128 + i32.const 1520 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 140 i32.const 0 call $~lib/env/abort unreachable end - i32.const 336 - i32.const 5 + i32.const 456 + i32.const 3 call $~lib/string/String#repeat - i32.const 1152 + i32.const 1544 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 141 i32.const 0 call $~lib/env/abort unreachable end - i32.const 336 - i32.const 6 + i32.const 1168 + i32.const 4 call $~lib/string/String#repeat - i32.const 1176 + i32.const 1568 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 142 i32.const 0 call $~lib/env/abort unreachable end - i32.const 336 - i32.const 7 + i32.const 456 + i32.const 5 call $~lib/string/String#repeat - i32.const 1200 + i32.const 1600 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 143 i32.const 0 call $~lib/env/abort unreachable end - i32.const 1224 + i32.const 456 + i32.const 6 + call $~lib/string/String#repeat + i32.const 1632 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 144 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 456 + i32.const 7 + call $~lib/string/String#repeat + i32.const 1664 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 145 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 1696 global.set $std/string/str global.get $std/string/str i32.const 0 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#slice - i32.const 1224 + i32.const 1696 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 147 + i32.const 72 + i32.const 149 i32.const 0 call $~lib/env/abort unreachable @@ -8094,13 +8271,13 @@ i32.const -1 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#slice - i32.const 1264 + i32.const 1744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 148 + i32.const 72 + i32.const 150 i32.const 0 call $~lib/env/abort unreachable @@ -8109,13 +8286,13 @@ i32.const -5 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#slice - i32.const 1280 + i32.const 1768 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 149 + i32.const 72 + i32.const 151 i32.const 0 call $~lib/env/abort unreachable @@ -8124,13 +8301,13 @@ i32.const 2 i32.const 7 call $~lib/string/String#slice - i32.const 1304 + i32.const 1800 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 150 + i32.const 72 + i32.const 152 i32.const 0 call $~lib/env/abort unreachable @@ -8139,48 +8316,48 @@ i32.const -11 i32.const -6 call $~lib/string/String#slice - i32.const 1328 + i32.const 1832 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 151 - i32.const 0 - call $~lib/env/abort - unreachable - end - global.get $std/string/str - i32.const 4 - i32.const 3 - call $~lib/string/String#slice - i32.const 312 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 152 - i32.const 0 - call $~lib/env/abort - unreachable - end - global.get $std/string/str - i32.const 0 - i32.const -1 - call $~lib/string/String#slice - i32.const 1352 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 + i32.const 72 i32.const 153 i32.const 0 call $~lib/env/abort unreachable end - i32.const 312 + global.get $std/string/str + i32.const 4 + i32.const 3 + call $~lib/string/String#slice + i32.const 416 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 154 + i32.const 0 + call $~lib/env/abort + unreachable + end + global.get $std/string/str + i32.const 0 + i32.const -1 + call $~lib/string/String#slice + i32.const 1864 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 155 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 416 i32.const 0 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split @@ -8194,7 +8371,7 @@ global.get $std/string/sa i32.const 0 call $~lib/array/Array#__get - i32.const 312 + i32.const 416 call $~lib/string/String.__eq else local.get $0 @@ -8202,60 +8379,32 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 158 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 312 - i32.const 312 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - global.set $std/string/sa - global.get $std/string/sa - call $~lib/array/Array#get:length - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 56 + i32.const 72 i32.const 160 i32.const 0 call $~lib/env/abort unreachable end - i32.const 312 - i32.const 528 + i32.const 416 + i32.const 416 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split global.set $std/string/sa global.get $std/string/sa call $~lib/array/Array#get:length - i32.const 1 + i32.const 0 i32.eq - local.tee $0 - if (result i32) - global.get $std/string/sa - i32.const 0 - call $~lib/array/Array#__get - i32.const 312 - call $~lib/string/String.__eq - else - local.get $0 - end i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 162 i32.const 0 call $~lib/env/abort unreachable end - i32.const 1432 - i32.const 1456 + i32.const 416 + i32.const 720 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split global.set $std/string/sa @@ -8268,7 +8417,7 @@ global.get $std/string/sa i32.const 0 call $~lib/array/Array#__get - i32.const 1432 + i32.const 416 call $~lib/string/String.__eq else local.get $0 @@ -8276,47 +8425,27 @@ i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 164 i32.const 0 call $~lib/env/abort unreachable end - i32.const 1432 - i32.const 528 + i32.const 1960 + i32.const 1992 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split global.set $std/string/sa global.get $std/string/sa call $~lib/array/Array#get:length - i32.const 3 + i32.const 1 i32.eq local.tee $0 if (result i32) global.get $std/string/sa i32.const 0 call $~lib/array/Array#__get - i32.const 336 - call $~lib/string/String.__eq - else - local.get $0 - end - local.tee $0 - if (result i32) - global.get $std/string/sa - i32.const 1 - call $~lib/array/Array#__get - i32.const 824 - call $~lib/string/String.__eq - else - local.get $0 - end - local.tee $0 - if (result i32) - global.get $std/string/sa - i32.const 2 - call $~lib/array/Array#__get - i32.const 1472 + i32.const 1960 call $~lib/string/String.__eq else local.get $0 @@ -8324,14 +8453,14 @@ i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 166 i32.const 0 call $~lib/env/abort unreachable end - i32.const 1488 - i32.const 1512 + i32.const 1960 + i32.const 720 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split global.set $std/string/sa @@ -8344,7 +8473,7 @@ global.get $std/string/sa i32.const 0 call $~lib/array/Array#__get - i32.const 336 + i32.const 456 call $~lib/string/String.__eq else local.get $0 @@ -8354,7 +8483,7 @@ global.get $std/string/sa i32.const 1 call $~lib/array/Array#__get - i32.const 824 + i32.const 1144 call $~lib/string/String.__eq else local.get $0 @@ -8364,7 +8493,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array#__get - i32.const 1472 + i32.const 2016 call $~lib/string/String.__eq else local.get $0 @@ -8372,27 +8501,27 @@ i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 168 i32.const 0 call $~lib/env/abort unreachable end - i32.const 1528 - i32.const 528 + i32.const 2040 + i32.const 2072 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split global.set $std/string/sa global.get $std/string/sa call $~lib/array/Array#get:length - i32.const 4 + i32.const 3 i32.eq local.tee $0 if (result i32) global.get $std/string/sa i32.const 0 call $~lib/array/Array#__get - i32.const 336 + i32.const 456 call $~lib/string/String.__eq else local.get $0 @@ -8402,7 +8531,7 @@ global.get $std/string/sa i32.const 1 call $~lib/array/Array#__get - i32.const 824 + i32.const 1144 call $~lib/string/String.__eq else local.get $0 @@ -8412,17 +8541,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array#__get - i32.const 312 - call $~lib/string/String.__eq - else - local.get $0 - end - local.tee $0 - if (result i32) - global.get $std/string/sa - i32.const 3 - call $~lib/array/Array#__get - i32.const 1472 + i32.const 2016 call $~lib/string/String.__eq else local.get $0 @@ -8430,14 +8549,14 @@ i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 170 i32.const 0 call $~lib/env/abort unreachable end - i32.const 1552 - i32.const 528 + i32.const 2096 + i32.const 720 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split global.set $std/string/sa @@ -8450,7 +8569,7 @@ global.get $std/string/sa i32.const 0 call $~lib/array/Array#__get - i32.const 312 + i32.const 456 call $~lib/string/String.__eq else local.get $0 @@ -8460,7 +8579,7 @@ global.get $std/string/sa i32.const 1 call $~lib/array/Array#__get - i32.const 336 + i32.const 1144 call $~lib/string/String.__eq else local.get $0 @@ -8470,7 +8589,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array#__get - i32.const 824 + i32.const 416 call $~lib/string/String.__eq else local.get $0 @@ -8480,7 +8599,7 @@ global.get $std/string/sa i32.const 3 call $~lib/array/Array#__get - i32.const 1472 + i32.const 2016 call $~lib/string/String.__eq else local.get $0 @@ -8488,14 +8607,14 @@ i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 172 i32.const 0 call $~lib/env/abort unreachable end - i32.const 1576 - i32.const 528 + i32.const 2128 + i32.const 720 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split global.set $std/string/sa @@ -8508,7 +8627,7 @@ global.get $std/string/sa i32.const 0 call $~lib/array/Array#__get - i32.const 336 + i32.const 416 call $~lib/string/String.__eq else local.get $0 @@ -8518,7 +8637,7 @@ global.get $std/string/sa i32.const 1 call $~lib/array/Array#__get - i32.const 824 + i32.const 456 call $~lib/string/String.__eq else local.get $0 @@ -8528,7 +8647,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array#__get - i32.const 1472 + i32.const 1144 call $~lib/string/String.__eq else local.get $0 @@ -8538,7 +8657,7 @@ global.get $std/string/sa i32.const 3 call $~lib/array/Array#__get - i32.const 312 + i32.const 2016 call $~lib/string/String.__eq else local.get $0 @@ -8546,14 +8665,72 @@ i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 174 i32.const 0 call $~lib/env/abort unreachable end - i32.const 352 - i32.const 312 + i32.const 2160 + i32.const 720 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#split + global.set $std/string/sa + global.get $std/string/sa + call $~lib/array/Array#get:length + i32.const 4 + i32.eq + local.tee $0 + if (result i32) + global.get $std/string/sa + i32.const 0 + call $~lib/array/Array#__get + i32.const 456 + call $~lib/string/String.__eq + else + local.get $0 + end + local.tee $0 + if (result i32) + global.get $std/string/sa + i32.const 1 + call $~lib/array/Array#__get + i32.const 1144 + call $~lib/string/String.__eq + else + local.get $0 + end + local.tee $0 + if (result i32) + global.get $std/string/sa + i32.const 2 + call $~lib/array/Array#__get + i32.const 2016 + call $~lib/string/String.__eq + else + local.get $0 + end + local.tee $0 + if (result i32) + global.get $std/string/sa + i32.const 3 + call $~lib/array/Array#__get + i32.const 416 + call $~lib/string/String.__eq + else + local.get $0 + end + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 176 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 480 + i32.const 416 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split global.set $std/string/sa @@ -8566,7 +8743,7 @@ global.get $std/string/sa i32.const 0 call $~lib/array/Array#__get - i32.const 336 + i32.const 456 call $~lib/string/String.__eq else local.get $0 @@ -8576,7 +8753,7 @@ global.get $std/string/sa i32.const 1 call $~lib/array/Array#__get - i32.const 824 + i32.const 1144 call $~lib/string/String.__eq else local.get $0 @@ -8586,7 +8763,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array#__get - i32.const 1472 + i32.const 2016 call $~lib/string/String.__eq else local.get $0 @@ -8594,60 +8771,32 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 176 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 352 - i32.const 312 - i32.const 0 - call $~lib/string/String#split - global.set $std/string/sa - global.get $std/string/sa - call $~lib/array/Array#get:length - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 56 + i32.const 72 i32.const 178 i32.const 0 call $~lib/env/abort unreachable end - i32.const 352 - i32.const 312 - i32.const 1 + i32.const 480 + i32.const 416 + i32.const 0 call $~lib/string/String#split global.set $std/string/sa global.get $std/string/sa call $~lib/array/Array#get:length - i32.const 1 + i32.const 0 i32.eq - local.tee $0 - if (result i32) - global.get $std/string/sa - i32.const 0 - call $~lib/array/Array#__get - i32.const 336 - call $~lib/string/String.__eq - else - local.get $0 - end i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 180 i32.const 0 call $~lib/env/abort unreachable end - i32.const 1432 - i32.const 528 + i32.const 480 + i32.const 416 i32.const 1 call $~lib/string/String#split global.set $std/string/sa @@ -8660,7 +8809,7 @@ global.get $std/string/sa i32.const 0 call $~lib/array/Array#__get - i32.const 336 + i32.const 456 call $~lib/string/String.__eq else local.get $0 @@ -8668,14 +8817,42 @@ i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 182 i32.const 0 call $~lib/env/abort unreachable end - i32.const 352 - i32.const 312 + i32.const 1960 + i32.const 720 + i32.const 1 + call $~lib/string/String#split + global.set $std/string/sa + global.get $std/string/sa + call $~lib/array/Array#get:length + i32.const 1 + i32.eq + local.tee $0 + if (result i32) + global.get $std/string/sa + i32.const 0 + call $~lib/array/Array#__get + i32.const 456 + call $~lib/string/String.__eq + else + local.get $0 + end + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 184 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 480 + i32.const 416 i32.const 4 call $~lib/string/String#split global.set $std/string/sa @@ -8688,7 +8865,7 @@ global.get $std/string/sa i32.const 0 call $~lib/array/Array#__get - i32.const 336 + i32.const 456 call $~lib/string/String.__eq else local.get $0 @@ -8698,7 +8875,7 @@ global.get $std/string/sa i32.const 1 call $~lib/array/Array#__get - i32.const 824 + i32.const 1144 call $~lib/string/String.__eq else local.get $0 @@ -8708,7 +8885,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array#__get - i32.const 1472 + i32.const 2016 call $~lib/string/String.__eq else local.get $0 @@ -8716,62 +8893,14 @@ i32.eqz if i32.const 0 - i32.const 56 - i32.const 184 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 352 - i32.const 312 - i32.const -1 - call $~lib/string/String#split - global.set $std/string/sa - global.get $std/string/sa - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - local.tee $0 - if (result i32) - global.get $std/string/sa - i32.const 0 - call $~lib/array/Array#__get - i32.const 336 - call $~lib/string/String.__eq - else - local.get $0 - end - local.tee $0 - if (result i32) - global.get $std/string/sa - i32.const 1 - call $~lib/array/Array#__get - i32.const 824 - call $~lib/string/String.__eq - else - local.get $0 - end - local.tee $0 - if (result i32) - global.get $std/string/sa - i32.const 2 - call $~lib/array/Array#__get - i32.const 1472 - call $~lib/string/String.__eq - else - local.get $0 - end - i32.eqz - if - i32.const 0 - i32.const 56 + i32.const 72 i32.const 186 i32.const 0 call $~lib/env/abort unreachable end - i32.const 1432 - i32.const 528 + i32.const 480 + i32.const 416 i32.const -1 call $~lib/string/String#split global.set $std/string/sa @@ -8784,7 +8913,7 @@ global.get $std/string/sa i32.const 0 call $~lib/array/Array#__get - i32.const 336 + i32.const 456 call $~lib/string/String.__eq else local.get $0 @@ -8794,7 +8923,7 @@ global.get $std/string/sa i32.const 1 call $~lib/array/Array#__get - i32.const 824 + i32.const 1144 call $~lib/string/String.__eq else local.get $0 @@ -8804,7 +8933,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array#__get - i32.const 1472 + i32.const 2016 call $~lib/string/String.__eq else local.get $0 @@ -8812,1077 +8941,1125 @@ i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 188 i32.const 0 call $~lib/env/abort unreachable end + i32.const 1960 + i32.const 720 + i32.const -1 + call $~lib/string/String#split + global.set $std/string/sa + global.get $std/string/sa + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + local.tee $0 + if (result i32) + global.get $std/string/sa + i32.const 0 + call $~lib/array/Array#__get + i32.const 456 + call $~lib/string/String.__eq + else + local.get $0 + end + local.tee $0 + if (result i32) + global.get $std/string/sa + i32.const 1 + call $~lib/array/Array#__get + i32.const 1144 + call $~lib/string/String.__eq + else + local.get $0 + end + local.tee $0 + if (result i32) + global.get $std/string/sa + i32.const 2 + call $~lib/array/Array#__get + i32.const 2016 + call $~lib/string/String.__eq + else + local.get $0 + end + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 190 + i32.const 0 + call $~lib/env/abort + unreachable + end i32.const 0 call $~lib/util/number/itoa32 - i32.const 608 + i32.const 840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 190 + i32.const 72 + i32.const 192 i32.const 0 call $~lib/env/abort unreachable end i32.const 1 call $~lib/util/number/itoa32 - i32.const 624 + i32.const 864 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 191 + i32.const 72 + i32.const 193 i32.const 0 call $~lib/env/abort unreachable end i32.const 8 call $~lib/util/number/itoa32 - i32.const 2032 + i32.const 2640 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 192 + i32.const 72 + i32.const 194 i32.const 0 call $~lib/env/abort unreachable end i32.const 123 call $~lib/util/number/itoa32 - i32.const 392 + i32.const 536 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 193 + i32.const 72 + i32.const 195 i32.const 0 call $~lib/env/abort unreachable end i32.const -1000 call $~lib/util/number/itoa32 - i32.const 2048 + i32.const 2664 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 194 + i32.const 72 + i32.const 196 i32.const 0 call $~lib/env/abort unreachable end i32.const 1234 call $~lib/util/number/itoa32 - i32.const 2072 + i32.const 2696 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 195 + i32.const 72 + i32.const 197 i32.const 0 call $~lib/env/abort unreachable end i32.const 12345 call $~lib/util/number/itoa32 - i32.const 2088 + i32.const 2720 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 196 + i32.const 72 + i32.const 198 i32.const 0 call $~lib/env/abort unreachable end i32.const 123456 call $~lib/util/number/itoa32 - i32.const 2112 + i32.const 2752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 197 + i32.const 72 + i32.const 199 i32.const 0 call $~lib/env/abort unreachable end i32.const 1111111 call $~lib/util/number/itoa32 - i32.const 2136 + i32.const 2784 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 198 + i32.const 72 + i32.const 200 i32.const 0 call $~lib/env/abort unreachable end i32.const 1234567 call $~lib/util/number/itoa32 - i32.const 2160 + i32.const 2816 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 199 + i32.const 72 + i32.const 201 i32.const 0 call $~lib/env/abort unreachable end i32.const 2147483646 call $~lib/util/number/itoa32 - i32.const 2184 + i32.const 2848 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 200 + i32.const 72 + i32.const 202 i32.const 0 call $~lib/env/abort unreachable end i32.const 2147483647 call $~lib/util/number/itoa32 - i32.const 2216 + i32.const 2888 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 201 + i32.const 72 + i32.const 203 i32.const 0 call $~lib/env/abort unreachable end i32.const -2147483648 call $~lib/util/number/itoa32 - i32.const 2248 + i32.const 2928 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 202 + i32.const 72 + i32.const 204 i32.const 0 call $~lib/env/abort unreachable end i32.const -1 call $~lib/util/number/itoa32 - i32.const 2280 + i32.const 2968 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 203 + i32.const 72 + i32.const 205 i32.const 0 call $~lib/env/abort unreachable end i32.const 0 call $~lib/util/number/utoa32 - i32.const 608 + i32.const 840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 205 + i32.const 72 + i32.const 207 i32.const 0 call $~lib/env/abort unreachable end i32.const 1000 call $~lib/util/number/utoa32 - i32.const 2296 + i32.const 2992 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 206 + i32.const 72 + i32.const 208 i32.const 0 call $~lib/env/abort unreachable end i32.const 2147483647 call $~lib/util/number/utoa32 - i32.const 2216 + i32.const 2888 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 207 + i32.const 72 + i32.const 209 i32.const 0 call $~lib/env/abort unreachable end i32.const -2147483648 call $~lib/util/number/utoa32 - i32.const 2312 + i32.const 3016 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 208 + i32.const 72 + i32.const 210 i32.const 0 call $~lib/env/abort unreachable end global.get $~lib/builtins/u32.MAX_VALUE call $~lib/util/number/utoa32 - i32.const 2344 + i32.const 3056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 209 + i32.const 72 + i32.const 211 i32.const 0 call $~lib/env/abort unreachable end i64.const 0 call $~lib/util/number/utoa64 - i32.const 608 + i32.const 840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 211 + i32.const 72 + i32.const 213 i32.const 0 call $~lib/env/abort unreachable end i64.const 1234 call $~lib/util/number/utoa64 - i32.const 2072 + i32.const 2696 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 212 + i32.const 72 + i32.const 214 i32.const 0 call $~lib/env/abort unreachable end i64.const 99999999 call $~lib/util/number/utoa64 - i32.const 2376 + i32.const 3096 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 213 + i32.const 72 + i32.const 215 i32.const 0 call $~lib/env/abort unreachable end i64.const 100000000 call $~lib/util/number/utoa64 - i32.const 2400 + i32.const 3128 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 214 + i32.const 72 + i32.const 216 i32.const 0 call $~lib/env/abort unreachable end i64.const 4294967295 call $~lib/util/number/utoa64 - i32.const 2344 + i32.const 3056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 215 + i32.const 72 + i32.const 217 i32.const 0 call $~lib/env/abort unreachable end i64.const 68719476735 call $~lib/util/number/utoa64 - i32.const 2432 + i32.const 3168 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 216 + i32.const 72 + i32.const 218 i32.const 0 call $~lib/env/abort unreachable end i64.const 868719476735 call $~lib/util/number/utoa64 - i32.const 2464 + i32.const 3208 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 217 + i32.const 72 + i32.const 219 i32.const 0 call $~lib/env/abort unreachable end i64.const 999868719476735 call $~lib/util/number/utoa64 - i32.const 2496 + i32.const 3248 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 218 + i32.const 72 + i32.const 220 i32.const 0 call $~lib/env/abort unreachable end i64.const 9999868719476735 call $~lib/util/number/utoa64 - i32.const 2536 + i32.const 3296 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 219 + i32.const 72 + i32.const 221 i32.const 0 call $~lib/env/abort unreachable end i64.const 19999868719476735 call $~lib/util/number/utoa64 - i32.const 2576 + i32.const 3344 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 220 + i32.const 72 + i32.const 222 i32.const 0 call $~lib/env/abort unreachable end global.get $~lib/builtins/u64.MAX_VALUE call $~lib/util/number/utoa64 - i32.const 2624 + i32.const 3400 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 221 + i32.const 72 + i32.const 223 i32.const 0 call $~lib/env/abort unreachable end i64.const 0 call $~lib/util/number/itoa64 - i32.const 608 + i32.const 840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 223 + i32.const 72 + i32.const 225 i32.const 0 call $~lib/env/abort unreachable end i64.const -1234 call $~lib/util/number/itoa64 - i32.const 2672 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 224 + i32.const 72 + i32.const 226 i32.const 0 call $~lib/env/abort unreachable end i64.const 4294967295 call $~lib/util/number/itoa64 - i32.const 2344 + i32.const 3056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 225 + i32.const 72 + i32.const 227 i32.const 0 call $~lib/env/abort unreachable end i64.const -4294967295 call $~lib/util/number/itoa64 - i32.const 2696 + i32.const 3488 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 226 + i32.const 72 + i32.const 228 i32.const 0 call $~lib/env/abort unreachable end i64.const 68719476735 call $~lib/util/number/itoa64 - i32.const 2432 + i32.const 3168 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 227 + i32.const 72 + i32.const 229 i32.const 0 call $~lib/env/abort unreachable end i64.const -68719476735 call $~lib/util/number/itoa64 - i32.const 2728 + i32.const 3528 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 228 + i32.const 72 + i32.const 230 i32.const 0 call $~lib/env/abort unreachable end i64.const -868719476735 call $~lib/util/number/itoa64 - i32.const 2760 + i32.const 3568 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 229 + i32.const 72 + i32.const 231 i32.const 0 call $~lib/env/abort unreachable end i64.const -999868719476735 call $~lib/util/number/itoa64 - i32.const 2800 + i32.const 3616 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 230 + i32.const 72 + i32.const 232 i32.const 0 call $~lib/env/abort unreachable end i64.const -19999868719476735 call $~lib/util/number/itoa64 - i32.const 2840 + i32.const 3664 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 231 + i32.const 72 + i32.const 233 i32.const 0 call $~lib/env/abort unreachable end global.get $~lib/builtins/i64.MAX_VALUE call $~lib/util/number/itoa64 - i32.const 2888 + i32.const 3720 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 232 + i32.const 72 + i32.const 234 i32.const 0 call $~lib/env/abort unreachable end global.get $~lib/builtins/i64.MIN_VALUE call $~lib/util/number/itoa64 - i32.const 2936 + i32.const 3776 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 233 + i32.const 72 + i32.const 235 i32.const 0 call $~lib/env/abort unreachable end f64.const 0 call $~lib/util/number/dtoa - i32.const 2984 + i32.const 3832 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 236 + i32.const 72 + i32.const 238 i32.const 0 call $~lib/env/abort unreachable end f64.const -0 call $~lib/util/number/dtoa - i32.const 2984 + i32.const 3832 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 237 + i32.const 72 + i32.const 239 i32.const 0 call $~lib/env/abort unreachable end f64.const nan:0x8000000000000 call $~lib/util/number/dtoa - i32.const 3000 + i32.const 3856 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 238 - i32.const 0 - call $~lib/env/abort - unreachable - end - f64.const inf - call $~lib/util/number/dtoa - i32.const 3048 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 239 - i32.const 0 - call $~lib/env/abort - unreachable - end - f64.const inf - f64.neg - call $~lib/util/number/dtoa - i32.const 3016 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 + i32.const 72 i32.const 240 i32.const 0 call $~lib/env/abort unreachable end - global.get $~lib/builtins/f64.EPSILON + f64.const inf call $~lib/util/number/dtoa - i32.const 4080 + i32.const 3920 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 241 i32.const 0 call $~lib/env/abort unreachable end - global.get $~lib/builtins/f64.EPSILON + f64.const inf f64.neg call $~lib/util/number/dtoa - i32.const 4136 + i32.const 3880 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 242 i32.const 0 call $~lib/env/abort unreachable end - global.get $~lib/builtins/f64.MAX_VALUE + global.get $~lib/builtins/f64.EPSILON call $~lib/util/number/dtoa - i32.const 4192 + i32.const 5008 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 243 i32.const 0 call $~lib/env/abort unreachable end - global.get $~lib/builtins/f64.MAX_VALUE + global.get $~lib/builtins/f64.EPSILON f64.neg call $~lib/util/number/dtoa - i32.const 4248 + i32.const 5072 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 i32.const 244 i32.const 0 call $~lib/env/abort unreachable end - f64.const 4185580496821356722454785e274 - call $~lib/util/number/dtoa - i32.const 4304 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 245 - i32.const 0 - call $~lib/env/abort - unreachable - end - f64.const 2.2250738585072014e-308 - call $~lib/util/number/dtoa - i32.const 4360 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 246 - i32.const 0 - call $~lib/env/abort - unreachable - end - f64.const 4.940656e-318 - call $~lib/util/number/dtoa - i32.const 4416 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 249 - i32.const 0 - call $~lib/env/abort - unreachable - end - f64.const 9060801153433600 - call $~lib/util/number/dtoa - i32.const 4456 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 250 - i32.const 0 - call $~lib/env/abort - unreachable - end - f64.const 4708356024711512064 - call $~lib/util/number/dtoa - i32.const 4504 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 251 - i32.const 0 - call $~lib/env/abort - unreachable - end - f64.const 9409340012568248320 - call $~lib/util/number/dtoa - i32.const 4560 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 252 - i32.const 0 - call $~lib/env/abort - unreachable - end - f64.const 5e-324 - call $~lib/util/number/dtoa - i32.const 4616 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 253 - i32.const 0 - call $~lib/env/abort - unreachable - end - f64.const 1 - call $~lib/util/number/dtoa - i32.const 4640 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 259 - i32.const 0 - call $~lib/env/abort - unreachable - end - f64.const 0.1 - call $~lib/util/number/dtoa - i32.const 768 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 260 - i32.const 0 - call $~lib/env/abort - unreachable - end - f64.const -1 - call $~lib/util/number/dtoa - i32.const 4656 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 261 - i32.const 0 - call $~lib/env/abort - unreachable - end - f64.const -0.1 - call $~lib/util/number/dtoa - i32.const 4672 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 262 - i32.const 0 - call $~lib/env/abort - unreachable - end - f64.const 1e6 - call $~lib/util/number/dtoa - i32.const 4688 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 264 - i32.const 0 - call $~lib/env/abort - unreachable - end - f64.const 1e-06 - call $~lib/util/number/dtoa - i32.const 4720 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 265 - i32.const 0 - call $~lib/env/abort - unreachable - end - f64.const -1e6 - call $~lib/util/number/dtoa - i32.const 4744 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 266 - i32.const 0 - call $~lib/env/abort - unreachable - end - f64.const -1e-06 - call $~lib/util/number/dtoa - i32.const 4776 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 267 - i32.const 0 - call $~lib/env/abort - unreachable - end - f64.const 1e7 - call $~lib/util/number/dtoa - i32.const 4808 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 268 - i32.const 0 - call $~lib/env/abort - unreachable - end - f64.const 1e-07 - call $~lib/util/number/dtoa - i32.const 4840 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 269 - i32.const 0 - call $~lib/env/abort - unreachable - end - f64.const 1.e+308 - call $~lib/util/number/dtoa - i32.const 4856 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 271 - i32.const 0 - call $~lib/env/abort - unreachable - end - f64.const -1.e+308 - call $~lib/util/number/dtoa - i32.const 4880 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 272 - i32.const 0 - call $~lib/env/abort - unreachable - end - f64.const inf - call $~lib/util/number/dtoa - i32.const 3048 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 273 - i32.const 0 - call $~lib/env/abort - unreachable - end - f64.const -inf - call $~lib/util/number/dtoa - i32.const 3016 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 274 - i32.const 0 - call $~lib/env/abort - unreachable - end - f64.const 1e-308 - call $~lib/util/number/dtoa - i32.const 4904 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 275 - i32.const 0 - call $~lib/env/abort - unreachable - end - f64.const -1e-308 - call $~lib/util/number/dtoa - i32.const 4928 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 276 - i32.const 0 - call $~lib/env/abort - unreachable - end - f64.const 1e-323 - call $~lib/util/number/dtoa - i32.const 4952 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 277 - i32.const 0 - call $~lib/env/abort - unreachable - end - f64.const -1e-323 - call $~lib/util/number/dtoa - i32.const 4976 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 278 - i32.const 0 - call $~lib/env/abort - unreachable - end - f64.const 0 - call $~lib/util/number/dtoa - i32.const 2984 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 279 - i32.const 0 - call $~lib/env/abort - unreachable - end - f64.const 4294967272 - call $~lib/util/number/dtoa - i32.const 5000 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 281 - i32.const 0 - call $~lib/env/abort - unreachable - end - f64.const 1.2312145673456234e-08 - call $~lib/util/number/dtoa - i32.const 5032 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 282 - i32.const 0 - call $~lib/env/abort - unreachable - end - f64.const 555555555.5555556 - call $~lib/util/number/dtoa - i32.const 5088 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 284 - i32.const 0 - call $~lib/env/abort - unreachable - end - f64.const 0.9999999999999999 + global.get $~lib/builtins/f64.MAX_VALUE call $~lib/util/number/dtoa i32.const 5136 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 285 + i32.const 72 + i32.const 245 + i32.const 0 + call $~lib/env/abort + unreachable + end + global.get $~lib/builtins/f64.MAX_VALUE + f64.neg + call $~lib/util/number/dtoa + i32.const 5200 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 246 + i32.const 0 + call $~lib/env/abort + unreachable + end + f64.const 4185580496821356722454785e274 + call $~lib/util/number/dtoa + i32.const 5264 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 247 + i32.const 0 + call $~lib/env/abort + unreachable + end + f64.const 2.2250738585072014e-308 + call $~lib/util/number/dtoa + i32.const 5328 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 248 + i32.const 0 + call $~lib/env/abort + unreachable + end + f64.const 4.940656e-318 + call $~lib/util/number/dtoa + i32.const 5392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 251 + i32.const 0 + call $~lib/env/abort + unreachable + end + f64.const 9060801153433600 + call $~lib/util/number/dtoa + i32.const 5440 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 252 + i32.const 0 + call $~lib/env/abort + unreachable + end + f64.const 4708356024711512064 + call $~lib/util/number/dtoa + i32.const 5496 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 253 + i32.const 0 + call $~lib/env/abort + unreachable + end + f64.const 9409340012568248320 + call $~lib/util/number/dtoa + i32.const 5560 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 254 + i32.const 0 + call $~lib/env/abort + unreachable + end + f64.const 5e-324 + call $~lib/util/number/dtoa + i32.const 5624 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 255 i32.const 0 call $~lib/env/abort unreachable end f64.const 1 call $~lib/util/number/dtoa - i32.const 4640 + i32.const 5656 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 + i32.const 72 + i32.const 261 + i32.const 0 + call $~lib/env/abort + unreachable + end + f64.const 0.1 + call $~lib/util/number/dtoa + i32.const 1064 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 262 + i32.const 0 + call $~lib/env/abort + unreachable + end + f64.const -1 + call $~lib/util/number/dtoa + i32.const 5680 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 263 + i32.const 0 + call $~lib/env/abort + unreachable + end + f64.const -0.1 + call $~lib/util/number/dtoa + i32.const 5704 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 264 + i32.const 0 + call $~lib/env/abort + unreachable + end + f64.const 1e6 + call $~lib/util/number/dtoa + i32.const 5728 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 266 + i32.const 0 + call $~lib/env/abort + unreachable + end + f64.const 1e-06 + call $~lib/util/number/dtoa + i32.const 5768 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 267 + i32.const 0 + call $~lib/env/abort + unreachable + end + f64.const -1e6 + call $~lib/util/number/dtoa + i32.const 5800 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 268 + i32.const 0 + call $~lib/env/abort + unreachable + end + f64.const -1e-06 + call $~lib/util/number/dtoa + i32.const 5840 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 269 + i32.const 0 + call $~lib/env/abort + unreachable + end + f64.const 1e7 + call $~lib/util/number/dtoa + i32.const 5880 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 270 + i32.const 0 + call $~lib/env/abort + unreachable + end + f64.const 1e-07 + call $~lib/util/number/dtoa + i32.const 5920 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 271 + i32.const 0 + call $~lib/env/abort + unreachable + end + f64.const 1.e+308 + call $~lib/util/number/dtoa + i32.const 5944 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 273 + i32.const 0 + call $~lib/env/abort + unreachable + end + f64.const -1.e+308 + call $~lib/util/number/dtoa + i32.const 5976 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 274 + i32.const 0 + call $~lib/env/abort + unreachable + end + f64.const inf + call $~lib/util/number/dtoa + i32.const 3920 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 275 + i32.const 0 + call $~lib/env/abort + unreachable + end + f64.const -inf + call $~lib/util/number/dtoa + i32.const 3880 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 276 + i32.const 0 + call $~lib/env/abort + unreachable + end + f64.const 1e-308 + call $~lib/util/number/dtoa + i32.const 6008 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 277 + i32.const 0 + call $~lib/env/abort + unreachable + end + f64.const -1e-308 + call $~lib/util/number/dtoa + i32.const 6040 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 278 + i32.const 0 + call $~lib/env/abort + unreachable + end + f64.const 1e-323 + call $~lib/util/number/dtoa + i32.const 6072 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 279 + i32.const 0 + call $~lib/env/abort + unreachable + end + f64.const -1e-323 + call $~lib/util/number/dtoa + i32.const 6104 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 280 + i32.const 0 + call $~lib/env/abort + unreachable + end + f64.const 0 + call $~lib/util/number/dtoa + i32.const 3832 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 281 + i32.const 0 + call $~lib/env/abort + unreachable + end + f64.const 4294967272 + call $~lib/util/number/dtoa + i32.const 6136 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 283 + i32.const 0 + call $~lib/env/abort + unreachable + end + f64.const 1.2312145673456234e-08 + call $~lib/util/number/dtoa + i32.const 6176 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 284 + i32.const 0 + call $~lib/env/abort + unreachable + end + f64.const 555555555.5555556 + call $~lib/util/number/dtoa + i32.const 6240 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 i32.const 286 i32.const 0 call $~lib/env/abort unreachable end + f64.const 0.9999999999999999 + call $~lib/util/number/dtoa + i32.const 6296 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 287 + i32.const 0 + call $~lib/env/abort + unreachable + end + f64.const 1 + call $~lib/util/number/dtoa + i32.const 5656 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 288 + i32.const 0 + call $~lib/env/abort + unreachable + end f64.const 12.34 call $~lib/util/number/dtoa - i32.const 5184 + i32.const 6352 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 287 + i32.const 72 + i32.const 289 i32.const 0 call $~lib/env/abort unreachable @@ -9891,128 +10068,128 @@ f64.const 3 f64.div call $~lib/util/number/dtoa - i32.const 5208 + i32.const 6384 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 289 + i32.const 72 + i32.const 291 i32.const 0 call $~lib/env/abort unreachable end f64.const 1234e17 call $~lib/util/number/dtoa - i32.const 5256 + i32.const 6440 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 290 + i32.const 72 + i32.const 292 i32.const 0 call $~lib/env/abort unreachable end f64.const 1234e18 call $~lib/util/number/dtoa - i32.const 5312 + i32.const 6504 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 291 + i32.const 72 + i32.const 293 i32.const 0 call $~lib/env/abort unreachable end f64.const 2.71828 call $~lib/util/number/dtoa - i32.const 5344 + i32.const 6544 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 292 + i32.const 72 + i32.const 294 i32.const 0 call $~lib/env/abort unreachable end f64.const 0.0271828 call $~lib/util/number/dtoa - i32.const 5368 + i32.const 6576 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 293 + i32.const 72 + i32.const 295 i32.const 0 call $~lib/env/abort unreachable end f64.const 271.828 call $~lib/util/number/dtoa - i32.const 5400 + i32.const 6616 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 294 + i32.const 72 + i32.const 296 i32.const 0 call $~lib/env/abort unreachable end f64.const 1.1e+128 call $~lib/util/number/dtoa - i32.const 5424 + i32.const 6648 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 295 + i32.const 72 + i32.const 297 i32.const 0 call $~lib/env/abort unreachable end f64.const 1.1e-64 call $~lib/util/number/dtoa - i32.const 5448 + i32.const 6680 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 296 + i32.const 72 + i32.const 298 i32.const 0 call $~lib/env/abort unreachable end f64.const 0.000035689 call $~lib/util/number/dtoa - i32.const 5472 + i32.const 6712 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 56 - i32.const 297 + i32.const 72 + i32.const 299 i32.const 0 call $~lib/env/abort unreachable end ) - (func $std/string/getString (; 59 ;) (type $FUNCSIG$i) (result i32) + (func $std/string/getString (; 65 ;) (type $FUNCSIG$i) (result i32) global.get $std/string/str ) - (func $start (; 60 ;) (type $FUNCSIG$v) + (func $start (; 66 ;) (type $FUNCSIG$v) call $start:std/string ) - (func $null (; 61 ;) (type $FUNCSIG$v) + (func $null (; 67 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/symbol.optimized.wat b/tests/compiler/std/symbol.optimized.wat index 1079090e..c5763b4b 100644 --- a/tests/compiler/std/symbol.optimized.wat +++ b/tests/compiler/std/symbol.optimized.wat @@ -115,7 +115,7 @@ global.set $~lib/allocator/arena/offset local.get $1 ) - (func $~lib/runtime/doAllocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) i32.const 1 i32.const 32 @@ -136,44 +136,40 @@ i32.const 8 i32.add ) - (func $~lib/runtime/assertUnregistered (; 3 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/register (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 i32.const 700 i32.le_u if i32.const 0 i32.const 72 - i32.const 313 - i32.const 2 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 i32.const 8 i32.sub + local.tee $2 i32.load i32.const -1520547049 i32.ne if i32.const 0 i32.const 72 - i32.const 314 - i32.const 2 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $~lib/runtime/doRegister (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/runtime/assertUnregistered - local.get $0 - i32.const 8 - i32.sub + local.get $2 local.get $1 i32.store local.get $0 ) - (func $~lib/memory/memory.fill (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/memory/memory.fill (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block $~lib/util/memory/memset|inlined.0 local.get $1 @@ -384,7 +380,7 @@ end end ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#constructor (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 1073741816 @@ -398,15 +394,15 @@ unreachable end local.get $0 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.tee $1 local.get $0 call $~lib/memory/memory.fill local.get $1 i32.const 3 - call $~lib/runtime/doRegister + call $~lib/runtime/register ) - (func $~lib/map/Map#clear (; 7 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor @@ -428,12 +424,12 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 8 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/map/Map#constructor (; 7 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 2 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $0 i32.const 0 i32.store @@ -456,12 +452,12 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#constructor (; 9 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/map/Map#constructor (; 8 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 4 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.tee $0 i32.const 0 i32.store @@ -484,7 +480,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/util/hash/hashStr (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hashStr (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -528,7 +524,7 @@ end local.get $1 ) - (func $~lib/util/string/compareImpl (; 11 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/compareImpl (; 10 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) loop $continue|0 local.get $2 @@ -561,7 +557,7 @@ end local.get $3 ) - (func $~lib/string/String.__eq (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -607,7 +603,7 @@ call $~lib/util/string/compareImpl i32.eqz ) - (func $~lib/map/Map#find (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#find (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load local.get $0 @@ -650,7 +646,7 @@ end i32.const 0 ) - (func $~lib/map/Map#rehash (; 14 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 13 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -751,7 +747,7 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 15 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#set (; 14 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -840,7 +836,7 @@ i32.store end ) - (func $~lib/util/hash/hash32 (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hash32 (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 255 i32.and @@ -871,7 +867,7 @@ i32.const 16777619 i32.mul ) - (func $~lib/map/Map#find (; 17 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 16 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -914,7 +910,7 @@ end i32.const 0 ) - (func $~lib/map/Map#rehash (; 18 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 17 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1015,7 +1011,7 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 19 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#set (; 18 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1105,7 +1101,7 @@ i32.store end ) - (func $~lib/symbol/_Symbol.for (; 20 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/symbol/_Symbol.for (; 19 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) global.get $~lib/symbol/stringToId if @@ -1151,7 +1147,7 @@ call $~lib/map/Map#set local.get $0 ) - (func $~lib/map/Map#has (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 20 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -1160,7 +1156,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#get (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -1174,7 +1170,7 @@ unreachable end ) - (func $~lib/symbol/_Symbol.keyFor (; 23 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/symbol/_Symbol.keyFor (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) global.get $~lib/symbol/idToString i32.const 0 @@ -1195,7 +1191,7 @@ i32.const 0 end ) - (func $~lib/util/memory/memcpy (; 24 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (; 23 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2092,7 +2088,7 @@ i32.store8 end ) - (func $~lib/memory/memory.copy (; 25 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 24 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 @@ -2286,7 +2282,7 @@ end end ) - (func $~lib/string/String#concat (; 26 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2320,7 +2316,7 @@ return end local.get $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.tee $2 local.get $0 local.get $3 @@ -2333,9 +2329,9 @@ call $~lib/memory/memory.copy local.get $2 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register ) - (func $~lib/string/String.__concat (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 26 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.const 512 local.get $0 @@ -2343,7 +2339,7 @@ local.get $1 call $~lib/string/String#concat ) - (func $~lib/symbol/_Symbol#toString (; 28 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/symbol/_Symbol#toString (; 27 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) i32.const 160 @@ -2427,7 +2423,7 @@ i32.const 528 call $~lib/string/String.__concat ) - (func $start:std/symbol (; 29 ;) (type $FUNCSIG$v) + (func $start:std/symbol (; 28 ;) (type $FUNCSIG$v) (local $0 i32) global.get $~lib/symbol/nextId local.tee $0 @@ -2509,9 +2505,21 @@ end global.get $std/symbol/sym3 call $~lib/symbol/_Symbol.keyFor + local.tee $0 + i32.eqz + if + unreachable + end + local.get $0 global.set $std/symbol/key3 global.get $std/symbol/sym4 call $~lib/symbol/_Symbol.keyFor + local.tee $0 + i32.eqz + if + unreachable + end + local.get $0 global.set $std/symbol/key4 global.get $std/symbol/key3 i32.const 16 @@ -2604,10 +2612,10 @@ unreachable end ) - (func $start (; 30 ;) (type $FUNCSIG$v) + (func $start (; 29 ;) (type $FUNCSIG$v) call $start:std/symbol ) - (func $null (; 31 ;) (type $FUNCSIG$v) + (func $null (; 30 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/symbol.ts b/tests/compiler/std/symbol.ts index e5168b36..9604825b 100644 --- a/tests/compiler/std/symbol.ts +++ b/tests/compiler/std/symbol.ts @@ -16,8 +16,8 @@ var key2 = Symbol.keyFor(sym2); assert(key1 === null); assert(key2 === null); -var key3 = Symbol.keyFor(sym3); -var key4 = Symbol.keyFor(sym4); +var key3 = Symbol.keyFor(sym3)!; +var key4 = Symbol.keyFor(sym4)!; assert(key3 == "123"); assert(key3 == key4); diff --git a/tests/compiler/std/symbol.untouched.wat b/tests/compiler/std/symbol.untouched.wat index bf082c1d..efdc7242 100644 --- a/tests/compiler/std/symbol.untouched.wat +++ b/tests/compiler/std/symbol.untouched.wat @@ -35,13 +35,12 @@ (data (i32.const 640) "\01\00\00\004\00\00\00S\00y\00m\00b\00o\00l\00(\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e\00)\00") (table $0 1 funcref) (elem (i32.const 0) $null) - (global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0)) - (global $~lib/runtime/HEADER_SIZE i32 (i32.const 8)) - (global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) (global $~lib/symbol/nextId (mut i32) (i32.const 12)) (global $std/symbol/sym1 (mut i32) (i32.const 0)) (global $std/symbol/sym2 (mut i32) (i32.const 0)) (global $~lib/symbol/stringToId (mut i32) (i32.const 0)) + (global $~lib/runtime/HEADER_SIZE i32 (i32.const 8)) + (global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) (global $~lib/ASC_NO_ASSERT i32 (i32.const 0)) @@ -177,7 +176,7 @@ end return ) - (func $~lib/runtime/doAllocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/allocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/runtime/ADJUSTOBLOCK @@ -193,7 +192,8 @@ global.get $~lib/runtime/HEADER_SIZE i32.add ) - (func $~lib/runtime/assertUnregistered (; 5 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/register (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 global.get $~lib/memory/HEAP_BASE i32.gt_u @@ -201,14 +201,16 @@ if i32.const 0 i32.const 72 - i32.const 313 - i32.const 2 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 global.get $~lib/runtime/HEADER_SIZE i32.sub + local.set $2 + local.get $2 i32.load global.get $~lib/runtime/HEADER_MAGIC i32.eq @@ -216,23 +218,17 @@ if i32.const 0 i32.const 72 - i32.const 314 - i32.const 2 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $~lib/runtime/doRegister (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/runtime/assertUnregistered - local.get $0 - global.get $~lib/runtime/HEADER_SIZE - i32.sub + local.get $2 local.get $1 i32.store local.get $0 ) - (func $~lib/memory/memory.fill (; 7 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.fill (; 6 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -489,7 +485,7 @@ end end ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#constructor (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -507,7 +503,7 @@ local.get $1 local.set $2 local.get $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $3 local.get $3 @@ -519,10 +515,10 @@ local.set $2 local.get $2 i32.const 3 - call $~lib/runtime/doRegister + call $~lib/runtime/register end ) - (func $~lib/map/Map#clear (; 9 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 8 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 0 i32.const 16 @@ -548,7 +544,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) block (result i32) local.get $0 @@ -559,12 +555,12 @@ i32.const 24 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 2 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -591,7 +587,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#clear (; 11 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 10 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 0 i32.const 16 @@ -617,7 +613,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) block (result i32) local.get $0 @@ -628,12 +624,12 @@ i32.const 24 local.set $1 local.get $1 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $1 local.get $1 i32.const 4 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -660,7 +656,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/string/String#get:length (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 global.get $~lib/runtime/HEADER_SIZE i32.sub @@ -668,7 +664,7 @@ i32.const 1 i32.shr_u ) - (func $~lib/util/hash/hashStr (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hashStr (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -715,7 +711,7 @@ end local.get $1 ) - (func $~lib/util/string/compareImpl (; 15 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (func $~lib/util/string/compareImpl (; 14 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -768,7 +764,7 @@ end local.get $5 ) - (func $~lib/string/String.__eq (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -812,7 +808,7 @@ call $~lib/util/string/compareImpl i32.eqz ) - (func $~lib/map/Map#find (; 17 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 16 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -863,7 +859,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -878,7 +874,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#get (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -900,7 +896,7 @@ unreachable end ) - (func $~lib/map/Map#rehash (; 20 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 19 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1034,7 +1030,7 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 21 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 20 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1138,7 +1134,7 @@ i32.store end ) - (func $~lib/util/hash/hash32 (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hash32 (; 21 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) i32.const -2128831035 local.set $1 @@ -1180,7 +1176,7 @@ local.set $1 local.get $1 ) - (func $~lib/map/Map#find (; 23 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 22 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -1231,7 +1227,7 @@ end i32.const 0 ) - (func $~lib/map/Map#rehash (; 24 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 23 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1365,7 +1361,7 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 25 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 24 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1469,7 +1465,7 @@ i32.store end ) - (func $~lib/symbol/_Symbol.for (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/symbol/_Symbol.for (; 25 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) global.get $~lib/symbol/stringToId @@ -1516,7 +1512,7 @@ call $~lib/map/Map#set local.get $2 ) - (func $~lib/map/Map#has (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 26 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -1531,7 +1527,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#get (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -1553,7 +1549,7 @@ unreachable end ) - (func $~lib/symbol/_Symbol.keyFor (; 29 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/symbol/_Symbol.keyFor (; 28 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) global.get $~lib/symbol/idToString i32.const 0 @@ -1574,7 +1570,7 @@ i32.const 0 end ) - (func $~lib/util/memory/memcpy (; 30 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (; 29 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2775,7 +2771,7 @@ i32.store8 end ) - (func $~lib/memory/memory.copy (; 31 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 30 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3006,7 +3002,7 @@ end end ) - (func $~lib/string/String#concat (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3044,7 +3040,7 @@ local.get $4 local.set $5 local.get $5 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $6 local.get $6 @@ -3062,10 +3058,10 @@ local.set $5 local.get $5 i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/register end ) - (func $~lib/string/String.__concat (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.const 512 local.get $0 @@ -3075,7 +3071,7 @@ local.get $1 call $~lib/string/String#concat ) - (func $~lib/symbol/_Symbol#toString (; 34 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/symbol/_Symbol#toString (; 33 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3261,7 +3257,8 @@ i32.const 528 call $~lib/string/String.__concat ) - (func $start:std/symbol (; 35 ;) (type $FUNCSIG$v) + (func $start:std/symbol (; 34 ;) (type $FUNCSIG$v) + (local $0 i32) i32.const 16 call $~lib/symbol/Symbol global.set $std/symbol/sym1 @@ -3340,9 +3337,21 @@ end global.get $std/symbol/sym3 call $~lib/symbol/_Symbol.keyFor + local.tee $0 + if (result i32) + local.get $0 + else + unreachable + end global.set $std/symbol/key3 global.get $std/symbol/sym4 call $~lib/symbol/_Symbol.keyFor + local.tee $0 + if (result i32) + local.get $0 + else + unreachable + end global.set $std/symbol/key4 global.get $std/symbol/key3 i32.const 16 @@ -3430,9 +3439,9 @@ global.get $~lib/symbol/_Symbol.isConcatSpreadable drop ) - (func $start (; 36 ;) (type $FUNCSIG$v) + (func $start (; 35 ;) (type $FUNCSIG$v) call $start:std/symbol ) - (func $null (; 37 ;) (type $FUNCSIG$v) + (func $null (; 36 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index 4abc73d7..6dd36466 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -5,6 +5,7 @@ (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$vii (func (param i32 i32))) (type $FUNCSIG$viid (func (param i32 i32 f64))) (type $FUNCSIG$idd (func (param f64 f64) (result i32))) (type $FUNCSIG$dii (func (param i32 i32) (result f64))) @@ -23,7 +24,6 @@ (type $FUNCSIG$ijii (func (param i64 i32 i32) (result i32))) (type $FUNCSIG$ifii (func (param f32 i32 i32) (result i32))) (type $FUNCSIG$idii (func (param f64 i32 i32) (result i32))) - (type $FUNCSIG$vii (func (param i32 i32))) (type $FUNCSIG$vjii (func (param i64 i32 i32))) (type $FUNCSIG$vfii (func (param f32 i32 i32))) (type $FUNCSIG$vdii (func (param f64 i32 i32))) @@ -33,38 +33,65 @@ (type $FUNCSIG$dd (func (param f64) (result f64))) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\01\00\00\00\"\00\00\00s\00t\00d\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 56) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") - (data (i32.const 96) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 144) "\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 192) "\02\00\00\00\05\00\00\00\01\01\01\04\05") - (data (i32.const 208) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 248) "\02\00\00\00\05") - (data (i32.const 264) "\02\00\00\00\05\00\00\00\01\01") - (data (i32.const 280) "\02\00\00\00\05\00\00\00\01\01\00\02\02") - (data (i32.const 296) "\02\00\00\00\05\00\00\00\01\01\00\02\02") - (data (i32.const 312) "\02\00\00\00\03") - (data (i32.const 328) "\02\00\00\00\05\00\00\00\01\00\00\00\02") - (data (i32.const 344) "\02\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05") - (data (i32.const 376) "\02\00\00\00\14") - (data (i32.const 408) "\02\00\00\00\14\00\00\00\01\00\00\00\01") - (data (i32.const 440) "\02\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") - (data (i32.const 472) "\02\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") - (data (i32.const 504) "\02\00\00\00\0c") - (data (i32.const 528) "\02\00\00\00\14\00\00\00\01") - (data (i32.const 552) "\02") - (data (i32.const 560) "\01\00\00\00\1e\00\00\00r\00e\00s\00u\00l\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h") - (data (i32.const 600) "\01\00\00\00(\00\00\00f\00a\00i\00l\00 \00r\00e\00s\00u\00l\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h") - (data (i32.const 648) "\02\00\00\00\0c\00\00\00\n\00\00\00\0c\00\00\00\0e") - (data (i32.const 672) "\10\00\00\00\10\00\00\00\90\02\00\00\90\02\00\00\0c\00\00\00\03") - (data (i32.const 696) "\01\00\00\00,\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00v\00a\00l\00u\00e\00 \00m\00i\00s\00m\00a\00t\00c\00h") - (data (i32.const 752) "\01\00\00\00,\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00i\00n\00d\00e\00x\00 \00m\00i\00s\00m\00a\00t\00c\00h") - (data (i32.const 808) "\01\00\00\00>\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00s\00e\00l\00f\00 \00p\00a\00r\00a\00m\00e\00t\00e\00r\00 \00m\00i\00s\00m\00a\00t\00c\00h") - (data (i32.const 880) "\01\00\00\006\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00c\00a\00l\00l\00 \00c\00o\00u\00n\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h") - (data (i32.const 944) "\02\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 992) "\10\00\00\00\10\00\00\00\b8\03\00\00\b8\03\00\00$\00\00\00\t") - (data (i32.const 1016) "\01\00\00\00B\00\00\00T\00y\00p\00e\00d\00A\00r\00r\00a\00y\00 \00r\00e\00v\00e\00r\00s\00e\00 \00v\00a\00l\00u\00e\00 \00m\00i\00s\00m\00a\00t\00c\00h") - (data (i32.const 1096) "\01\00\00\00V\00\00\00T\00y\00p\00e\00d\00A\00r\00r\00a\00y\00 \00r\00e\00v\00e\00r\00s\00e\00 \00w\00i\00t\00h\00 \00b\00y\00t\00e\00O\00f\00f\00s\00e\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h") + (data (i32.const 8) "\01\00\00\00\"") + (data (i32.const 24) "s\00t\00d\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 64) "\01\00\00\00\1e") + (data (i32.const 80) "~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") + (data (i32.const 112) "\01\00\00\00&") + (data (i32.const 128) "~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data (i32.const 168) "\01\00\00\00$") + (data (i32.const 184) "~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 224) "\02\00\00\00\05") + (data (i32.const 240) "\01\01\01\04\05") + (data (i32.const 248) "\01\00\00\00\1a") + (data (i32.const 264) "~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 296) "\02\00\00\00\05") + (data (i32.const 320) "\02\00\00\00\05") + (data (i32.const 336) "\01\01") + (data (i32.const 344) "\02\00\00\00\05") + (data (i32.const 360) "\01\01\00\02\02") + (data (i32.const 368) "\02\00\00\00\05") + (data (i32.const 384) "\01\01\00\02\02") + (data (i32.const 392) "\02\00\00\00\03") + (data (i32.const 416) "\02\00\00\00\05") + (data (i32.const 432) "\01\00\00\00\02") + (data (i32.const 440) "\02\00\00\00\14") + (data (i32.const 456) "\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05") + (data (i32.const 480) "\02\00\00\00\14") + (data (i32.const 520) "\02\00\00\00\14") + (data (i32.const 536) "\01\00\00\00\01") + (data (i32.const 560) "\02\00\00\00\14") + (data (i32.const 576) "\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") + (data (i32.const 600) "\02\00\00\00\14") + (data (i32.const 616) "\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") + (data (i32.const 640) "\02\00\00\00\0c") + (data (i32.const 672) "\02\00\00\00\14") + (data (i32.const 688) "\01") + (data (i32.const 704) "\02") + (data (i32.const 712) "\01\00\00\00\1e") + (data (i32.const 728) "r\00e\00s\00u\00l\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h") + (data (i32.const 760) "\01\00\00\00(") + (data (i32.const 776) "f\00a\00i\00l\00 \00r\00e\00s\00u\00l\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h") + (data (i32.const 816) "\02\00\00\00\0c") + (data (i32.const 832) "\n\00\00\00\0c\00\00\00\0e") + (data (i32.const 848) "\10\00\00\00\10") + (data (i32.const 864) "@\03\00\00@\03\00\00\0c\00\00\00\03") + (data (i32.const 880) "\01\00\00\00,") + (data (i32.const 896) "f\00o\00r\00E\00a\00c\00h\00 \00v\00a\00l\00u\00e\00 \00m\00i\00s\00m\00a\00t\00c\00h") + (data (i32.const 944) "\01\00\00\00,") + (data (i32.const 960) "f\00o\00r\00E\00a\00c\00h\00 \00i\00n\00d\00e\00x\00 \00m\00i\00s\00m\00a\00t\00c\00h") + (data (i32.const 1008) "\01\00\00\00>") + (data (i32.const 1024) "f\00o\00r\00E\00a\00c\00h\00 \00s\00e\00l\00f\00 \00p\00a\00r\00a\00m\00e\00t\00e\00r\00 \00m\00i\00s\00m\00a\00t\00c\00h") + (data (i32.const 1088) "\01\00\00\006") + (data (i32.const 1104) "f\00o\00r\00E\00a\00c\00h\00 \00c\00a\00l\00l\00 \00c\00o\00u\00n\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h") + (data (i32.const 1160) "\02\00\00\00$") + (data (i32.const 1176) "\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 1216) "\10\00\00\00\10") + (data (i32.const 1232) "\98\04\00\00\98\04\00\00$\00\00\00\t") + (data (i32.const 1248) "\01\00\00\00B") + (data (i32.const 1264) "T\00y\00p\00e\00d\00A\00r\00r\00a\00y\00 \00r\00e\00v\00e\00r\00s\00e\00 \00v\00a\00l\00u\00e\00 \00m\00i\00s\00m\00a\00t\00c\00h") + (data (i32.const 1336) "\01\00\00\00V") + (data (i32.const 1352) "T\00y\00p\00e\00d\00A\00r\00r\00a\00y\00 \00r\00e\00v\00e\00r\00s\00e\00 \00w\00i\00t\00h\00 \00b\00y\00t\00e\00O\00f\00f\00s\00e\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h") (table $0 112 funcref) (elem (i32.const 0) $null $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testReduce~anonymous|0 $std/typedarray/testReduce~anonymous|0 $std/typedarray/testReduce~anonymous|0 $std/typedarray/testReduce~anonymous|0 $std/typedarray/testReduce~anonymous|0 $std/typedarray/testReduce~anonymous|0 $std/typedarray/testReduce~anonymous|0 $std/typedarray/testReduce~anonymous|0 $std/typedarray/testReduce~anonymous|0 $std/typedarray/testReduce~anonymous|0 $std/typedarray/testReduce~anonymous|0 $std/typedarray/testReduce~anonymous|0 $std/typedarray/testReduce~anonymous|0 $std/typedarray/testReduce~anonymous|0 $std/typedarray/testReduce~anonymous|0 $std/typedarray/testReduce~anonymous|0 $std/typedarray/testReduce~anonymous|0 $std/typedarray/testReduce~anonymous|0 $std/typedarray/testReduce~anonymous|0 $std/typedarray/testReduce~anonymous|0 $std/typedarray/testReduce~anonymous|0 $std/typedarray/testReduce~anonymous|0 $std/typedarray/testArrayMap~anonymous|0 $std/typedarray/testArrayMap~anonymous|0 $std/typedarray/testArrayMap~anonymous|0 $std/typedarray/testArrayMap~anonymous|0 $std/typedarray/testArrayMap~anonymous|0 $std/typedarray/testArrayMap~anonymous|0 $std/typedarray/testArrayMap~anonymous|0 $std/typedarray/testArrayMap~anonymous|0 $std/typedarray/testArrayMap~anonymous|0 $std/typedarray/testArrayMap~anonymous|0 $std/typedarray/testArrayMap~anonymous|0 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArraySome~anonymous|1 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArraySome~anonymous|1 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArraySome~anonymous|1 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArraySome~anonymous|1 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArraySome~anonymous|1 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArraySome~anonymous|1 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArraySome~anonymous|1 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArraySome~anonymous|1 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArraySome~anonymous|1 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArraySome~anonymous|1 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArraySome~anonymous|1 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArrayFindIndex~anonymous|1 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArrayFindIndex~anonymous|1 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArrayFindIndex~anonymous|1 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArrayFindIndex~anonymous|1 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArrayFindIndex~anonymous|1 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArrayFindIndex~anonymous|1 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArrayFindIndex~anonymous|1 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArrayFindIndex~anonymous|1 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArrayFindIndex~anonymous|1 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArrayFindIndex~anonymous|1 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArrayFindIndex~anonymous|1 $std/typedarray/testArrayEvery~anonymous|0 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArrayEvery~anonymous|0 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArrayEvery~anonymous|0 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArrayEvery~anonymous|0 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArrayEvery~anonymous|0 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArrayEvery~anonymous|0 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArrayEvery~anonymous|0 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArrayEvery~anonymous|0 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArrayEvery~anonymous|0 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArrayEvery~anonymous|0 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArrayEvery~anonymous|0 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArrayForEach~anonymous|0 $std/typedarray/testArrayForEach~anonymous|0 $std/typedarray/testArrayForEach~anonymous|0 $std/typedarray/testArrayForEach~anonymous|0 $std/typedarray/testArrayForEach~anonymous|0 $std/typedarray/testArrayForEach~anonymous|0 $std/typedarray/testArrayForEach~anonymous|0 $std/typedarray/testArrayForEach~anonymous|0 $std/typedarray/testArrayForEach~anonymous|0 $std/typedarray/testArrayForEach~anonymous|0 $std/typedarray/testArrayForEach~anonymous|0) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) @@ -83,10 +110,12 @@ (global $std/typedarray/multisubarr3 (mut i32) (i32.const 0)) (global $std/typedarray/forEachCallCount (mut i32) (i32.const 0)) (global $std/typedarray/forEachSelf (mut i32) (i32.const 0)) - (global $std/typedarray/forEachValues (mut i32) (i32.const 680)) - (global $std/typedarray/testArrayReverseValues (mut i32) (i32.const 1000)) + (global $std/typedarray/forEachValues (mut i32) (i32.const 864)) + (global $std/typedarray/testArrayReverseValues (mut i32) (i32.const 1232)) + (global $~lib/capabilities i32 (i32.const 2)) (export "memory" (memory $0)) (export "table" (table $0)) + (export ".capabilities" (global $~lib/capabilities)) (start $start) (func $~lib/memory/memory.allocate (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) @@ -150,12 +179,12 @@ global.set $~lib/allocator/arena/offset local.get $1 ) - (func $~lib/runtime/doAllocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) i32.const 1 i32.const 32 local.get $0 - i32.const 7 + i32.const 15 i32.add i32.clz i32.sub @@ -168,7 +197,13 @@ local.get $0 i32.store offset=4 local.get $1 - i32.const 8 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $1 + i32.const 16 i32.add ) (func $~lib/memory/memory.fill (; 3 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) @@ -396,76 +431,73 @@ end end ) - (func $~lib/runtime/assertUnregistered (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/register (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 - i32.const 1192 + i32.const 1440 i32.le_u if i32.const 0 - i32.const 64 - i32.const 313 - i32.const 2 + i32.const 80 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 - i32.const 8 + i32.const 16 i32.sub + local.tee $2 i32.load i32.const -1520547049 i32.ne if i32.const 0 - i32.const 64 - i32.const 314 - i32.const 2 + i32.const 80 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $~lib/runtime/doRegister (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/runtime/assertUnregistered - local.get $0 - i32.const 8 - i32.sub + local.get $2 local.get $1 i32.store local.get $0 ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#constructor (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 - i32.const 1073741816 + i32.const 1073741808 i32.gt_u if i32.const 0 - i32.const 104 + i32.const 128 i32.const 25 i32.const 43 call $~lib/env/abort unreachable end local.get $0 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.tee $1 i32.const 0 local.get $0 call $~lib/memory/memory.fill local.get $1 i32.const 2 - call $~lib/runtime/doRegister + call $~lib/runtime/register ) - (func $~lib/runtime/ArrayBufferView#constructor (; 7 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/runtime/ArrayBufferView#constructor (; 6 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) local.get $1 - i32.const 1073741816 + i32.const 1073741808 local.get $2 i32.shr_u i32.gt_u if i32.const 0 - i32.const 64 - i32.const 348 + i32.const 80 + i32.const 244 i32.const 57 call $~lib/env/abort unreachable @@ -475,14 +507,14 @@ i32.shl local.tee $1 call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 + local.set $3 local.get $0 i32.eqz if i32.const 12 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 3 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.set $0 end local.get $0 @@ -495,116 +527,124 @@ i32.const 0 i32.store offset=8 local.get $0 + local.set $2 + local.get $3 + local.tee $0 local.get $2 + i32.load + i32.ne + drop + local.get $2 + local.get $0 i32.store - local.get $0 local.get $2 - i32.store offset=4 local.get $0 + i32.store offset=4 + local.get $2 local.get $1 i32.store offset=8 - local.get $0 + local.get $2 ) - (func $~lib/typedarray/Int8Array#constructor (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#constructor (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 12 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 4 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.get $0 i32.const 0 call $~lib/runtime/ArrayBufferView#constructor ) - (func $~lib/typedarray/Uint8Array#constructor (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#constructor (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 12 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 5 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.get $0 i32.const 0 call $~lib/runtime/ArrayBufferView#constructor ) - (func $~lib/typedarray/Uint8ClampedArray#constructor (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#constructor (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 12 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 6 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.get $0 i32.const 0 call $~lib/runtime/ArrayBufferView#constructor ) - (func $~lib/typedarray/Int16Array#constructor (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#constructor (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 12 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 7 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.get $0 i32.const 1 call $~lib/runtime/ArrayBufferView#constructor ) - (func $~lib/typedarray/Uint16Array#constructor (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#constructor (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 12 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 8 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.get $0 i32.const 1 call $~lib/runtime/ArrayBufferView#constructor ) - (func $~lib/typedarray/Int32Array#constructor (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int32Array#constructor (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 12 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 9 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.get $0 i32.const 2 call $~lib/runtime/ArrayBufferView#constructor ) - (func $~lib/typedarray/Uint32Array#constructor (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint32Array#constructor (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 12 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 10 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.get $0 i32.const 2 call $~lib/runtime/ArrayBufferView#constructor ) - (func $~lib/typedarray/Int64Array#constructor (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int64Array#constructor (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 12 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 11 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.get $0 i32.const 3 call $~lib/runtime/ArrayBufferView#constructor ) - (func $~lib/typedarray/Uint64Array#constructor (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint64Array#constructor (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 12 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 12 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.get $0 i32.const 3 call $~lib/runtime/ArrayBufferView#constructor ) - (func $~lib/typedarray/Float32Array#constructor (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float32Array#constructor (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 12 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 13 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.get $0 i32.const 2 call $~lib/runtime/ArrayBufferView#constructor ) - (func $~lib/typedarray/Float64Array#constructor (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float64Array#constructor (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 12 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 14 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.get $0 i32.const 3 call $~lib/runtime/ArrayBufferView#constructor ) - (func $std/typedarray/testInstantiate (; 19 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $std/typedarray/testInstantiate (; 18 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 call $~lib/typedarray/Int8Array#constructor @@ -615,19 +655,7 @@ i32.sub if i32.const 0 - i32.const 16 - i32.const 34 - i32.const 2 - call $~lib/env/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.get $0 - i32.ne - if - i32.const 0 - i32.const 16 + i32.const 24 i32.const 35 i32.const 2 call $~lib/env/abort @@ -639,12 +667,24 @@ i32.ne if i32.const 0 - i32.const 16 + i32.const 24 i32.const 36 i32.const 2 call $~lib/env/abort unreachable end + local.get $1 + i32.load offset=8 + local.get $0 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 37 + i32.const 2 + call $~lib/env/abort + unreachable + end local.get $0 call $~lib/typedarray/Uint8Array#constructor local.tee $1 @@ -654,19 +694,7 @@ i32.sub if i32.const 0 - i32.const 16 - i32.const 39 - i32.const 2 - call $~lib/env/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.get $0 - i32.ne - if - i32.const 0 - i32.const 16 + i32.const 24 i32.const 40 i32.const 2 call $~lib/env/abort @@ -678,12 +706,24 @@ i32.ne if i32.const 0 - i32.const 16 + i32.const 24 i32.const 41 i32.const 2 call $~lib/env/abort unreachable end + local.get $1 + i32.load offset=8 + local.get $0 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 42 + i32.const 2 + call $~lib/env/abort + unreachable + end local.get $0 call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $1 @@ -693,19 +733,7 @@ i32.sub if i32.const 0 - i32.const 16 - i32.const 44 - i32.const 2 - call $~lib/env/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.get $0 - i32.ne - if - i32.const 0 - i32.const 16 + i32.const 24 i32.const 45 i32.const 2 call $~lib/env/abort @@ -717,12 +745,24 @@ i32.ne if i32.const 0 - i32.const 16 + i32.const 24 i32.const 46 i32.const 2 call $~lib/env/abort unreachable end + local.get $1 + i32.load offset=8 + local.get $0 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 47 + i32.const 2 + call $~lib/env/abort + unreachable + end local.get $0 call $~lib/typedarray/Int16Array#constructor local.tee $1 @@ -732,8 +772,8 @@ i32.sub if i32.const 0 - i32.const 16 - i32.const 49 + i32.const 24 + i32.const 50 i32.const 2 call $~lib/env/abort unreachable @@ -746,8 +786,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 50 + i32.const 24 + i32.const 51 i32.const 2 call $~lib/env/abort unreachable @@ -760,8 +800,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 51 + i32.const 24 + i32.const 52 i32.const 2 call $~lib/env/abort unreachable @@ -775,8 +815,8 @@ i32.sub if i32.const 0 - i32.const 16 - i32.const 54 + i32.const 24 + i32.const 55 i32.const 2 call $~lib/env/abort unreachable @@ -789,8 +829,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 55 + i32.const 24 + i32.const 56 i32.const 2 call $~lib/env/abort unreachable @@ -803,8 +843,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 56 + i32.const 24 + i32.const 57 i32.const 2 call $~lib/env/abort unreachable @@ -818,8 +858,8 @@ i32.sub if i32.const 0 - i32.const 16 - i32.const 59 + i32.const 24 + i32.const 60 i32.const 2 call $~lib/env/abort unreachable @@ -832,8 +872,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 60 + i32.const 24 + i32.const 61 i32.const 2 call $~lib/env/abort unreachable @@ -846,8 +886,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 61 + i32.const 24 + i32.const 62 i32.const 2 call $~lib/env/abort unreachable @@ -861,8 +901,8 @@ i32.sub if i32.const 0 - i32.const 16 - i32.const 64 + i32.const 24 + i32.const 65 i32.const 2 call $~lib/env/abort unreachable @@ -875,8 +915,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 65 + i32.const 24 + i32.const 66 i32.const 2 call $~lib/env/abort unreachable @@ -889,8 +929,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 66 + i32.const 24 + i32.const 67 i32.const 2 call $~lib/env/abort unreachable @@ -904,8 +944,8 @@ i32.sub if i32.const 0 - i32.const 16 - i32.const 69 + i32.const 24 + i32.const 70 i32.const 2 call $~lib/env/abort unreachable @@ -918,8 +958,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 70 + i32.const 24 + i32.const 71 i32.const 2 call $~lib/env/abort unreachable @@ -932,8 +972,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 71 + i32.const 24 + i32.const 72 i32.const 2 call $~lib/env/abort unreachable @@ -947,8 +987,8 @@ i32.sub if i32.const 0 - i32.const 16 - i32.const 74 + i32.const 24 + i32.const 75 i32.const 2 call $~lib/env/abort unreachable @@ -961,8 +1001,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 75 + i32.const 24 + i32.const 76 i32.const 2 call $~lib/env/abort unreachable @@ -975,8 +1015,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 76 + i32.const 24 + i32.const 77 i32.const 2 call $~lib/env/abort unreachable @@ -990,8 +1030,8 @@ i32.sub if i32.const 0 - i32.const 16 - i32.const 79 + i32.const 24 + i32.const 80 i32.const 2 call $~lib/env/abort unreachable @@ -1004,8 +1044,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 80 + i32.const 24 + i32.const 81 i32.const 2 call $~lib/env/abort unreachable @@ -1018,8 +1058,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 81 + i32.const 24 + i32.const 82 i32.const 2 call $~lib/env/abort unreachable @@ -1033,8 +1073,8 @@ i32.sub if i32.const 0 - i32.const 16 - i32.const 84 + i32.const 24 + i32.const 85 i32.const 2 call $~lib/env/abort unreachable @@ -1047,8 +1087,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 85 + i32.const 24 + i32.const 86 i32.const 2 call $~lib/env/abort unreachable @@ -1061,14 +1101,14 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 86 + i32.const 24 + i32.const 87 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Int32Array#__set (; 20 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int32Array#__set (; 19 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -1077,7 +1117,7 @@ i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 442 i32.const 63 call $~lib/env/abort @@ -1092,7 +1132,7 @@ local.get $2 i32.store ) - (func $~lib/typedarray/Int32Array#__get (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#__get (; 20 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -1101,7 +1141,7 @@ i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 436 i32.const 63 call $~lib/env/abort @@ -1115,9 +1155,10 @@ i32.add i32.load ) - (func $~lib/typedarray/Int32Array#subarray (; 22 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#subarray (; 21 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.tee $4 i32.load offset=8 @@ -1175,34 +1216,42 @@ end local.set $2 i32.const 12 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 9 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.set $0 local.get $4 i32.load offset=4 - local.set $3 + local.set $5 local.get $0 + local.set $3 local.get $4 i32.load - i32.store + local.tee $0 + local.get $3 + i32.load + i32.ne + drop + local.get $3 local.get $0 + i32.store + local.get $3 local.get $1 i32.const 2 i32.shl - local.get $3 + local.get $5 i32.add i32.store offset=4 - local.get $0 + local.get $3 local.get $2 local.get $1 i32.sub i32.const 2 i32.shl i32.store offset=8 - local.get $0 + local.get $3 ) - (func $~lib/typedarray/Float64Array#__set (; 23 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) + (func $~lib/typedarray/Float64Array#__set (; 22 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) local.get $1 local.get $0 i32.load offset=8 @@ -1211,7 +1260,7 @@ i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 852 i32.const 63 call $~lib/env/abort @@ -1226,9 +1275,10 @@ local.get $2 f64.store ) - (func $~lib/typedarray/Float64Array#subarray (; 24 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float64Array#subarray (; 23 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.tee $4 i32.load offset=8 @@ -1286,34 +1336,42 @@ end local.set $2 i32.const 12 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 14 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.set $0 local.get $4 i32.load offset=4 - local.set $3 + local.set $5 local.get $0 + local.set $3 local.get $4 i32.load - i32.store + local.tee $0 + local.get $3 + i32.load + i32.ne + drop + local.get $3 local.get $0 + i32.store + local.get $3 local.get $1 i32.const 3 i32.shl - local.get $3 + local.get $5 i32.add i32.store offset=4 - local.get $0 + local.get $3 local.get $2 local.get $1 i32.sub i32.const 3 i32.shl i32.store offset=8 - local.get $0 + local.get $3 ) - (func $~lib/util/sort/insertionSort (; 25 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort (; 24 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 f64) @@ -1395,7 +1453,7 @@ unreachable end ) - (func $~lib/util/sort/weakHeapSort (; 26 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/weakHeapSort (; 25 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1651,7 +1709,7 @@ local.get $6 f64.store ) - (func $~lib/typedarray/Float64Array#sort (; 27 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Float64Array#sort (; 26 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 f64) (local $4 f64) @@ -1711,7 +1769,7 @@ end end ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 28 ;) (type $FUNCSIG$idd) (param $0 f64) (param $1 f64) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 27 ;) (type $FUNCSIG$idd) (param $0 f64) (param $1 f64) (result i32) (local $2 i64) (local $3 i64) local.get $0 @@ -1740,7 +1798,7 @@ i64.lt_s i32.sub ) - (func $~lib/typedarray/Float64Array#__get (; 29 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/typedarray/Float64Array#__get (; 28 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) local.get $1 local.get $0 i32.load offset=8 @@ -1749,7 +1807,7 @@ i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 846 i32.const 63 call $~lib/env/abort @@ -1763,14 +1821,14 @@ i32.add f64.load ) - (func $~lib/typedarray/Uint8ClampedArray#__set (; 30 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint8ClampedArray#__set (; 29 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 196 i32.const 44 call $~lib/env/abort @@ -1795,14 +1853,14 @@ i32.and i32.store8 ) - (func $~lib/typedarray/Uint8ClampedArray#__get (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#__get (; 30 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 190 i32.const 44 call $~lib/env/abort @@ -1814,14 +1872,14 @@ i32.add i32.load8_u ) - (func $~lib/typedarray/Int8Array#__set (; 32 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int8Array#__set (; 31 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 32 i32.const 44 call $~lib/env/abort @@ -1834,7 +1892,7 @@ local.get $2 i32.store8 ) - (func $~lib/typedarray/Int8Array#fill (; 33 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/typedarray/Int8Array#fill (; 32 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) (local $5 i32) local.get $0 @@ -1901,7 +1959,7 @@ call $~lib/memory/memory.fill end ) - (func $~lib/util/memory/memcpy (; 34 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (; 33 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2798,7 +2856,7 @@ i32.store8 end ) - (func $~lib/memory/memory.copy (; 35 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 34 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 @@ -2992,48 +3050,55 @@ end end ) - (func $~lib/runtime/doMakeArray (; 36 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/runtime/makeArray (; 35 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) + (local $5 i32) i32.const 16 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.get $2 - call $~lib/runtime/doRegister - local.tee $2 + call $~lib/runtime/register + local.set $4 local.get $0 local.get $3 i32.shl - local.tee $3 - call $~lib/runtime/doAllocate + local.tee $5 + call $~lib/runtime/allocate i32.const 2 - call $~lib/runtime/doRegister - local.tee $4 - i32.store - local.get $2 + call $~lib/runtime/register + local.tee $3 + local.set $2 + local.get $4 + i32.load + drop local.get $4 - i32.store offset=4 local.get $2 + i32.store + local.get $4 local.get $3 + i32.store offset=4 + local.get $4 + local.get $5 i32.store offset=8 - local.get $2 + local.get $4 local.get $0 i32.store offset=12 local.get $1 if - local.get $4 - local.get $1 local.get $3 + local.get $1 + local.get $5 call $~lib/memory/memory.copy end - local.get $2 + local.get $4 ) - (func $~lib/typedarray/Int8Array#__get (; 37 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#__get (; 36 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 26 i32.const 44 call $~lib/env/abort @@ -3045,26 +3110,26 @@ i32.add i32.load8_s ) - (func $~lib/array/Array#__get (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 37 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if i32.const 0 - i32.const 216 - i32.const 100 + i32.const 264 + i32.const 98 i32.const 61 call $~lib/env/abort unreachable end - local.get $1 local.get $0 i32.load offset=4 + local.get $1 i32.add i32.load8_s ) - (func $std/typedarray/isInt8ArrayEqual (; 39 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/typedarray/isInt8ArrayEqual (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -3106,9 +3171,10 @@ end i32.const 1 ) - (func $~lib/typedarray/Int8Array#subarray (; 40 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#subarray (; 39 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.tee $4 i32.load offset=8 @@ -3164,30 +3230,38 @@ end local.set $2 i32.const 12 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 4 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.set $0 local.get $4 i32.load offset=4 - local.set $3 + local.set $5 local.get $0 + local.set $3 local.get $4 i32.load - i32.store - local.get $0 - local.get $1 + local.tee $0 local.get $3 + i32.load + i32.ne + drop + local.get $3 + local.get $0 + i32.store + local.get $3 + local.get $1 + local.get $5 i32.add i32.store offset=4 - local.get $0 + local.get $3 local.get $2 local.get $1 i32.sub i32.store offset=8 - local.get $0 + local.get $3 ) - (func $~lib/typedarray/Int32Array#fill (; 41 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/typedarray/Int32Array#fill (; 40 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) (local $5 i32) local.get $0 @@ -3263,7 +3337,7 @@ end end ) - (func $~lib/array/Array#__get (; 42 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 41 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -3272,8 +3346,8 @@ i32.ge_u if i32.const 0 - i32.const 216 - i32.const 100 + i32.const 264 + i32.const 98 i32.const 61 call $~lib/env/abort unreachable @@ -3286,7 +3360,7 @@ i32.add i32.load ) - (func $std/typedarray/isInt32ArrayEqual (; 43 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/typedarray/isInt32ArrayEqual (; 42 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -3332,12 +3406,12 @@ end i32.const 1 ) - (func $std/typedarray/testReduce~anonymous|0 (; 44 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce~anonymous|0 (; 43 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $~lib/typedarray/Int8Array#reduce (; 45 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#reduce (; 44 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3374,7 +3448,7 @@ end local.get $2 ) - (func $std/typedarray/testReduce (; 46 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce (; 45 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int8Array#constructor @@ -3398,21 +3472,21 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 252 + i32.const 24 + i32.const 253 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Uint8Array#__set (; 47 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint8Array#__set (; 46 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 114 i32.const 44 call $~lib/env/abort @@ -3425,7 +3499,7 @@ local.get $2 i32.store8 ) - (func $~lib/typedarray/Uint8Array#reduce (; 48 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reduce (; 47 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3462,7 +3536,7 @@ end local.get $3 ) - (func $std/typedarray/testReduce (; 49 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce (; 48 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint8Array#constructor @@ -3487,14 +3561,14 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 252 + i32.const 24 + i32.const 253 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testReduce (; 50 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce (; 49 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor @@ -3519,14 +3593,14 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 252 + i32.const 24 + i32.const 253 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Int16Array#__set (; 51 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int16Array#__set (; 50 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -3535,7 +3609,7 @@ i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 278 i32.const 63 call $~lib/env/abort @@ -3550,7 +3624,7 @@ local.get $2 i32.store16 ) - (func $~lib/typedarray/Int16Array#reduce (; 52 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#reduce (; 51 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3591,7 +3665,7 @@ end local.get $2 ) - (func $std/typedarray/testReduce (; 53 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce (; 52 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int16Array#constructor @@ -3615,14 +3689,14 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 252 + i32.const 24 + i32.const 253 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Uint16Array#__set (; 54 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint16Array#__set (; 53 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -3631,7 +3705,7 @@ i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 360 i32.const 63 call $~lib/env/abort @@ -3646,7 +3720,7 @@ local.get $2 i32.store16 ) - (func $~lib/typedarray/Uint16Array#reduce (; 55 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#reduce (; 54 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3687,7 +3761,7 @@ end local.get $2 ) - (func $std/typedarray/testReduce (; 56 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce (; 55 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint16Array#constructor @@ -3711,14 +3785,14 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 252 + i32.const 24 + i32.const 253 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Int32Array#reduce (; 57 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#reduce (; 56 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3759,7 +3833,7 @@ end local.get $3 ) - (func $std/typedarray/testReduce (; 58 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce (; 57 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int32Array#constructor @@ -3782,14 +3856,14 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 252 + i32.const 24 + i32.const 253 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Uint32Array#__set (; 59 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint32Array#__set (; 58 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -3798,7 +3872,7 @@ i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 524 i32.const 63 call $~lib/env/abort @@ -3813,7 +3887,7 @@ local.get $2 i32.store ) - (func $std/typedarray/testReduce (; 60 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce (; 59 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint32Array#constructor @@ -3836,14 +3910,14 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 252 + i32.const 24 + i32.const 253 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Int64Array#__set (; 61 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/typedarray/Int64Array#__set (; 60 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 local.get $0 i32.load offset=8 @@ -3852,7 +3926,7 @@ i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 606 i32.const 63 call $~lib/env/abort @@ -3867,12 +3941,12 @@ local.get $2 i64.store ) - (func $std/typedarray/testReduce~anonymous|0 (; 62 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (func $std/typedarray/testReduce~anonymous|0 (; 61 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) local.get $0 local.get $1 i64.add ) - (func $~lib/typedarray/Int64Array#reduce (; 63 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/typedarray/Int64Array#reduce (; 62 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local $3 i64) (local $4 i32) @@ -3913,7 +3987,7 @@ end local.get $3 ) - (func $std/typedarray/testReduce (; 64 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce (; 63 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int64Array#constructor @@ -3936,14 +4010,14 @@ i64.ne if i32.const 0 - i32.const 16 - i32.const 252 + i32.const 24 + i32.const 253 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Uint64Array#__set (; 65 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/typedarray/Uint64Array#__set (; 64 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 local.get $0 i32.load offset=8 @@ -3952,7 +4026,7 @@ i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 688 i32.const 63 call $~lib/env/abort @@ -3967,7 +4041,7 @@ local.get $2 i64.store ) - (func $std/typedarray/testReduce (; 66 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce (; 65 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint64Array#constructor @@ -3990,14 +4064,14 @@ i64.ne if i32.const 0 - i32.const 16 - i32.const 252 + i32.const 24 + i32.const 253 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Float32Array#__set (; 67 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) + (func $~lib/typedarray/Float32Array#__set (; 66 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) local.get $1 local.get $0 i32.load offset=8 @@ -4006,7 +4080,7 @@ i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 770 i32.const 63 call $~lib/env/abort @@ -4021,12 +4095,12 @@ local.get $2 f32.store ) - (func $std/typedarray/testReduce~anonymous|0 (; 68 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) + (func $std/typedarray/testReduce~anonymous|0 (; 67 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) local.get $0 local.get $1 f32.add ) - (func $~lib/typedarray/Float32Array#reduce (; 69 ;) (type $FUNCSIG$fi) (param $0 i32) (result f32) + (func $~lib/typedarray/Float32Array#reduce (; 68 ;) (type $FUNCSIG$fi) (param $0 i32) (result f32) (local $1 i32) (local $2 f32) (local $3 i32) @@ -4067,7 +4141,7 @@ end local.get $2 ) - (func $std/typedarray/testReduce (; 70 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce (; 69 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Float32Array#constructor @@ -4089,19 +4163,19 @@ f32.ne if i32.const 0 - i32.const 16 - i32.const 252 + i32.const 24 + i32.const 253 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testReduce~anonymous|0 (; 71 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) + (func $std/typedarray/testReduce~anonymous|0 (; 70 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) local.get $0 local.get $1 f64.add ) - (func $~lib/typedarray/Float64Array#reduce (; 72 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) + (func $~lib/typedarray/Float64Array#reduce (; 71 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) (local $1 i32) (local $2 f64) (local $3 i32) @@ -4142,7 +4216,7 @@ end local.get $2 ) - (func $std/typedarray/testReduce (; 73 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce (; 72 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Float64Array#constructor @@ -4164,14 +4238,14 @@ f64.ne if i32.const 0 - i32.const 16 - i32.const 252 + i32.const 24 + i32.const 253 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Int8Array#reduceRight (; 74 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#reduceRight (; 73 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4209,7 +4283,7 @@ end local.get $2 ) - (func $std/typedarray/testReduceRight (; 75 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight (; 74 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int8Array#constructor @@ -4233,14 +4307,14 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 279 + i32.const 24 + i32.const 280 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Uint8Array#reduceRight (; 76 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reduceRight (; 75 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4278,7 +4352,7 @@ end local.get $3 ) - (func $std/typedarray/testReduceRight (; 77 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight (; 76 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint8Array#constructor @@ -4303,14 +4377,14 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 279 + i32.const 24 + i32.const 280 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testReduceRight (; 78 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight (; 77 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor @@ -4335,14 +4409,14 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 279 + i32.const 24 + i32.const 280 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Int16Array#reduceRight (; 79 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#reduceRight (; 78 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4384,7 +4458,7 @@ end local.get $2 ) - (func $std/typedarray/testReduceRight (; 80 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight (; 79 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int16Array#constructor @@ -4408,14 +4482,14 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 279 + i32.const 24 + i32.const 280 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Uint16Array#reduceRight (; 81 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#reduceRight (; 80 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4457,7 +4531,7 @@ end local.get $2 ) - (func $std/typedarray/testReduceRight (; 82 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight (; 81 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint16Array#constructor @@ -4481,14 +4555,14 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 279 + i32.const 24 + i32.const 280 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Int32Array#reduceRight (; 83 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#reduceRight (; 82 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4530,7 +4604,7 @@ end local.get $3 ) - (func $std/typedarray/testReduceRight (; 84 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight (; 83 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int32Array#constructor @@ -4553,14 +4627,14 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 279 + i32.const 24 + i32.const 280 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testReduceRight (; 85 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight (; 84 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint32Array#constructor @@ -4583,14 +4657,14 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 279 + i32.const 24 + i32.const 280 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Int64Array#reduceRight (; 86 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/typedarray/Int64Array#reduceRight (; 85 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local $3 i64) (local $4 i32) @@ -4632,7 +4706,7 @@ end local.get $3 ) - (func $std/typedarray/testReduceRight (; 87 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight (; 86 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int64Array#constructor @@ -4655,14 +4729,14 @@ i64.ne if i32.const 0 - i32.const 16 - i32.const 279 + i32.const 24 + i32.const 280 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testReduceRight (; 88 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight (; 87 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint64Array#constructor @@ -4685,14 +4759,14 @@ i64.ne if i32.const 0 - i32.const 16 - i32.const 279 + i32.const 24 + i32.const 280 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Float32Array#reduceRight (; 89 ;) (type $FUNCSIG$fi) (param $0 i32) (result f32) + (func $~lib/typedarray/Float32Array#reduceRight (; 88 ;) (type $FUNCSIG$fi) (param $0 i32) (result f32) (local $1 i32) (local $2 f32) (local $3 i32) @@ -4734,7 +4808,7 @@ end local.get $2 ) - (func $std/typedarray/testReduceRight (; 90 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight (; 89 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Float32Array#constructor @@ -4756,14 +4830,14 @@ f32.ne if i32.const 0 - i32.const 16 - i32.const 279 + i32.const 24 + i32.const 280 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Float64Array#reduceRight (; 91 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) + (func $~lib/typedarray/Float64Array#reduceRight (; 90 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) (local $1 i32) (local $2 f64) (local $3 i32) @@ -4805,7 +4879,7 @@ end local.get $2 ) - (func $std/typedarray/testReduceRight (; 92 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight (; 91 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Float64Array#constructor @@ -4827,19 +4901,19 @@ f64.ne if i32.const 0 - i32.const 16 - i32.const 279 + i32.const 24 + i32.const 280 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayMap~anonymous|0 (; 93 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap~anonymous|0 (; 92 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $0 i32.mul ) - (func $~lib/typedarray/Int8Array#map (; 94 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#map (; 93 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4885,7 +4959,7 @@ end local.get $2 ) - (func $std/typedarray/testArrayMap (; 95 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap (; 94 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int8Array#constructor @@ -4910,8 +4984,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 306 + i32.const 24 + i32.const 307 i32.const 2 call $~lib/env/abort unreachable @@ -4923,8 +4997,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 307 + i32.const 24 + i32.const 308 i32.const 2 call $~lib/env/abort unreachable @@ -4936,14 +5010,14 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 308 + i32.const 24 + i32.const 309 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Uint8Array#map (; 96 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#map (; 95 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4989,14 +5063,14 @@ end local.get $2 ) - (func $~lib/typedarray/Uint8Array#__get (; 97 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#__get (; 96 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 108 i32.const 44 call $~lib/env/abort @@ -5008,7 +5082,7 @@ i32.add i32.load8_u ) - (func $std/typedarray/testArrayMap (; 98 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap (; 97 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint8Array#constructor @@ -5033,8 +5107,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 306 + i32.const 24 + i32.const 307 i32.const 2 call $~lib/env/abort unreachable @@ -5046,8 +5120,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 307 + i32.const 24 + i32.const 308 i32.const 2 call $~lib/env/abort unreachable @@ -5059,14 +5133,14 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 308 + i32.const 24 + i32.const 309 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Uint8ClampedArray#map (; 99 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#map (; 98 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5112,7 +5186,7 @@ end local.get $2 ) - (func $std/typedarray/testArrayMap (; 100 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap (; 99 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor @@ -5137,8 +5211,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 306 + i32.const 24 + i32.const 307 i32.const 2 call $~lib/env/abort unreachable @@ -5150,8 +5224,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 307 + i32.const 24 + i32.const 308 i32.const 2 call $~lib/env/abort unreachable @@ -5163,14 +5237,14 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 308 + i32.const 24 + i32.const 309 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Int16Array#map (; 101 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#map (; 100 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5225,7 +5299,7 @@ end local.get $2 ) - (func $~lib/typedarray/Int16Array#__get (; 102 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#__get (; 101 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -5234,7 +5308,7 @@ i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 272 i32.const 63 call $~lib/env/abort @@ -5248,7 +5322,7 @@ i32.add i32.load16_s ) - (func $std/typedarray/testArrayMap (; 103 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap (; 102 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int16Array#constructor @@ -5273,8 +5347,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 306 + i32.const 24 + i32.const 307 i32.const 2 call $~lib/env/abort unreachable @@ -5286,8 +5360,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 307 + i32.const 24 + i32.const 308 i32.const 2 call $~lib/env/abort unreachable @@ -5299,14 +5373,14 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 308 + i32.const 24 + i32.const 309 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Uint16Array#map (; 104 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#map (; 103 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5361,7 +5435,7 @@ end local.get $2 ) - (func $~lib/typedarray/Uint16Array#__get (; 105 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#__get (; 104 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -5370,7 +5444,7 @@ i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 354 i32.const 63 call $~lib/env/abort @@ -5384,7 +5458,7 @@ i32.add i32.load16_u ) - (func $std/typedarray/testArrayMap (; 106 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap (; 105 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint16Array#constructor @@ -5409,8 +5483,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 306 + i32.const 24 + i32.const 307 i32.const 2 call $~lib/env/abort unreachable @@ -5422,8 +5496,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 307 + i32.const 24 + i32.const 308 i32.const 2 call $~lib/env/abort unreachable @@ -5435,14 +5509,14 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 308 + i32.const 24 + i32.const 309 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Int32Array#map (; 107 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int32Array#map (; 106 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5497,7 +5571,7 @@ end local.get $2 ) - (func $std/typedarray/testArrayMap (; 108 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap (; 107 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int32Array#constructor @@ -5522,8 +5596,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 306 + i32.const 24 + i32.const 307 i32.const 2 call $~lib/env/abort unreachable @@ -5535,8 +5609,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 307 + i32.const 24 + i32.const 308 i32.const 2 call $~lib/env/abort unreachable @@ -5548,14 +5622,14 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 308 + i32.const 24 + i32.const 309 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Uint32Array#map (; 109 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint32Array#map (; 108 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5610,7 +5684,7 @@ end local.get $2 ) - (func $~lib/typedarray/Uint32Array#__get (; 110 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#__get (; 109 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -5619,7 +5693,7 @@ i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 518 i32.const 63 call $~lib/env/abort @@ -5633,7 +5707,7 @@ i32.add i32.load ) - (func $std/typedarray/testArrayMap (; 111 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap (; 110 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint32Array#constructor @@ -5658,8 +5732,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 306 + i32.const 24 + i32.const 307 i32.const 2 call $~lib/env/abort unreachable @@ -5671,8 +5745,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 307 + i32.const 24 + i32.const 308 i32.const 2 call $~lib/env/abort unreachable @@ -5684,19 +5758,19 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 308 + i32.const 24 + i32.const 309 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayMap~anonymous|0 (; 112 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) + (func $std/typedarray/testArrayMap~anonymous|0 (; 111 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) local.get $0 local.get $0 i64.mul ) - (func $~lib/typedarray/Int64Array#map (; 113 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int64Array#map (; 112 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5751,7 +5825,7 @@ end local.get $2 ) - (func $~lib/typedarray/Int64Array#__get (; 114 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/typedarray/Int64Array#__get (; 113 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 i32.load offset=8 @@ -5760,7 +5834,7 @@ i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 600 i32.const 63 call $~lib/env/abort @@ -5774,7 +5848,7 @@ i32.add i64.load ) - (func $std/typedarray/testArrayMap (; 115 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap (; 114 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int64Array#constructor @@ -5799,8 +5873,8 @@ i64.ne if i32.const 0 - i32.const 16 - i32.const 306 + i32.const 24 + i32.const 307 i32.const 2 call $~lib/env/abort unreachable @@ -5812,8 +5886,8 @@ i64.ne if i32.const 0 - i32.const 16 - i32.const 307 + i32.const 24 + i32.const 308 i32.const 2 call $~lib/env/abort unreachable @@ -5825,14 +5899,14 @@ i64.ne if i32.const 0 - i32.const 16 - i32.const 308 + i32.const 24 + i32.const 309 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Uint64Array#map (; 116 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint64Array#map (; 115 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5887,7 +5961,7 @@ end local.get $2 ) - (func $~lib/typedarray/Uint64Array#__get (; 117 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/typedarray/Uint64Array#__get (; 116 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 i32.load offset=8 @@ -5896,7 +5970,7 @@ i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 682 i32.const 63 call $~lib/env/abort @@ -5910,7 +5984,7 @@ i32.add i64.load ) - (func $std/typedarray/testArrayMap (; 118 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap (; 117 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint64Array#constructor @@ -5935,8 +6009,8 @@ i64.ne if i32.const 0 - i32.const 16 - i32.const 306 + i32.const 24 + i32.const 307 i32.const 2 call $~lib/env/abort unreachable @@ -5948,8 +6022,8 @@ i64.ne if i32.const 0 - i32.const 16 - i32.const 307 + i32.const 24 + i32.const 308 i32.const 2 call $~lib/env/abort unreachable @@ -5961,19 +6035,19 @@ i64.ne if i32.const 0 - i32.const 16 - i32.const 308 + i32.const 24 + i32.const 309 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayMap~anonymous|0 (; 119 ;) (type $FUNCSIG$ffii) (param $0 f32) (param $1 i32) (param $2 i32) (result f32) + (func $std/typedarray/testArrayMap~anonymous|0 (; 118 ;) (type $FUNCSIG$ffii) (param $0 f32) (param $1 i32) (param $2 i32) (result f32) local.get $0 local.get $0 f32.mul ) - (func $~lib/typedarray/Float32Array#map (; 120 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float32Array#map (; 119 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6028,7 +6102,7 @@ end local.get $2 ) - (func $~lib/typedarray/Float32Array#__get (; 121 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/typedarray/Float32Array#__get (; 120 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) local.get $1 local.get $0 i32.load offset=8 @@ -6037,7 +6111,7 @@ i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 764 i32.const 63 call $~lib/env/abort @@ -6051,7 +6125,7 @@ i32.add f32.load ) - (func $std/typedarray/testArrayMap (; 122 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap (; 121 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Float32Array#constructor @@ -6076,8 +6150,8 @@ f32.ne if i32.const 0 - i32.const 16 - i32.const 306 + i32.const 24 + i32.const 307 i32.const 2 call $~lib/env/abort unreachable @@ -6089,8 +6163,8 @@ f32.ne if i32.const 0 - i32.const 16 - i32.const 307 + i32.const 24 + i32.const 308 i32.const 2 call $~lib/env/abort unreachable @@ -6102,19 +6176,19 @@ f32.ne if i32.const 0 - i32.const 16 - i32.const 308 + i32.const 24 + i32.const 309 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayMap~anonymous|0 (; 123 ;) (type $FUNCSIG$ddii) (param $0 f64) (param $1 i32) (param $2 i32) (result f64) + (func $std/typedarray/testArrayMap~anonymous|0 (; 122 ;) (type $FUNCSIG$ddii) (param $0 f64) (param $1 i32) (param $2 i32) (result f64) local.get $0 local.get $0 f64.mul ) - (func $~lib/typedarray/Float64Array#map (; 124 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float64Array#map (; 123 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6169,7 +6243,7 @@ end local.get $2 ) - (func $std/typedarray/testArrayMap (; 125 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap (; 124 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Float64Array#constructor @@ -6194,8 +6268,8 @@ f64.ne if i32.const 0 - i32.const 16 - i32.const 306 + i32.const 24 + i32.const 307 i32.const 2 call $~lib/env/abort unreachable @@ -6207,8 +6281,8 @@ f64.ne if i32.const 0 - i32.const 16 - i32.const 307 + i32.const 24 + i32.const 308 i32.const 2 call $~lib/env/abort unreachable @@ -6220,21 +6294,21 @@ f64.ne if i32.const 0 - i32.const 16 - i32.const 308 + i32.const 24 + i32.const 309 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArraySome~anonymous|0 (; 126 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|0 (; 125 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and i32.const 2 i32.eq ) - (func $~lib/typedarray/Int8Array#some (; 127 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#some (; 126 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6273,13 +6347,13 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome~anonymous|1 (; 128 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|1 (; 127 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and i32.eqz ) - (func $std/typedarray/testArraySome (; 129 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome (; 128 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int8Array#constructor @@ -6301,8 +6375,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 335 + i32.const 24 + i32.const 336 i32.const 2 call $~lib/env/abort unreachable @@ -6312,14 +6386,14 @@ call $~lib/typedarray/Int8Array#some if i32.const 0 - i32.const 16 - i32.const 338 + i32.const 24 + i32.const 339 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Uint8Array#some (; 130 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#some (; 129 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6358,7 +6432,7 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome (; 131 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome (; 130 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint8Array#constructor @@ -6380,8 +6454,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 335 + i32.const 24 + i32.const 336 i32.const 2 call $~lib/env/abort unreachable @@ -6391,14 +6465,14 @@ call $~lib/typedarray/Uint8Array#some if i32.const 0 - i32.const 16 - i32.const 338 + i32.const 24 + i32.const 339 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArraySome (; 132 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome (; 131 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor @@ -6420,8 +6494,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 335 + i32.const 24 + i32.const 336 i32.const 2 call $~lib/env/abort unreachable @@ -6431,21 +6505,21 @@ call $~lib/typedarray/Uint8Array#some if i32.const 0 - i32.const 16 - i32.const 338 + i32.const 24 + i32.const 339 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArraySome~anonymous|0 (; 133 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|0 (; 132 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 65535 i32.and i32.const 2 i32.eq ) - (func $~lib/typedarray/Int16Array#some (; 134 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#some (; 133 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6488,13 +6562,13 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome~anonymous|1 (; 135 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|1 (; 134 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 65535 i32.and i32.eqz ) - (func $std/typedarray/testArraySome (; 136 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome (; 135 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int16Array#constructor @@ -6516,8 +6590,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 335 + i32.const 24 + i32.const 336 i32.const 2 call $~lib/env/abort unreachable @@ -6527,14 +6601,14 @@ call $~lib/typedarray/Int16Array#some if i32.const 0 - i32.const 16 - i32.const 338 + i32.const 24 + i32.const 339 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Uint16Array#some (; 137 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#some (; 136 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6577,7 +6651,7 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome (; 138 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome (; 137 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint16Array#constructor @@ -6599,8 +6673,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 335 + i32.const 24 + i32.const 336 i32.const 2 call $~lib/env/abort unreachable @@ -6610,19 +6684,19 @@ call $~lib/typedarray/Uint16Array#some if i32.const 0 - i32.const 16 - i32.const 338 + i32.const 24 + i32.const 339 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArraySome~anonymous|0 (; 139 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|0 (; 138 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 2 i32.eq ) - (func $~lib/typedarray/Int32Array#some (; 140 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#some (; 139 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6665,11 +6739,11 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome~anonymous|1 (; 141 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|1 (; 140 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.eqz ) - (func $std/typedarray/testArraySome (; 142 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome (; 141 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int32Array#constructor @@ -6691,8 +6765,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 335 + i32.const 24 + i32.const 336 i32.const 2 call $~lib/env/abort unreachable @@ -6702,14 +6776,14 @@ call $~lib/typedarray/Int32Array#some if i32.const 0 - i32.const 16 - i32.const 338 + i32.const 24 + i32.const 339 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArraySome (; 143 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome (; 142 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint32Array#constructor @@ -6731,8 +6805,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 335 + i32.const 24 + i32.const 336 i32.const 2 call $~lib/env/abort unreachable @@ -6742,19 +6816,19 @@ call $~lib/typedarray/Int32Array#some if i32.const 0 - i32.const 16 - i32.const 338 + i32.const 24 + i32.const 339 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArraySome~anonymous|0 (; 144 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|0 (; 143 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 i64.const 2 i64.eq ) - (func $~lib/typedarray/Int64Array#some (; 145 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#some (; 144 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6797,12 +6871,12 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome~anonymous|1 (; 146 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|1 (; 145 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 i64.const 0 i64.eq ) - (func $std/typedarray/testArraySome (; 147 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome (; 146 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int64Array#constructor @@ -6824,8 +6898,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 335 + i32.const 24 + i32.const 336 i32.const 2 call $~lib/env/abort unreachable @@ -6835,14 +6909,14 @@ call $~lib/typedarray/Int64Array#some if i32.const 0 - i32.const 16 - i32.const 338 + i32.const 24 + i32.const 339 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArraySome (; 148 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome (; 147 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint64Array#constructor @@ -6864,8 +6938,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 335 + i32.const 24 + i32.const 336 i32.const 2 call $~lib/env/abort unreachable @@ -6875,19 +6949,19 @@ call $~lib/typedarray/Int64Array#some if i32.const 0 - i32.const 16 - i32.const 338 + i32.const 24 + i32.const 339 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArraySome~anonymous|0 (; 149 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|0 (; 148 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $0 f32.const 2 f32.eq ) - (func $~lib/typedarray/Float32Array#some (; 150 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#some (; 149 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6930,12 +7004,12 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome~anonymous|1 (; 151 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|1 (; 150 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $0 f32.const 0 f32.eq ) - (func $std/typedarray/testArraySome (; 152 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome (; 151 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Float32Array#constructor @@ -6957,8 +7031,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 335 + i32.const 24 + i32.const 336 i32.const 2 call $~lib/env/abort unreachable @@ -6968,19 +7042,19 @@ call $~lib/typedarray/Float32Array#some if i32.const 0 - i32.const 16 - i32.const 338 + i32.const 24 + i32.const 339 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArraySome~anonymous|0 (; 153 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|0 (; 152 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $0 f64.const 2 f64.eq ) - (func $~lib/typedarray/Float64Array#some (; 154 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#some (; 153 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7023,12 +7097,12 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome~anonymous|1 (; 155 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|1 (; 154 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $0 f64.const 0 f64.eq ) - (func $std/typedarray/testArraySome (; 156 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome (; 155 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Float64Array#constructor @@ -7050,8 +7124,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 335 + i32.const 24 + i32.const 336 i32.const 2 call $~lib/env/abort unreachable @@ -7061,14 +7135,14 @@ call $~lib/typedarray/Float64Array#some if i32.const 0 - i32.const 16 - i32.const 338 + i32.const 24 + i32.const 339 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Int8Array#findIndex (; 157 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#findIndex (; 156 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7110,14 +7184,14 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 158 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 157 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and i32.const 4 i32.eq ) - (func $std/typedarray/testArrayFindIndex (; 159 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex (; 158 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int8Array#constructor @@ -7139,9 +7213,9 @@ i32.const 1 i32.ne if - i32.const 568 - i32.const 16 - i32.const 365 + i32.const 728 + i32.const 24 + i32.const 366 i32.const 2 call $~lib/env/abort unreachable @@ -7152,15 +7226,15 @@ i32.const -1 i32.ne if - i32.const 608 - i32.const 16 - i32.const 368 + i32.const 776 + i32.const 24 + i32.const 369 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Uint8Array#findIndex (; 160 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#findIndex (; 159 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7202,7 +7276,7 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex (; 161 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex (; 160 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint8Array#constructor @@ -7224,9 +7298,9 @@ i32.const 1 i32.ne if - i32.const 568 - i32.const 16 - i32.const 365 + i32.const 728 + i32.const 24 + i32.const 366 i32.const 2 call $~lib/env/abort unreachable @@ -7237,15 +7311,15 @@ i32.const -1 i32.ne if - i32.const 608 - i32.const 16 - i32.const 368 + i32.const 776 + i32.const 24 + i32.const 369 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayFindIndex (; 162 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex (; 161 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor @@ -7267,9 +7341,9 @@ i32.const 1 i32.ne if - i32.const 568 - i32.const 16 - i32.const 365 + i32.const 728 + i32.const 24 + i32.const 366 i32.const 2 call $~lib/env/abort unreachable @@ -7280,15 +7354,15 @@ i32.const -1 i32.ne if - i32.const 608 - i32.const 16 - i32.const 368 + i32.const 776 + i32.const 24 + i32.const 369 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Int16Array#findIndex (; 163 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#findIndex (; 162 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7334,14 +7408,14 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 164 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 163 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 65535 i32.and i32.const 4 i32.eq ) - (func $std/typedarray/testArrayFindIndex (; 165 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex (; 164 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int16Array#constructor @@ -7363,9 +7437,9 @@ i32.const 1 i32.ne if - i32.const 568 - i32.const 16 - i32.const 365 + i32.const 728 + i32.const 24 + i32.const 366 i32.const 2 call $~lib/env/abort unreachable @@ -7376,15 +7450,15 @@ i32.const -1 i32.ne if - i32.const 608 - i32.const 16 - i32.const 368 + i32.const 776 + i32.const 24 + i32.const 369 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Uint16Array#findIndex (; 166 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#findIndex (; 165 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7430,7 +7504,7 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex (; 167 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex (; 166 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint16Array#constructor @@ -7452,9 +7526,9 @@ i32.const 1 i32.ne if - i32.const 568 - i32.const 16 - i32.const 365 + i32.const 728 + i32.const 24 + i32.const 366 i32.const 2 call $~lib/env/abort unreachable @@ -7465,15 +7539,15 @@ i32.const -1 i32.ne if - i32.const 608 - i32.const 16 - i32.const 368 + i32.const 776 + i32.const 24 + i32.const 369 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Int32Array#findIndex (; 168 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#findIndex (; 167 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7519,12 +7593,12 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 169 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 168 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 4 i32.eq ) - (func $std/typedarray/testArrayFindIndex (; 170 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex (; 169 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int32Array#constructor @@ -7546,9 +7620,9 @@ i32.const 1 i32.ne if - i32.const 568 - i32.const 16 - i32.const 365 + i32.const 728 + i32.const 24 + i32.const 366 i32.const 2 call $~lib/env/abort unreachable @@ -7559,15 +7633,15 @@ i32.const -1 i32.ne if - i32.const 608 - i32.const 16 - i32.const 368 + i32.const 776 + i32.const 24 + i32.const 369 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayFindIndex (; 171 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex (; 170 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint32Array#constructor @@ -7589,9 +7663,9 @@ i32.const 1 i32.ne if - i32.const 568 - i32.const 16 - i32.const 365 + i32.const 728 + i32.const 24 + i32.const 366 i32.const 2 call $~lib/env/abort unreachable @@ -7602,15 +7676,15 @@ i32.const -1 i32.ne if - i32.const 608 - i32.const 16 - i32.const 368 + i32.const 776 + i32.const 24 + i32.const 369 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Int64Array#findIndex (; 172 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#findIndex (; 171 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7656,12 +7730,12 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 173 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 172 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 i64.const 4 i64.eq ) - (func $std/typedarray/testArrayFindIndex (; 174 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex (; 173 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int64Array#constructor @@ -7683,9 +7757,9 @@ i32.const 1 i32.ne if - i32.const 568 - i32.const 16 - i32.const 365 + i32.const 728 + i32.const 24 + i32.const 366 i32.const 2 call $~lib/env/abort unreachable @@ -7696,15 +7770,15 @@ i32.const -1 i32.ne if - i32.const 608 - i32.const 16 - i32.const 368 + i32.const 776 + i32.const 24 + i32.const 369 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayFindIndex (; 175 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex (; 174 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint64Array#constructor @@ -7726,9 +7800,9 @@ i32.const 1 i32.ne if - i32.const 568 - i32.const 16 - i32.const 365 + i32.const 728 + i32.const 24 + i32.const 366 i32.const 2 call $~lib/env/abort unreachable @@ -7739,15 +7813,15 @@ i32.const -1 i32.ne if - i32.const 608 - i32.const 16 - i32.const 368 + i32.const 776 + i32.const 24 + i32.const 369 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Float32Array#findIndex (; 176 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#findIndex (; 175 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7793,12 +7867,12 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 177 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 176 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $0 f32.const 4 f32.eq ) - (func $std/typedarray/testArrayFindIndex (; 178 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex (; 177 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Float32Array#constructor @@ -7820,9 +7894,9 @@ i32.const 1 i32.ne if - i32.const 568 - i32.const 16 - i32.const 365 + i32.const 728 + i32.const 24 + i32.const 366 i32.const 2 call $~lib/env/abort unreachable @@ -7833,15 +7907,15 @@ i32.const -1 i32.ne if - i32.const 608 - i32.const 16 - i32.const 368 + i32.const 776 + i32.const 24 + i32.const 369 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Float64Array#findIndex (; 179 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#findIndex (; 178 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7887,12 +7961,12 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 180 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 179 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $0 f64.const 4 f64.eq ) - (func $std/typedarray/testArrayFindIndex (; 181 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex (; 180 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Float64Array#constructor @@ -7914,9 +7988,9 @@ i32.const 1 i32.ne if - i32.const 568 - i32.const 16 - i32.const 365 + i32.const 728 + i32.const 24 + i32.const 366 i32.const 2 call $~lib/env/abort unreachable @@ -7927,15 +8001,15 @@ i32.const -1 i32.ne if - i32.const 608 - i32.const 16 - i32.const 368 + i32.const 776 + i32.const 24 + i32.const 369 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayEvery~anonymous|0 (; 182 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|0 (; 181 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 24 i32.shl @@ -7945,7 +8019,7 @@ i32.rem_s i32.eqz ) - (func $~lib/typedarray/Int8Array#every (; 183 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#every (; 182 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7985,7 +8059,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery (; 184 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery (; 183 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int8Array#constructor @@ -8007,8 +8081,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 395 + i32.const 24 + i32.const 396 i32.const 2 call $~lib/env/abort unreachable @@ -8018,20 +8092,20 @@ call $~lib/typedarray/Int8Array#every if i32.const 0 - i32.const 16 - i32.const 398 + i32.const 24 + i32.const 399 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayEvery~anonymous|0 (; 185 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|0 (; 184 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 1 i32.and i32.eqz ) - (func $~lib/typedarray/Uint8Array#every (; 186 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#every (; 185 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8071,7 +8145,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery (; 187 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery (; 186 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint8Array#constructor @@ -8093,8 +8167,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 395 + i32.const 24 + i32.const 396 i32.const 2 call $~lib/env/abort unreachable @@ -8104,14 +8178,14 @@ call $~lib/typedarray/Uint8Array#every if i32.const 0 - i32.const 16 - i32.const 398 + i32.const 24 + i32.const 399 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayEvery (; 188 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery (; 187 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor @@ -8133,8 +8207,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 395 + i32.const 24 + i32.const 396 i32.const 2 call $~lib/env/abort unreachable @@ -8144,14 +8218,14 @@ call $~lib/typedarray/Uint8Array#every if i32.const 0 - i32.const 16 - i32.const 398 + i32.const 24 + i32.const 399 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayEvery~anonymous|0 (; 189 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|0 (; 188 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 16 i32.shl @@ -8161,7 +8235,7 @@ i32.rem_s i32.eqz ) - (func $~lib/typedarray/Int16Array#every (; 190 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#every (; 189 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8205,7 +8279,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery (; 191 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery (; 190 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int16Array#constructor @@ -8227,8 +8301,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 395 + i32.const 24 + i32.const 396 i32.const 2 call $~lib/env/abort unreachable @@ -8238,14 +8312,14 @@ call $~lib/typedarray/Int16Array#every if i32.const 0 - i32.const 16 - i32.const 398 + i32.const 24 + i32.const 399 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Uint16Array#every (; 192 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#every (; 191 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8289,7 +8363,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery (; 193 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery (; 192 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint16Array#constructor @@ -8311,8 +8385,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 395 + i32.const 24 + i32.const 396 i32.const 2 call $~lib/env/abort unreachable @@ -8322,20 +8396,20 @@ call $~lib/typedarray/Uint16Array#every if i32.const 0 - i32.const 16 - i32.const 398 + i32.const 24 + i32.const 399 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayEvery~anonymous|0 (; 194 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|0 (; 193 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 2 i32.rem_s i32.eqz ) - (func $~lib/typedarray/Int32Array#every (; 195 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#every (; 194 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8379,7 +8453,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery (; 196 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery (; 195 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int32Array#constructor @@ -8401,8 +8475,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 395 + i32.const 24 + i32.const 396 i32.const 2 call $~lib/env/abort unreachable @@ -8412,14 +8486,14 @@ call $~lib/typedarray/Int32Array#every if i32.const 0 - i32.const 16 - i32.const 398 + i32.const 24 + i32.const 399 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayEvery (; 197 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery (; 196 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint32Array#constructor @@ -8441,8 +8515,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 395 + i32.const 24 + i32.const 396 i32.const 2 call $~lib/env/abort unreachable @@ -8452,21 +8526,21 @@ call $~lib/typedarray/Int32Array#every if i32.const 0 - i32.const 16 - i32.const 398 + i32.const 24 + i32.const 399 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayEvery~anonymous|0 (; 198 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|0 (; 197 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 i64.const 2 i64.rem_s i64.const 0 i64.eq ) - (func $~lib/typedarray/Int64Array#every (; 199 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#every (; 198 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8510,7 +8584,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery (; 200 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery (; 199 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int64Array#constructor @@ -8532,8 +8606,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 395 + i32.const 24 + i32.const 396 i32.const 2 call $~lib/env/abort unreachable @@ -8543,21 +8617,21 @@ call $~lib/typedarray/Int64Array#every if i32.const 0 - i32.const 16 - i32.const 398 + i32.const 24 + i32.const 399 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayEvery~anonymous|0 (; 201 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|0 (; 200 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 i64.const 2 i64.rem_u i64.const 0 i64.eq ) - (func $std/typedarray/testArrayEvery (; 202 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery (; 201 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint64Array#constructor @@ -8579,8 +8653,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 395 + i32.const 24 + i32.const 396 i32.const 2 call $~lib/env/abort unreachable @@ -8590,14 +8664,14 @@ call $~lib/typedarray/Int64Array#every if i32.const 0 - i32.const 16 - i32.const 398 + i32.const 24 + i32.const 399 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/math/NativeMathf.mod (; 203 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.mod (; 202 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -8748,13 +8822,13 @@ local.get $0 f32.mul ) - (func $std/typedarray/testArrayEvery~anonymous|0 (; 204 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|0 (; 203 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $0 call $~lib/math/NativeMathf.mod f32.const 0 f32.eq ) - (func $~lib/typedarray/Float32Array#every (; 205 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#every (; 204 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8798,7 +8872,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery (; 206 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery (; 205 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Float32Array#constructor @@ -8820,8 +8894,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 395 + i32.const 24 + i32.const 396 i32.const 2 call $~lib/env/abort unreachable @@ -8831,14 +8905,14 @@ call $~lib/typedarray/Float32Array#every if i32.const 0 - i32.const 16 - i32.const 398 + i32.const 24 + i32.const 399 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/math/NativeMath.mod (; 207 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $~lib/math/NativeMath.mod (; 206 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) (local $1 i64) (local $2 i64) (local $3 i64) @@ -8997,13 +9071,13 @@ local.get $0 f64.mul ) - (func $std/typedarray/testArrayEvery~anonymous|0 (; 208 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|0 (; 207 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $0 call $~lib/math/NativeMath.mod f64.const 0 f64.eq ) - (func $~lib/typedarray/Float64Array#every (; 209 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#every (; 208 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9047,7 +9121,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery (; 210 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery (; 209 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Float64Array#constructor @@ -9069,8 +9143,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 395 + i32.const 24 + i32.const 396 i32.const 2 call $~lib/env/abort unreachable @@ -9080,14 +9154,14 @@ call $~lib/typedarray/Float64Array#every if i32.const 0 - i32.const 16 - i32.const 398 + i32.const 24 + i32.const 399 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayForEach~anonymous|0 (; 211 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach~anonymous|0 (; 210 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.const 255 i32.and @@ -9098,9 +9172,9 @@ i32.and i32.ne if - i32.const 704 - i32.const 16 - i32.const 425 + i32.const 896 + i32.const 24 + i32.const 426 i32.const 4 call $~lib/env/abort unreachable @@ -9109,9 +9183,9 @@ global.get $std/typedarray/forEachCallCount i32.ne if - i32.const 760 - i32.const 16 - i32.const 426 + i32.const 960 + i32.const 24 + i32.const 427 i32.const 4 call $~lib/env/abort unreachable @@ -9120,9 +9194,9 @@ global.get $std/typedarray/forEachSelf i32.ne if - i32.const 816 - i32.const 16 - i32.const 427 + i32.const 1024 + i32.const 24 + i32.const 428 i32.const 4 call $~lib/env/abort unreachable @@ -9132,7 +9206,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Int8Array#forEach (; 212 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/typedarray/Int8Array#forEach (; 211 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9165,7 +9239,7 @@ end end ) - (func $std/typedarray/testArrayForEach (; 213 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach (; 212 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -9209,15 +9283,15 @@ i32.const 3 i32.ne if - i32.const 888 - i32.const 16 - i32.const 430 + i32.const 1104 + i32.const 24 + i32.const 431 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Uint8Array#forEach (; 214 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint8Array#forEach (; 213 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9250,7 +9324,7 @@ end end ) - (func $std/typedarray/testArrayForEach (; 215 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach (; 214 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -9289,15 +9363,15 @@ i32.const 3 i32.ne if - i32.const 888 - i32.const 16 - i32.const 430 + i32.const 1104 + i32.const 24 + i32.const 431 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayForEach (; 216 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach (; 215 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -9336,15 +9410,15 @@ i32.const 3 i32.ne if - i32.const 888 - i32.const 16 - i32.const 430 + i32.const 1104 + i32.const 24 + i32.const 431 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayForEach~anonymous|0 (; 217 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach~anonymous|0 (; 216 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.const 65535 i32.and @@ -9355,9 +9429,9 @@ i32.and i32.ne if - i32.const 704 - i32.const 16 - i32.const 425 + i32.const 896 + i32.const 24 + i32.const 426 i32.const 4 call $~lib/env/abort unreachable @@ -9366,9 +9440,9 @@ global.get $std/typedarray/forEachCallCount i32.ne if - i32.const 760 - i32.const 16 - i32.const 426 + i32.const 960 + i32.const 24 + i32.const 427 i32.const 4 call $~lib/env/abort unreachable @@ -9377,9 +9451,9 @@ global.get $std/typedarray/forEachSelf i32.ne if - i32.const 816 - i32.const 16 - i32.const 427 + i32.const 1024 + i32.const 24 + i32.const 428 i32.const 4 call $~lib/env/abort unreachable @@ -9389,7 +9463,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Int16Array#forEach (; 218 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/typedarray/Int16Array#forEach (; 217 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9426,7 +9500,7 @@ end end ) - (func $std/typedarray/testArrayForEach (; 219 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach (; 218 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -9470,15 +9544,15 @@ i32.const 3 i32.ne if - i32.const 888 - i32.const 16 - i32.const 430 + i32.const 1104 + i32.const 24 + i32.const 431 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Uint16Array#forEach (; 220 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/typedarray/Uint16Array#forEach (; 219 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9515,7 +9589,7 @@ end end ) - (func $std/typedarray/testArrayForEach (; 221 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach (; 220 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -9553,24 +9627,24 @@ i32.const 3 i32.ne if - i32.const 888 - i32.const 16 - i32.const 430 + i32.const 1104 + i32.const 24 + i32.const 431 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayForEach~anonymous|0 (; 222 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach~anonymous|0 (; 221 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) global.get $std/typedarray/forEachValues local.get $1 call $~lib/array/Array#__get local.get $0 i32.ne if - i32.const 704 - i32.const 16 - i32.const 425 + i32.const 896 + i32.const 24 + i32.const 426 i32.const 4 call $~lib/env/abort unreachable @@ -9579,9 +9653,9 @@ global.get $std/typedarray/forEachCallCount i32.ne if - i32.const 760 - i32.const 16 - i32.const 426 + i32.const 960 + i32.const 24 + i32.const 427 i32.const 4 call $~lib/env/abort unreachable @@ -9590,9 +9664,9 @@ global.get $std/typedarray/forEachSelf i32.ne if - i32.const 816 - i32.const 16 - i32.const 427 + i32.const 1024 + i32.const 24 + i32.const 428 i32.const 4 call $~lib/env/abort unreachable @@ -9602,7 +9676,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Int32Array#forEach (; 223 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int32Array#forEach (; 222 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9639,7 +9713,7 @@ end end ) - (func $std/typedarray/testArrayForEach (; 224 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach (; 223 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -9672,15 +9746,15 @@ i32.const 3 i32.ne if - i32.const 888 - i32.const 16 - i32.const 430 + i32.const 1104 + i32.const 24 + i32.const 431 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayForEach (; 225 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach (; 224 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -9713,15 +9787,15 @@ i32.const 3 i32.ne if - i32.const 888 - i32.const 16 - i32.const 430 + i32.const 1104 + i32.const 24 + i32.const 431 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayForEach~anonymous|0 (; 226 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach~anonymous|0 (; 225 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) local.get $0 global.get $std/typedarray/forEachValues local.get $1 @@ -9729,9 +9803,9 @@ i64.extend_i32_s i64.ne if - i32.const 704 - i32.const 16 - i32.const 425 + i32.const 896 + i32.const 24 + i32.const 426 i32.const 4 call $~lib/env/abort unreachable @@ -9740,9 +9814,9 @@ global.get $std/typedarray/forEachCallCount i32.ne if - i32.const 760 - i32.const 16 - i32.const 426 + i32.const 960 + i32.const 24 + i32.const 427 i32.const 4 call $~lib/env/abort unreachable @@ -9751,9 +9825,9 @@ global.get $std/typedarray/forEachSelf i32.ne if - i32.const 816 - i32.const 16 - i32.const 427 + i32.const 1024 + i32.const 24 + i32.const 428 i32.const 4 call $~lib/env/abort unreachable @@ -9763,7 +9837,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Int64Array#forEach (; 227 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int64Array#forEach (; 226 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9800,7 +9874,7 @@ end end ) - (func $std/typedarray/testArrayForEach (; 228 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach (; 227 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -9836,15 +9910,15 @@ i32.const 3 i32.ne if - i32.const 888 - i32.const 16 - i32.const 430 + i32.const 1104 + i32.const 24 + i32.const 431 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayForEach (; 229 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach (; 228 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -9880,15 +9954,15 @@ i32.const 3 i32.ne if - i32.const 888 - i32.const 16 - i32.const 430 + i32.const 1104 + i32.const 24 + i32.const 431 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayForEach~anonymous|0 (; 230 ;) (type $FUNCSIG$vfii) (param $0 f32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach~anonymous|0 (; 229 ;) (type $FUNCSIG$vfii) (param $0 f32) (param $1 i32) (param $2 i32) local.get $0 global.get $std/typedarray/forEachValues local.get $1 @@ -9896,9 +9970,9 @@ f32.convert_i32_s f32.ne if - i32.const 704 - i32.const 16 - i32.const 425 + i32.const 896 + i32.const 24 + i32.const 426 i32.const 4 call $~lib/env/abort unreachable @@ -9907,9 +9981,9 @@ global.get $std/typedarray/forEachCallCount i32.ne if - i32.const 760 - i32.const 16 - i32.const 426 + i32.const 960 + i32.const 24 + i32.const 427 i32.const 4 call $~lib/env/abort unreachable @@ -9918,9 +9992,9 @@ global.get $std/typedarray/forEachSelf i32.ne if - i32.const 816 - i32.const 16 - i32.const 427 + i32.const 1024 + i32.const 24 + i32.const 428 i32.const 4 call $~lib/env/abort unreachable @@ -9930,7 +10004,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Float32Array#forEach (; 231 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/typedarray/Float32Array#forEach (; 230 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9967,7 +10041,7 @@ end end ) - (func $std/typedarray/testArrayForEach (; 232 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach (; 231 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -10002,15 +10076,15 @@ i32.const 3 i32.ne if - i32.const 888 - i32.const 16 - i32.const 430 + i32.const 1104 + i32.const 24 + i32.const 431 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayForEach~anonymous|0 (; 233 ;) (type $FUNCSIG$vdii) (param $0 f64) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach~anonymous|0 (; 232 ;) (type $FUNCSIG$vdii) (param $0 f64) (param $1 i32) (param $2 i32) local.get $0 global.get $std/typedarray/forEachValues local.get $1 @@ -10018,9 +10092,9 @@ f64.convert_i32_s f64.ne if - i32.const 704 - i32.const 16 - i32.const 425 + i32.const 896 + i32.const 24 + i32.const 426 i32.const 4 call $~lib/env/abort unreachable @@ -10029,9 +10103,9 @@ global.get $std/typedarray/forEachCallCount i32.ne if - i32.const 760 - i32.const 16 - i32.const 426 + i32.const 960 + i32.const 24 + i32.const 427 i32.const 4 call $~lib/env/abort unreachable @@ -10040,9 +10114,9 @@ global.get $std/typedarray/forEachSelf i32.ne if - i32.const 816 - i32.const 16 - i32.const 427 + i32.const 1024 + i32.const 24 + i32.const 428 i32.const 4 call $~lib/env/abort unreachable @@ -10052,7 +10126,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Float64Array#forEach (; 234 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/typedarray/Float64Array#forEach (; 233 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10089,7 +10163,7 @@ end end ) - (func $std/typedarray/testArrayForEach (; 235 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach (; 234 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -10124,15 +10198,15 @@ i32.const 3 i32.ne if - i32.const 888 - i32.const 16 - i32.const 430 + i32.const 1104 + i32.const 24 + i32.const 431 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Int8Array#reverse (; 236 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#reverse (; 235 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10180,7 +10254,7 @@ end local.get $0 ) - (func $std/typedarray/testArrayReverse (; 237 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse (; 236 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10251,9 +10325,9 @@ i32.shr_s i32.ne if - i32.const 1024 - i32.const 16 - i32.const 461 + i32.const 1264 + i32.const 24 + i32.const 462 i32.const 4 call $~lib/env/abort unreachable @@ -10278,9 +10352,9 @@ i32.const 8 i32.ne if - i32.const 1104 - i32.const 16 - i32.const 466 + i32.const 1352 + i32.const 24 + i32.const 467 i32.const 2 call $~lib/env/abort unreachable @@ -10291,9 +10365,9 @@ i32.const 7 i32.ne if - i32.const 1104 - i32.const 16 - i32.const 467 + i32.const 1352 + i32.const 24 + i32.const 468 i32.const 2 call $~lib/env/abort unreachable @@ -10304,9 +10378,9 @@ i32.const 6 i32.ne if - i32.const 1104 - i32.const 16 - i32.const 468 + i32.const 1352 + i32.const 24 + i32.const 469 i32.const 2 call $~lib/env/abort unreachable @@ -10317,15 +10391,15 @@ i32.const 5 i32.ne if - i32.const 1104 - i32.const 16 - i32.const 469 + i32.const 1352 + i32.const 24 + i32.const 470 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Uint8Array#reverse (; 238 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reverse (; 237 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10373,11 +10447,12 @@ end local.get $0 ) - (func $~lib/typedarray/Uint8Array#subarray (; 239 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#subarray (; 238 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) i32.const 8 local.get $0 local.tee $3 @@ -10401,30 +10476,38 @@ select local.set $4 i32.const 12 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 5 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.set $0 local.get $3 i32.load offset=4 - local.set $1 + local.set $5 local.get $0 + local.set $1 local.get $3 i32.load - i32.store + local.tee $0 + local.get $1 + i32.load + i32.ne + drop + local.get $1 local.get $0 + i32.store local.get $1 local.get $2 + local.get $5 i32.add i32.store offset=4 - local.get $0 + local.get $1 local.get $4 local.get $2 i32.sub i32.store offset=8 - local.get $0 + local.get $1 ) - (func $std/typedarray/testArrayReverse (; 240 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse (; 239 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10489,9 +10572,9 @@ i32.and i32.ne if - i32.const 1024 - i32.const 16 - i32.const 461 + i32.const 1264 + i32.const 24 + i32.const 462 i32.const 4 call $~lib/env/abort unreachable @@ -10514,9 +10597,9 @@ i32.const 8 i32.ne if - i32.const 1104 - i32.const 16 - i32.const 466 + i32.const 1352 + i32.const 24 + i32.const 467 i32.const 2 call $~lib/env/abort unreachable @@ -10527,9 +10610,9 @@ i32.const 7 i32.ne if - i32.const 1104 - i32.const 16 - i32.const 467 + i32.const 1352 + i32.const 24 + i32.const 468 i32.const 2 call $~lib/env/abort unreachable @@ -10540,9 +10623,9 @@ i32.const 6 i32.ne if - i32.const 1104 - i32.const 16 - i32.const 468 + i32.const 1352 + i32.const 24 + i32.const 469 i32.const 2 call $~lib/env/abort unreachable @@ -10553,19 +10636,20 @@ i32.const 5 i32.ne if - i32.const 1104 - i32.const 16 - i32.const 469 + i32.const 1352 + i32.const 24 + i32.const 470 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Uint8ClampedArray#subarray (; 241 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#subarray (; 240 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) i32.const 8 local.get $0 local.tee $3 @@ -10589,30 +10673,38 @@ select local.set $4 i32.const 12 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 6 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.set $0 local.get $3 i32.load offset=4 - local.set $1 + local.set $5 local.get $0 + local.set $1 local.get $3 i32.load - i32.store + local.tee $0 + local.get $1 + i32.load + i32.ne + drop + local.get $1 local.get $0 + i32.store local.get $1 local.get $2 + local.get $5 i32.add i32.store offset=4 - local.get $0 + local.get $1 local.get $4 local.get $2 i32.sub i32.store offset=8 - local.get $0 + local.get $1 ) - (func $std/typedarray/testArrayReverse (; 242 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse (; 241 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10677,9 +10769,9 @@ i32.and i32.ne if - i32.const 1024 - i32.const 16 - i32.const 461 + i32.const 1264 + i32.const 24 + i32.const 462 i32.const 4 call $~lib/env/abort unreachable @@ -10702,9 +10794,9 @@ i32.const 8 i32.ne if - i32.const 1104 - i32.const 16 - i32.const 466 + i32.const 1352 + i32.const 24 + i32.const 467 i32.const 2 call $~lib/env/abort unreachable @@ -10715,9 +10807,9 @@ i32.const 7 i32.ne if - i32.const 1104 - i32.const 16 - i32.const 467 + i32.const 1352 + i32.const 24 + i32.const 468 i32.const 2 call $~lib/env/abort unreachable @@ -10728,9 +10820,9 @@ i32.const 6 i32.ne if - i32.const 1104 - i32.const 16 - i32.const 468 + i32.const 1352 + i32.const 24 + i32.const 469 i32.const 2 call $~lib/env/abort unreachable @@ -10741,15 +10833,15 @@ i32.const 5 i32.ne if - i32.const 1104 - i32.const 16 - i32.const 469 + i32.const 1352 + i32.const 24 + i32.const 470 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Int16Array#reverse (; 243 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#reverse (; 242 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10803,11 +10895,12 @@ end local.get $0 ) - (func $~lib/typedarray/Int16Array#subarray (; 244 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#subarray (; 243 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) i32.const 8 local.get $0 local.tee $3 @@ -10833,34 +10926,42 @@ select local.set $4 i32.const 12 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 7 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.set $0 local.get $3 i32.load offset=4 - local.set $1 + local.set $5 local.get $0 + local.set $1 local.get $3 i32.load - i32.store + local.tee $0 + local.get $1 + i32.load + i32.ne + drop + local.get $1 local.get $0 + i32.store + local.get $1 local.get $2 i32.const 1 i32.shl - local.get $1 + local.get $5 i32.add i32.store offset=4 - local.get $0 + local.get $1 local.get $4 local.get $2 i32.sub i32.const 1 i32.shl i32.store offset=8 - local.get $0 + local.get $1 ) - (func $std/typedarray/testArrayReverse (; 245 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse (; 244 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10931,9 +11032,9 @@ i32.shr_s i32.ne if - i32.const 1024 - i32.const 16 - i32.const 461 + i32.const 1264 + i32.const 24 + i32.const 462 i32.const 4 call $~lib/env/abort unreachable @@ -10956,9 +11057,9 @@ i32.const 8 i32.ne if - i32.const 1104 - i32.const 16 - i32.const 466 + i32.const 1352 + i32.const 24 + i32.const 467 i32.const 2 call $~lib/env/abort unreachable @@ -10969,9 +11070,9 @@ i32.const 7 i32.ne if - i32.const 1104 - i32.const 16 - i32.const 467 + i32.const 1352 + i32.const 24 + i32.const 468 i32.const 2 call $~lib/env/abort unreachable @@ -10982,9 +11083,9 @@ i32.const 6 i32.ne if - i32.const 1104 - i32.const 16 - i32.const 468 + i32.const 1352 + i32.const 24 + i32.const 469 i32.const 2 call $~lib/env/abort unreachable @@ -10995,15 +11096,15 @@ i32.const 5 i32.ne if - i32.const 1104 - i32.const 16 - i32.const 469 + i32.const 1352 + i32.const 24 + i32.const 470 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Uint16Array#reverse (; 246 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#reverse (; 245 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -11057,11 +11158,12 @@ end local.get $0 ) - (func $~lib/typedarray/Uint16Array#subarray (; 247 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#subarray (; 246 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) i32.const 8 local.get $0 local.tee $3 @@ -11087,34 +11189,42 @@ select local.set $4 i32.const 12 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 8 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.set $0 local.get $3 i32.load offset=4 - local.set $1 + local.set $5 local.get $0 + local.set $1 local.get $3 i32.load - i32.store + local.tee $0 + local.get $1 + i32.load + i32.ne + drop + local.get $1 local.get $0 + i32.store + local.get $1 local.get $2 i32.const 1 i32.shl - local.get $1 + local.get $5 i32.add i32.store offset=4 - local.get $0 + local.get $1 local.get $4 local.get $2 i32.sub i32.const 1 i32.shl i32.store offset=8 - local.get $0 + local.get $1 ) - (func $std/typedarray/testArrayReverse (; 248 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse (; 247 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11179,9 +11289,9 @@ i32.and i32.ne if - i32.const 1024 - i32.const 16 - i32.const 461 + i32.const 1264 + i32.const 24 + i32.const 462 i32.const 4 call $~lib/env/abort unreachable @@ -11204,9 +11314,9 @@ i32.const 8 i32.ne if - i32.const 1104 - i32.const 16 - i32.const 466 + i32.const 1352 + i32.const 24 + i32.const 467 i32.const 2 call $~lib/env/abort unreachable @@ -11217,9 +11327,9 @@ i32.const 7 i32.ne if - i32.const 1104 - i32.const 16 - i32.const 467 + i32.const 1352 + i32.const 24 + i32.const 468 i32.const 2 call $~lib/env/abort unreachable @@ -11230,9 +11340,9 @@ i32.const 6 i32.ne if - i32.const 1104 - i32.const 16 - i32.const 468 + i32.const 1352 + i32.const 24 + i32.const 469 i32.const 2 call $~lib/env/abort unreachable @@ -11243,15 +11353,15 @@ i32.const 5 i32.ne if - i32.const 1104 - i32.const 16 - i32.const 469 + i32.const 1352 + i32.const 24 + i32.const 470 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Int32Array#reverse (; 249 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int32Array#reverse (; 248 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -11305,7 +11415,7 @@ end local.get $0 ) - (func $std/typedarray/testArrayReverse (; 250 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse (; 249 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11364,9 +11474,9 @@ call $~lib/array/Array#__get i32.ne if - i32.const 1024 - i32.const 16 - i32.const 461 + i32.const 1264 + i32.const 24 + i32.const 462 i32.const 4 call $~lib/env/abort unreachable @@ -11391,9 +11501,9 @@ i32.const 8 i32.ne if - i32.const 1104 - i32.const 16 - i32.const 466 + i32.const 1352 + i32.const 24 + i32.const 467 i32.const 2 call $~lib/env/abort unreachable @@ -11404,9 +11514,9 @@ i32.const 7 i32.ne if - i32.const 1104 - i32.const 16 - i32.const 467 + i32.const 1352 + i32.const 24 + i32.const 468 i32.const 2 call $~lib/env/abort unreachable @@ -11417,9 +11527,9 @@ i32.const 6 i32.ne if - i32.const 1104 - i32.const 16 - i32.const 468 + i32.const 1352 + i32.const 24 + i32.const 469 i32.const 2 call $~lib/env/abort unreachable @@ -11430,19 +11540,20 @@ i32.const 5 i32.ne if - i32.const 1104 - i32.const 16 - i32.const 469 + i32.const 1352 + i32.const 24 + i32.const 470 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Uint32Array#subarray (; 251 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint32Array#subarray (; 250 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) i32.const 8 local.get $0 local.tee $3 @@ -11468,34 +11579,42 @@ select local.set $4 i32.const 12 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 10 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.set $0 local.get $3 i32.load offset=4 - local.set $1 + local.set $5 local.get $0 + local.set $1 local.get $3 i32.load - i32.store + local.tee $0 + local.get $1 + i32.load + i32.ne + drop + local.get $1 local.get $0 + i32.store + local.get $1 local.get $2 i32.const 2 i32.shl - local.get $1 + local.get $5 i32.add i32.store offset=4 - local.get $0 + local.get $1 local.get $4 local.get $2 i32.sub i32.const 2 i32.shl i32.store offset=8 - local.get $0 + local.get $1 ) - (func $std/typedarray/testArrayReverse (; 252 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse (; 251 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11554,9 +11673,9 @@ call $~lib/array/Array#__get i32.ne if - i32.const 1024 - i32.const 16 - i32.const 461 + i32.const 1264 + i32.const 24 + i32.const 462 i32.const 4 call $~lib/env/abort unreachable @@ -11579,9 +11698,9 @@ i32.const 8 i32.ne if - i32.const 1104 - i32.const 16 - i32.const 466 + i32.const 1352 + i32.const 24 + i32.const 467 i32.const 2 call $~lib/env/abort unreachable @@ -11592,9 +11711,9 @@ i32.const 7 i32.ne if - i32.const 1104 - i32.const 16 - i32.const 467 + i32.const 1352 + i32.const 24 + i32.const 468 i32.const 2 call $~lib/env/abort unreachable @@ -11605,9 +11724,9 @@ i32.const 6 i32.ne if - i32.const 1104 - i32.const 16 - i32.const 468 + i32.const 1352 + i32.const 24 + i32.const 469 i32.const 2 call $~lib/env/abort unreachable @@ -11618,15 +11737,15 @@ i32.const 5 i32.ne if - i32.const 1104 - i32.const 16 - i32.const 469 + i32.const 1352 + i32.const 24 + i32.const 470 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Int64Array#reverse (; 253 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int64Array#reverse (; 252 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -11680,11 +11799,12 @@ end local.get $0 ) - (func $~lib/typedarray/Int64Array#subarray (; 254 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int64Array#subarray (; 253 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) i32.const 8 local.get $0 local.tee $3 @@ -11710,34 +11830,42 @@ select local.set $4 i32.const 12 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 11 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.set $0 local.get $3 i32.load offset=4 - local.set $1 + local.set $5 local.get $0 + local.set $1 local.get $3 i32.load - i32.store + local.tee $0 + local.get $1 + i32.load + i32.ne + drop + local.get $1 local.get $0 + i32.store + local.get $1 local.get $2 i32.const 3 i32.shl - local.get $1 + local.get $5 i32.add i32.store offset=4 - local.get $0 + local.get $1 local.get $4 local.get $2 i32.sub i32.const 3 i32.shl i32.store offset=8 - local.get $0 + local.get $1 ) - (func $std/typedarray/testArrayReverse (; 255 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse (; 254 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11799,9 +11927,9 @@ i64.extend_i32_s i64.ne if - i32.const 1024 - i32.const 16 - i32.const 461 + i32.const 1264 + i32.const 24 + i32.const 462 i32.const 4 call $~lib/env/abort unreachable @@ -11824,9 +11952,9 @@ i64.const 8 i64.ne if - i32.const 1104 - i32.const 16 - i32.const 466 + i32.const 1352 + i32.const 24 + i32.const 467 i32.const 2 call $~lib/env/abort unreachable @@ -11837,9 +11965,9 @@ i64.const 7 i64.ne if - i32.const 1104 - i32.const 16 - i32.const 467 + i32.const 1352 + i32.const 24 + i32.const 468 i32.const 2 call $~lib/env/abort unreachable @@ -11850,9 +11978,9 @@ i64.const 6 i64.ne if - i32.const 1104 - i32.const 16 - i32.const 468 + i32.const 1352 + i32.const 24 + i32.const 469 i32.const 2 call $~lib/env/abort unreachable @@ -11863,19 +11991,20 @@ i64.const 5 i64.ne if - i32.const 1104 - i32.const 16 - i32.const 469 + i32.const 1352 + i32.const 24 + i32.const 470 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Uint64Array#subarray (; 256 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint64Array#subarray (; 255 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) i32.const 8 local.get $0 local.tee $3 @@ -11901,34 +12030,42 @@ select local.set $4 i32.const 12 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 12 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.set $0 local.get $3 i32.load offset=4 - local.set $1 + local.set $5 local.get $0 + local.set $1 local.get $3 i32.load - i32.store + local.tee $0 + local.get $1 + i32.load + i32.ne + drop + local.get $1 local.get $0 + i32.store + local.get $1 local.get $2 i32.const 3 i32.shl - local.get $1 + local.get $5 i32.add i32.store offset=4 - local.get $0 + local.get $1 local.get $4 local.get $2 i32.sub i32.const 3 i32.shl i32.store offset=8 - local.get $0 + local.get $1 ) - (func $std/typedarray/testArrayReverse (; 257 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse (; 256 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11990,9 +12127,9 @@ i64.extend_i32_s i64.ne if - i32.const 1024 - i32.const 16 - i32.const 461 + i32.const 1264 + i32.const 24 + i32.const 462 i32.const 4 call $~lib/env/abort unreachable @@ -12015,9 +12152,9 @@ i64.const 8 i64.ne if - i32.const 1104 - i32.const 16 - i32.const 466 + i32.const 1352 + i32.const 24 + i32.const 467 i32.const 2 call $~lib/env/abort unreachable @@ -12028,9 +12165,9 @@ i64.const 7 i64.ne if - i32.const 1104 - i32.const 16 - i32.const 467 + i32.const 1352 + i32.const 24 + i32.const 468 i32.const 2 call $~lib/env/abort unreachable @@ -12041,9 +12178,9 @@ i64.const 6 i64.ne if - i32.const 1104 - i32.const 16 - i32.const 468 + i32.const 1352 + i32.const 24 + i32.const 469 i32.const 2 call $~lib/env/abort unreachable @@ -12054,15 +12191,15 @@ i64.const 5 i64.ne if - i32.const 1104 - i32.const 16 - i32.const 469 + i32.const 1352 + i32.const 24 + i32.const 470 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Float32Array#reverse (; 258 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float32Array#reverse (; 257 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -12116,11 +12253,12 @@ end local.get $0 ) - (func $~lib/typedarray/Float32Array#subarray (; 259 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float32Array#subarray (; 258 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) i32.const 8 local.get $0 local.tee $3 @@ -12146,34 +12284,42 @@ select local.set $4 i32.const 12 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 13 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.set $0 local.get $3 i32.load offset=4 - local.set $1 + local.set $5 local.get $0 + local.set $1 local.get $3 i32.load - i32.store + local.tee $0 + local.get $1 + i32.load + i32.ne + drop + local.get $1 local.get $0 + i32.store + local.get $1 local.get $2 i32.const 2 i32.shl - local.get $1 + local.get $5 i32.add i32.store offset=4 - local.get $0 + local.get $1 local.get $4 local.get $2 i32.sub i32.const 2 i32.shl i32.store offset=8 - local.get $0 + local.get $1 ) - (func $std/typedarray/testArrayReverse (; 260 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse (; 259 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12235,9 +12381,9 @@ f32.convert_i32_s f32.ne if - i32.const 1024 - i32.const 16 - i32.const 461 + i32.const 1264 + i32.const 24 + i32.const 462 i32.const 4 call $~lib/env/abort unreachable @@ -12260,9 +12406,9 @@ f32.const 8 f32.ne if - i32.const 1104 - i32.const 16 - i32.const 466 + i32.const 1352 + i32.const 24 + i32.const 467 i32.const 2 call $~lib/env/abort unreachable @@ -12273,9 +12419,9 @@ f32.const 7 f32.ne if - i32.const 1104 - i32.const 16 - i32.const 467 + i32.const 1352 + i32.const 24 + i32.const 468 i32.const 2 call $~lib/env/abort unreachable @@ -12286,9 +12432,9 @@ f32.const 6 f32.ne if - i32.const 1104 - i32.const 16 - i32.const 468 + i32.const 1352 + i32.const 24 + i32.const 469 i32.const 2 call $~lib/env/abort unreachable @@ -12299,15 +12445,15 @@ f32.const 5 f32.ne if - i32.const 1104 - i32.const 16 - i32.const 469 + i32.const 1352 + i32.const 24 + i32.const 470 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Float64Array#reverse (; 261 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float64Array#reverse (; 260 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -12361,7 +12507,7 @@ end local.get $0 ) - (func $std/typedarray/testArrayReverse (; 262 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse (; 261 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12423,9 +12569,9 @@ f64.convert_i32_s f64.ne if - i32.const 1024 - i32.const 16 - i32.const 461 + i32.const 1264 + i32.const 24 + i32.const 462 i32.const 4 call $~lib/env/abort unreachable @@ -12450,9 +12596,9 @@ f64.const 8 f64.ne if - i32.const 1104 - i32.const 16 - i32.const 466 + i32.const 1352 + i32.const 24 + i32.const 467 i32.const 2 call $~lib/env/abort unreachable @@ -12463,9 +12609,9 @@ f64.const 7 f64.ne if - i32.const 1104 - i32.const 16 - i32.const 467 + i32.const 1352 + i32.const 24 + i32.const 468 i32.const 2 call $~lib/env/abort unreachable @@ -12476,9 +12622,9 @@ f64.const 6 f64.ne if - i32.const 1104 - i32.const 16 - i32.const 468 + i32.const 1352 + i32.const 24 + i32.const 469 i32.const 2 call $~lib/env/abort unreachable @@ -12489,18 +12635,18 @@ f64.const 5 f64.ne if - i32.const 1104 - i32.const 16 - i32.const 469 + i32.const 1352 + i32.const 24 + i32.const 470 i32.const 2 call $~lib/env/abort unreachable end ) - (func $start:std/typedarray (; 263 ;) (type $FUNCSIG$v) + (func $start:std/typedarray (; 262 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - i32.const 1192 + i32.const 1440 global.set $~lib/allocator/arena/startOffset global.get $~lib/allocator/arena/startOffset global.set $~lib/allocator/arena/offset @@ -12531,8 +12677,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 96 + i32.const 24 + i32.const 97 i32.const 0 call $~lib/env/abort unreachable @@ -12545,8 +12691,8 @@ i32.sub if i32.const 0 - i32.const 16 - i32.const 97 + i32.const 24 + i32.const 98 i32.const 0 call $~lib/env/abort unreachable @@ -12557,8 +12703,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 98 + i32.const 24 + i32.const 99 i32.const 0 call $~lib/env/abort unreachable @@ -12570,8 +12716,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 99 + i32.const 24 + i32.const 100 i32.const 0 call $~lib/env/abort unreachable @@ -12583,8 +12729,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 100 + i32.const 24 + i32.const 101 i32.const 0 call $~lib/env/abort unreachable @@ -12596,8 +12742,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 101 + i32.const 24 + i32.const 102 i32.const 0 call $~lib/env/abort unreachable @@ -12615,8 +12761,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 104 + i32.const 24 + i32.const 105 i32.const 0 call $~lib/env/abort unreachable @@ -12631,8 +12777,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 105 + i32.const 24 + i32.const 106 i32.const 0 call $~lib/env/abort unreachable @@ -12643,8 +12789,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 106 + i32.const 24 + i32.const 107 i32.const 0 call $~lib/env/abort unreachable @@ -12656,8 +12802,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 107 + i32.const 24 + i32.const 108 i32.const 0 call $~lib/env/abort unreachable @@ -12710,8 +12856,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 121 + i32.const 24 + i32.const 122 i32.const 0 call $~lib/env/abort unreachable @@ -12726,8 +12872,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 122 + i32.const 24 + i32.const 123 i32.const 0 call $~lib/env/abort unreachable @@ -12738,8 +12884,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 123 + i32.const 24 + i32.const 124 i32.const 0 call $~lib/env/abort unreachable @@ -12804,8 +12950,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 125 + i32.const 24 + i32.const 126 i32.const 0 call $~lib/env/abort unreachable @@ -12830,8 +12976,8 @@ call $~lib/typedarray/Uint8ClampedArray#__get if i32.const 0 - i32.const 16 - i32.const 132 + i32.const 24 + i32.const 133 i32.const 0 call $~lib/env/abort unreachable @@ -12843,8 +12989,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 133 + i32.const 24 + i32.const 134 i32.const 0 call $~lib/env/abort unreachable @@ -12856,8 +13002,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 134 + i32.const 24 + i32.const 135 i32.const 0 call $~lib/env/abort unreachable @@ -12892,16 +13038,16 @@ call $~lib/typedarray/Int8Array#fill global.get $std/typedarray/arr8 i32.const 5 - i32.const 200 + i32.const 240 i32.const 15 i32.const 0 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 - i32.const 16 - i32.const 144 + i32.const 24 + i32.const 145 i32.const 0 call $~lib/env/abort unreachable @@ -12913,16 +13059,16 @@ call $~lib/typedarray/Int8Array#fill global.get $std/typedarray/arr8 i32.const 5 - i32.const 256 + i32.const 312 i32.const 15 i32.const 0 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 - i32.const 16 - i32.const 147 + i32.const 24 + i32.const 148 i32.const 0 call $~lib/env/abort unreachable @@ -12934,16 +13080,16 @@ call $~lib/typedarray/Int8Array#fill global.get $std/typedarray/arr8 i32.const 5 - i32.const 272 + i32.const 336 i32.const 15 i32.const 0 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 - i32.const 16 - i32.const 150 + i32.const 24 + i32.const 151 i32.const 0 call $~lib/env/abort unreachable @@ -12955,16 +13101,16 @@ call $~lib/typedarray/Int8Array#fill global.get $std/typedarray/arr8 i32.const 5 - i32.const 288 + i32.const 360 i32.const 15 i32.const 0 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 - i32.const 16 - i32.const 153 + i32.const 24 + i32.const 154 i32.const 0 call $~lib/env/abort unreachable @@ -12976,16 +13122,16 @@ call $~lib/typedarray/Int8Array#fill global.get $std/typedarray/arr8 i32.const 5 - i32.const 304 + i32.const 384 i32.const 15 i32.const 0 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 - i32.const 16 - i32.const 156 + i32.const 24 + i32.const 157 i32.const 0 call $~lib/env/abort unreachable @@ -13006,8 +13152,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 160 + i32.const 24 + i32.const 161 i32.const 0 call $~lib/env/abort unreachable @@ -13022,8 +13168,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 161 + i32.const 24 + i32.const 162 i32.const 0 call $~lib/env/abort unreachable @@ -13034,40 +13180,40 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 162 + i32.const 24 + i32.const 163 i32.const 0 call $~lib/env/abort unreachable end global.get $std/typedarray/sub8 i32.const 3 - i32.const 320 + i32.const 408 i32.const 15 i32.const 0 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 - i32.const 16 - i32.const 163 + i32.const 24 + i32.const 164 i32.const 0 call $~lib/env/abort unreachable end global.get $std/typedarray/arr8 i32.const 5 - i32.const 336 + i32.const 432 i32.const 15 i32.const 0 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 - i32.const 16 - i32.const 164 + i32.const 24 + i32.const 165 i32.const 0 call $~lib/env/abort unreachable @@ -13102,16 +13248,16 @@ call $~lib/typedarray/Int32Array#fill global.get $std/typedarray/arr32 i32.const 5 - i32.const 352 + i32.const 456 i32.const 16 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 16 - i32.const 174 + i32.const 24 + i32.const 175 i32.const 0 call $~lib/env/abort unreachable @@ -13123,16 +13269,16 @@ call $~lib/typedarray/Int32Array#fill global.get $std/typedarray/arr32 i32.const 5 - i32.const 384 + i32.const 496 i32.const 16 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 16 - i32.const 177 + i32.const 24 + i32.const 178 i32.const 0 call $~lib/env/abort unreachable @@ -13144,16 +13290,16 @@ call $~lib/typedarray/Int32Array#fill global.get $std/typedarray/arr32 i32.const 5 - i32.const 416 + i32.const 536 i32.const 16 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 16 - i32.const 180 + i32.const 24 + i32.const 181 i32.const 0 call $~lib/env/abort unreachable @@ -13165,16 +13311,16 @@ call $~lib/typedarray/Int32Array#fill global.get $std/typedarray/arr32 i32.const 5 - i32.const 448 + i32.const 576 i32.const 16 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 16 - i32.const 183 + i32.const 24 + i32.const 184 i32.const 0 call $~lib/env/abort unreachable @@ -13186,16 +13332,16 @@ call $~lib/typedarray/Int32Array#fill global.get $std/typedarray/arr32 i32.const 5 - i32.const 480 + i32.const 616 i32.const 16 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 16 - i32.const 186 + i32.const 24 + i32.const 187 i32.const 0 call $~lib/env/abort unreachable @@ -13218,8 +13364,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 190 + i32.const 24 + i32.const 191 i32.const 0 call $~lib/env/abort unreachable @@ -13234,8 +13380,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 191 + i32.const 24 + i32.const 192 i32.const 0 call $~lib/env/abort unreachable @@ -13246,45 +13392,45 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 192 + i32.const 24 + i32.const 193 i32.const 0 call $~lib/env/abort unreachable end global.get $std/typedarray/sub32 i32.const 3 - i32.const 512 + i32.const 656 i32.const 16 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 16 - i32.const 193 + i32.const 24 + i32.const 194 i32.const 0 call $~lib/env/abort unreachable end global.get $std/typedarray/arr32 i32.const 5 - i32.const 536 + i32.const 688 i32.const 16 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 16 - i32.const 194 + i32.const 24 + i32.const 195 i32.const 0 call $~lib/env/abort unreachable end - i32.const 134217727 + i32.const 134217726 call $~lib/typedarray/Float64Array#constructor drop i32.const 6 @@ -13326,8 +13472,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 211 + i32.const 24 + i32.const 212 i32.const 0 call $~lib/env/abort unreachable @@ -13338,8 +13484,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 212 + i32.const 24 + i32.const 213 i32.const 0 call $~lib/env/abort unreachable @@ -13354,8 +13500,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 213 + i32.const 24 + i32.const 214 i32.const 0 call $~lib/env/abort unreachable @@ -13366,8 +13512,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 214 + i32.const 24 + i32.const 215 i32.const 0 call $~lib/env/abort unreachable @@ -13384,8 +13530,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 217 + i32.const 24 + i32.const 218 i32.const 0 call $~lib/env/abort unreachable @@ -13396,8 +13542,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 218 + i32.const 24 + i32.const 219 i32.const 0 call $~lib/env/abort unreachable @@ -13412,8 +13558,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 219 + i32.const 24 + i32.const 220 i32.const 0 call $~lib/env/abort unreachable @@ -13424,8 +13570,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 220 + i32.const 24 + i32.const 221 i32.const 0 call $~lib/env/abort unreachable @@ -13442,8 +13588,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 223 + i32.const 24 + i32.const 224 i32.const 0 call $~lib/env/abort unreachable @@ -13454,8 +13600,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 224 + i32.const 24 + i32.const 225 i32.const 0 call $~lib/env/abort unreachable @@ -13470,8 +13616,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 225 + i32.const 24 + i32.const 226 i32.const 0 call $~lib/env/abort unreachable @@ -13482,8 +13628,8 @@ i32.ne if i32.const 0 - i32.const 16 - i32.const 226 + i32.const 24 + i32.const 227 i32.const 0 call $~lib/env/abort unreachable @@ -13577,10 +13723,10 @@ call $std/typedarray/testArrayReverse call $std/typedarray/testArrayReverse ) - (func $start (; 264 ;) (type $FUNCSIG$v) + (func $start (; 263 ;) (type $FUNCSIG$v) call $start:std/typedarray ) - (func $null (; 265 ;) (type $FUNCSIG$v) + (func $null (; 264 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/typedarray.ts b/tests/compiler/std/typedarray.ts index a283106c..380aa16f 100644 --- a/tests/compiler/std/typedarray.ts +++ b/tests/compiler/std/typedarray.ts @@ -1,3 +1,6 @@ +import "allocator/arena"; +import "collector/dummy"; + assert(Int8Array.BYTES_PER_ELEMENT == 1); assert(Uint8Array.BYTES_PER_ELEMENT == 1); assert(Uint8ClampedArray.BYTES_PER_ELEMENT == 1); @@ -26,8 +29,6 @@ function isInt32ArrayEqual(a: Int32Array, b: Array): bool { return true; } -import "allocator/arena"; - function testInstantiate(len: i32): void { var i8a = new Int8Array(len); diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index 8eab4d05..768405ab 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -5,6 +5,7 @@ (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$vii (func (param i32 i32))) (type $FUNCSIG$viid (func (param i32 i32 f64))) (type $FUNCSIG$idd (func (param f64 f64) (result i32))) (type $FUNCSIG$dii (func (param i32 i32) (result f64))) @@ -30,43 +31,42 @@ (type $FUNCSIG$if (func (param f32) (result i32))) (type $FUNCSIG$ddd (func (param f64 f64) (result f64))) (type $FUNCSIG$id (func (param f64) (result i32))) - (type $FUNCSIG$vii (func (param i32 i32))) (type $FUNCSIG$vjii (func (param i64 i32 i32))) (type $FUNCSIG$vfii (func (param f32 i32 i32))) (type $FUNCSIG$vdii (func (param f64 i32 i32))) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\01\00\00\00\"\00\00\00s\00t\00d\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 56) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") - (data (i32.const 96) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 144) "\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 192) "\02\00\00\00\05\00\00\00\01\01\01\04\05") - (data (i32.const 208) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 248) "\02\00\00\00\05\00\00\00\00\00\00\00\00") - (data (i32.const 264) "\02\00\00\00\05\00\00\00\01\01\00\00\00") - (data (i32.const 280) "\02\00\00\00\05\00\00\00\01\01\00\02\02") - (data (i32.const 296) "\02\00\00\00\05\00\00\00\01\01\00\02\02") - (data (i32.const 312) "\02\00\00\00\03\00\00\00\00\00\00") - (data (i32.const 328) "\02\00\00\00\05\00\00\00\01\00\00\00\02") - (data (i32.const 344) "\02\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 376) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 408) "\02\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 440) "\02\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00") - (data (i32.const 472) "\02\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00") - (data (i32.const 504) "\02\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 528) "\02\00\00\00\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00") - (data (i32.const 560) "\01\00\00\00\1e\00\00\00r\00e\00s\00u\00l\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") - (data (i32.const 600) "\01\00\00\00(\00\00\00f\00a\00i\00l\00 \00r\00e\00s\00u\00l\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") - (data (i32.const 648) "\02\00\00\00\0c\00\00\00\n\00\00\00\0c\00\00\00\0e\00\00\00") - (data (i32.const 672) "\10\00\00\00\10\00\00\00\90\02\00\00\90\02\00\00\0c\00\00\00\03\00\00\00") - (data (i32.const 696) "\01\00\00\00,\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00v\00a\00l\00u\00e\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") - (data (i32.const 752) "\01\00\00\00,\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00i\00n\00d\00e\00x\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") - (data (i32.const 808) "\01\00\00\00>\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00s\00e\00l\00f\00 \00p\00a\00r\00a\00m\00e\00t\00e\00r\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") - (data (i32.const 880) "\01\00\00\006\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00c\00a\00l\00l\00 \00c\00o\00u\00n\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") - (data (i32.const 944) "\02\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 992) "\10\00\00\00\10\00\00\00\b8\03\00\00\b8\03\00\00$\00\00\00\t\00\00\00") - (data (i32.const 1016) "\01\00\00\00B\00\00\00T\00y\00p\00e\00d\00A\00r\00r\00a\00y\00 \00r\00e\00v\00e\00r\00s\00e\00 \00v\00a\00l\00u\00e\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") - (data (i32.const 1096) "\01\00\00\00V\00\00\00T\00y\00p\00e\00d\00A\00r\00r\00a\00y\00 \00r\00e\00v\00e\00r\00s\00e\00 \00w\00i\00t\00h\00 \00b\00y\00t\00e\00O\00f\00f\00s\00e\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") + (data (i32.const 8) "\01\00\00\00\"\00\00\00\00\00\00\00\00\00\00\00s\00t\00d\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 64) "\01\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") + (data (i32.const 112) "\01\00\00\00&\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") + (data (i32.const 168) "\01\00\00\00$\00\00\00\00\00\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 224) "\02\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00\01\01\01\04\05") + (data (i32.const 248) "\01\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 296) "\02\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 320) "\02\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00\01\01\00\00\00") + (data (i32.const 344) "\02\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00\01\01\00\02\02") + (data (i32.const 368) "\02\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00\01\01\00\02\02") + (data (i32.const 392) "\02\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 416) "\02\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02") + (data (i32.const 440) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 480) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 520) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 560) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00") + (data (i32.const 600) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00") + (data (i32.const 640) "\02\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 672) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00") + (data (i32.const 712) "\01\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00r\00e\00s\00u\00l\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") + (data (i32.const 760) "\01\00\00\00(\00\00\00\00\00\00\00\00\00\00\00f\00a\00i\00l\00 \00r\00e\00s\00u\00l\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") + (data (i32.const 816) "\02\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\0c\00\00\00\0e\00\00\00") + (data (i32.const 848) "\10\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00@\03\00\00@\03\00\00\0c\00\00\00\03\00\00\00") + (data (i32.const 880) "\01\00\00\00,\00\00\00\00\00\00\00\00\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00v\00a\00l\00u\00e\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") + (data (i32.const 944) "\01\00\00\00,\00\00\00\00\00\00\00\00\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00i\00n\00d\00e\00x\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") + (data (i32.const 1008) "\01\00\00\00>\00\00\00\00\00\00\00\00\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00s\00e\00l\00f\00 \00p\00a\00r\00a\00m\00e\00t\00e\00r\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") + (data (i32.const 1088) "\01\00\00\006\00\00\00\00\00\00\00\00\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00c\00a\00l\00l\00 \00c\00o\00u\00n\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") + (data (i32.const 1160) "\02\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") + (data (i32.const 1216) "\10\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\98\04\00\00\98\04\00\00$\00\00\00\t\00\00\00") + (data (i32.const 1248) "\01\00\00\00B\00\00\00\00\00\00\00\00\00\00\00T\00y\00p\00e\00d\00A\00r\00r\00a\00y\00 \00r\00e\00v\00e\00r\00s\00e\00 \00v\00a\00l\00u\00e\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") + (data (i32.const 1336) "\01\00\00\00V\00\00\00\00\00\00\00\00\00\00\00T\00y\00p\00e\00d\00A\00r\00r\00a\00y\00 \00r\00e\00v\00e\00r\00s\00e\00 \00w\00i\00t\00h\00 \00b\00y\00t\00e\00O\00f\00f\00s\00e\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") (table $0 112 funcref) (elem (i32.const 0) $null $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testReduce~anonymous|0 $std/typedarray/testReduce~anonymous|0 $std/typedarray/testReduce~anonymous|0 $std/typedarray/testReduce~anonymous|0 $std/typedarray/testReduce~anonymous|0 $std/typedarray/testReduce~anonymous|0 $std/typedarray/testReduce~anonymous|0 $std/typedarray/testReduce~anonymous|0 $std/typedarray/testReduce~anonymous|0 $std/typedarray/testReduce~anonymous|0 $std/typedarray/testReduce~anonymous|0 $std/typedarray/testReduceRight~anonymous|0 $std/typedarray/testReduceRight~anonymous|0 $std/typedarray/testReduceRight~anonymous|0 $std/typedarray/testReduceRight~anonymous|0 $std/typedarray/testReduceRight~anonymous|0 $std/typedarray/testReduceRight~anonymous|0 $std/typedarray/testReduceRight~anonymous|0 $std/typedarray/testReduceRight~anonymous|0 $std/typedarray/testReduceRight~anonymous|0 $std/typedarray/testReduceRight~anonymous|0 $std/typedarray/testReduceRight~anonymous|0 $std/typedarray/testArrayMap~anonymous|0 $std/typedarray/testArrayMap~anonymous|0 $std/typedarray/testArrayMap~anonymous|0 $std/typedarray/testArrayMap~anonymous|0 $std/typedarray/testArrayMap~anonymous|0 $std/typedarray/testArrayMap~anonymous|0 $std/typedarray/testArrayMap~anonymous|0 $std/typedarray/testArrayMap~anonymous|0 $std/typedarray/testArrayMap~anonymous|0 $std/typedarray/testArrayMap~anonymous|0 $std/typedarray/testArrayMap~anonymous|0 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArraySome~anonymous|1 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArraySome~anonymous|1 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArraySome~anonymous|1 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArraySome~anonymous|1 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArraySome~anonymous|1 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArraySome~anonymous|1 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArraySome~anonymous|1 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArraySome~anonymous|1 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArraySome~anonymous|1 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArraySome~anonymous|1 $std/typedarray/testArraySome~anonymous|0 $std/typedarray/testArraySome~anonymous|1 $std/typedarray/testArrayFindIndex~anonymous|0 $std/typedarray/testArrayFindIndex~anonymous|1 $std/typedarray/testArrayFindIndex~anonymous|0 $std/typedarray/testArrayFindIndex~anonymous|1 $std/typedarray/testArrayFindIndex~anonymous|0 $std/typedarray/testArrayFindIndex~anonymous|1 $std/typedarray/testArrayFindIndex~anonymous|0 $std/typedarray/testArrayFindIndex~anonymous|1 $std/typedarray/testArrayFindIndex~anonymous|0 $std/typedarray/testArrayFindIndex~anonymous|1 $std/typedarray/testArrayFindIndex~anonymous|0 $std/typedarray/testArrayFindIndex~anonymous|1 $std/typedarray/testArrayFindIndex~anonymous|0 $std/typedarray/testArrayFindIndex~anonymous|1 $std/typedarray/testArrayFindIndex~anonymous|0 $std/typedarray/testArrayFindIndex~anonymous|1 $std/typedarray/testArrayFindIndex~anonymous|0 $std/typedarray/testArrayFindIndex~anonymous|1 $std/typedarray/testArrayFindIndex~anonymous|0 $std/typedarray/testArrayFindIndex~anonymous|1 $std/typedarray/testArrayFindIndex~anonymous|0 $std/typedarray/testArrayFindIndex~anonymous|1 $std/typedarray/testArrayEvery~anonymous|0 $std/typedarray/testArrayEvery~anonymous|1 $std/typedarray/testArrayEvery~anonymous|0 $std/typedarray/testArrayEvery~anonymous|1 $std/typedarray/testArrayEvery~anonymous|0 $std/typedarray/testArrayEvery~anonymous|1 $std/typedarray/testArrayEvery~anonymous|0 $std/typedarray/testArrayEvery~anonymous|1 $std/typedarray/testArrayEvery~anonymous|0 $std/typedarray/testArrayEvery~anonymous|1 $std/typedarray/testArrayEvery~anonymous|0 $std/typedarray/testArrayEvery~anonymous|1 $std/typedarray/testArrayEvery~anonymous|0 $std/typedarray/testArrayEvery~anonymous|1 $std/typedarray/testArrayEvery~anonymous|0 $std/typedarray/testArrayEvery~anonymous|1 $std/typedarray/testArrayEvery~anonymous|0 $std/typedarray/testArrayEvery~anonymous|1 $std/typedarray/testArrayEvery~anonymous|0 $std/typedarray/testArrayEvery~anonymous|1 $std/typedarray/testArrayEvery~anonymous|0 $std/typedarray/testArrayEvery~anonymous|1 $std/typedarray/testArrayForEach~anonymous|0 $std/typedarray/testArrayForEach~anonymous|0 $std/typedarray/testArrayForEach~anonymous|0 $std/typedarray/testArrayForEach~anonymous|0 $std/typedarray/testArrayForEach~anonymous|0 $std/typedarray/testArrayForEach~anonymous|0 $std/typedarray/testArrayForEach~anonymous|0 $std/typedarray/testArrayForEach~anonymous|0 $std/typedarray/testArrayForEach~anonymous|0 $std/typedarray/testArrayForEach~anonymous|0 $std/typedarray/testArrayForEach~anonymous|0) (global $~lib/typedarray/Int8Array.BYTES_PER_ELEMENT i32 (i32.const 1)) @@ -80,10 +80,9 @@ (global $~lib/typedarray/Uint64Array.BYTES_PER_ELEMENT i32 (i32.const 8)) (global $~lib/typedarray/Float32Array.BYTES_PER_ELEMENT i32 (i32.const 4)) (global $~lib/typedarray/Float64Array.BYTES_PER_ELEMENT i32 (i32.const 8)) - (global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0)) - (global $~lib/runtime/HEADER_SIZE i32 (i32.const 8)) + (global $~lib/runtime/HEADER_SIZE i32 (i32.const 16)) (global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) - (global $~lib/runtime/MAX_BYTELENGTH i32 (i32.const 1073741816)) + (global $~lib/runtime/MAX_BYTELENGTH i32 (i32.const 1073741808)) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) (global $~lib/ASC_NO_ASSERT i32 (i32.const 0)) @@ -96,18 +95,20 @@ (global $std/typedarray/sub8 (mut i32) (i32.const 0)) (global $std/typedarray/arr32 (mut i32) (i32.const 0)) (global $std/typedarray/sub32 (mut i32) (i32.const 0)) - (global $std/typedarray/MAX_F64LENGTH i32 (i32.const 134217727)) + (global $std/typedarray/MAX_F64LENGTH i32 (i32.const 134217726)) (global $std/typedarray/multisubarr (mut i32) (i32.const 0)) (global $std/typedarray/multisubarr1 (mut i32) (i32.const 0)) (global $std/typedarray/multisubarr2 (mut i32) (i32.const 0)) (global $std/typedarray/multisubarr3 (mut i32) (i32.const 0)) (global $std/typedarray/forEachCallCount (mut i32) (i32.const 0)) (global $std/typedarray/forEachSelf (mut i32) (i32.const 0)) - (global $std/typedarray/forEachValues (mut i32) (i32.const 680)) - (global $std/typedarray/testArrayReverseValues (mut i32) (i32.const 1000)) - (global $~lib/memory/HEAP_BASE i32 (i32.const 1192)) + (global $std/typedarray/forEachValues (mut i32) (i32.const 864)) + (global $std/typedarray/testArrayReverseValues (mut i32) (i32.const 1232)) + (global $~lib/memory/HEAP_BASE i32 (i32.const 1440)) + (global $~lib/capabilities i32 (i32.const 2)) (export "memory" (memory $0)) (export "table" (table $0)) + (export ".capabilities" (global $~lib/capabilities)) (start $start) (func $~lib/runtime/ADJUSTOBLOCK (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 1 @@ -206,7 +207,7 @@ end return ) - (func $~lib/runtime/doAllocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/runtime/ADJUSTOBLOCK @@ -219,6 +220,12 @@ local.get $0 i32.store offset=4 local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $1 global.get $~lib/runtime/HEADER_SIZE i32.add ) @@ -479,44 +486,46 @@ end end ) - (func $~lib/runtime/assertUnregistered (; 5 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/collector/dummy/__ref_register (; 5 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $~lib/runtime/register (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 global.get $~lib/memory/HEAP_BASE i32.gt_u i32.eqz if i32.const 0 - i32.const 64 - i32.const 313 - i32.const 2 + i32.const 80 + i32.const 161 + i32.const 4 call $~lib/env/abort unreachable end local.get $0 global.get $~lib/runtime/HEADER_SIZE i32.sub + local.set $2 + local.get $2 i32.load global.get $~lib/runtime/HEADER_MAGIC i32.eq i32.eqz if i32.const 0 - i32.const 64 - i32.const 314 - i32.const 2 + i32.const 80 + i32.const 163 + i32.const 4 call $~lib/env/abort unreachable end - ) - (func $~lib/runtime/doRegister (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/runtime/assertUnregistered - local.get $0 - global.get $~lib/runtime/HEADER_SIZE - i32.sub + local.get $2 local.get $1 i32.store local.get $0 + call $~lib/collector/dummy/__ref_register + local.get $0 ) (func $~lib/arraybuffer/ArrayBuffer#constructor (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -526,7 +535,7 @@ i32.gt_u if i32.const 0 - i32.const 104 + i32.const 128 i32.const 25 i32.const 43 call $~lib/env/abort @@ -536,7 +545,7 @@ local.get $1 local.set $2 local.get $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $3 local.get $3 @@ -548,12 +557,20 @@ local.set $2 local.get $2 i32.const 2 - call $~lib/runtime/doRegister + call $~lib/runtime/register end ) - (func $~lib/runtime/ArrayBufferView#constructor (; 8 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/collector/dummy/__ref_link (; 8 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/collector/dummy/__ref_unlink (; 9 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/runtime/ArrayBufferView#constructor (; 10 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $1 global.get $~lib/runtime/MAX_BYTELENGTH local.get $2 @@ -561,8 +578,8 @@ i32.gt_u if i32.const 0 - i32.const 64 - i32.const 348 + i32.const 80 + i32.const 244 i32.const 57 call $~lib/env/abort unreachable @@ -583,12 +600,12 @@ i32.const 12 local.set $4 local.get $4 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $4 local.get $4 i32.const 3 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $0 end @@ -603,7 +620,27 @@ i32.store offset=8 local.get $0 end + local.tee $4 local.get $3 + local.tee $5 + local.get $4 + i32.load + local.tee $6 + i32.ne + if (result i32) + local.get $6 + if + local.get $6 + local.get $4 + call $~lib/collector/dummy/__ref_unlink + end + local.get $5 + local.get $4 + call $~lib/collector/dummy/__ref_link + local.get $5 + else + local.get $5 + end i32.store local.get $0 local.get $3 @@ -613,7 +650,7 @@ i32.store offset=8 local.get $0 ) - (func $~lib/typedarray/Int8Array#constructor (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#constructor (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 if (result i32) @@ -623,12 +660,12 @@ i32.const 12 local.set $2 local.get $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $2 local.get $2 i32.const 4 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.get $1 i32.const 0 @@ -636,22 +673,22 @@ local.set $0 local.get $0 ) - (func $~lib/runtime/ArrayBufferView#get:byteOffset (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/ArrayBufferView#get:byteOffset (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 i32.load i32.sub ) - (func $~lib/runtime/ArrayBufferView#get:byteLength (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/ArrayBufferView#get:byteLength (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=8 ) - (func $~lib/typedarray/Int8Array#get:length (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#get:length (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/runtime/ArrayBufferView#get:byteLength ) - (func $~lib/typedarray/Uint8Array#constructor (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#constructor (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 if (result i32) @@ -661,12 +698,12 @@ i32.const 12 local.set $2 local.get $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $2 local.get $2 i32.const 5 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.get $1 i32.const 0 @@ -674,11 +711,11 @@ local.set $0 local.get $0 ) - (func $~lib/typedarray/Uint8Array#get:length (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#get:length (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/runtime/ArrayBufferView#get:byteLength ) - (func $~lib/typedarray/Uint8ClampedArray#constructor (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#constructor (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 if (result i32) @@ -688,12 +725,12 @@ i32.const 12 local.set $2 local.get $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $2 local.get $2 i32.const 6 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.get $1 i32.const 0 @@ -701,11 +738,11 @@ local.set $0 local.get $0 ) - (func $~lib/typedarray/Uint8ClampedArray#get:length (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#get:length (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/runtime/ArrayBufferView#get:byteLength ) - (func $~lib/typedarray/Int16Array#constructor (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#constructor (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 if (result i32) @@ -715,12 +752,12 @@ i32.const 12 local.set $2 local.get $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $2 local.get $2 i32.const 7 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.get $1 i32.const 1 @@ -728,13 +765,13 @@ local.set $0 local.get $0 ) - (func $~lib/typedarray/Int16Array#get:length (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#get:length (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/runtime/ArrayBufferView#get:byteLength i32.const 1 i32.shr_u ) - (func $~lib/typedarray/Uint16Array#constructor (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#constructor (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 if (result i32) @@ -744,12 +781,12 @@ i32.const 12 local.set $2 local.get $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $2 local.get $2 i32.const 8 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.get $1 i32.const 1 @@ -757,13 +794,13 @@ local.set $0 local.get $0 ) - (func $~lib/typedarray/Uint16Array#get:length (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#get:length (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/runtime/ArrayBufferView#get:byteLength i32.const 1 i32.shr_u ) - (func $~lib/typedarray/Int32Array#constructor (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#constructor (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 if (result i32) @@ -773,12 +810,12 @@ i32.const 12 local.set $2 local.get $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $2 local.get $2 i32.const 9 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.get $1 i32.const 2 @@ -786,13 +823,13 @@ local.set $0 local.get $0 ) - (func $~lib/typedarray/Int32Array#get:length (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int32Array#get:length (; 24 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/runtime/ArrayBufferView#get:byteLength i32.const 2 i32.shr_u ) - (func $~lib/typedarray/Uint32Array#constructor (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#constructor (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 if (result i32) @@ -802,12 +839,12 @@ i32.const 12 local.set $2 local.get $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $2 local.get $2 i32.const 10 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.get $1 i32.const 2 @@ -815,13 +852,13 @@ local.set $0 local.get $0 ) - (func $~lib/typedarray/Uint32Array#get:length (; 24 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint32Array#get:length (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/runtime/ArrayBufferView#get:byteLength i32.const 2 i32.shr_u ) - (func $~lib/typedarray/Int64Array#constructor (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#constructor (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 if (result i32) @@ -831,12 +868,12 @@ i32.const 12 local.set $2 local.get $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $2 local.get $2 i32.const 11 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.get $1 i32.const 3 @@ -844,13 +881,13 @@ local.set $0 local.get $0 ) - (func $~lib/typedarray/Int64Array#get:length (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int64Array#get:length (; 28 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/runtime/ArrayBufferView#get:byteLength i32.const 3 i32.shr_u ) - (func $~lib/typedarray/Uint64Array#constructor (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#constructor (; 29 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 if (result i32) @@ -860,12 +897,12 @@ i32.const 12 local.set $2 local.get $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $2 local.get $2 i32.const 12 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.get $1 i32.const 3 @@ -873,13 +910,13 @@ local.set $0 local.get $0 ) - (func $~lib/typedarray/Uint64Array#get:length (; 28 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint64Array#get:length (; 30 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/runtime/ArrayBufferView#get:byteLength i32.const 3 i32.shr_u ) - (func $~lib/typedarray/Float32Array#constructor (; 29 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#constructor (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 if (result i32) @@ -889,12 +926,12 @@ i32.const 12 local.set $2 local.get $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $2 local.get $2 i32.const 13 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.get $1 i32.const 2 @@ -902,13 +939,13 @@ local.set $0 local.get $0 ) - (func $~lib/typedarray/Float32Array#get:length (; 30 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float32Array#get:length (; 32 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/runtime/ArrayBufferView#get:byteLength i32.const 2 i32.shr_u ) - (func $~lib/typedarray/Float64Array#constructor (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#constructor (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 if (result i32) @@ -918,12 +955,12 @@ i32.const 12 local.set $2 local.get $2 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $2 local.get $2 i32.const 14 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.get $1 i32.const 3 @@ -931,13 +968,13 @@ local.set $0 local.get $0 ) - (func $~lib/typedarray/Float64Array#get:length (; 32 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float64Array#get:length (; 34 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/runtime/ArrayBufferView#get:byteLength i32.const 3 i32.shr_u ) - (func $std/typedarray/testInstantiate (; 33 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $std/typedarray/testInstantiate (; 35 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -960,8 +997,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 34 + i32.const 24 + i32.const 35 i32.const 2 call $~lib/env/abort unreachable @@ -975,8 +1012,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 35 + i32.const 24 + i32.const 36 i32.const 2 call $~lib/env/abort unreachable @@ -988,8 +1025,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 36 + i32.const 24 + i32.const 37 i32.const 2 call $~lib/env/abort unreachable @@ -1005,8 +1042,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 39 + i32.const 24 + i32.const 40 i32.const 2 call $~lib/env/abort unreachable @@ -1020,8 +1057,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 40 + i32.const 24 + i32.const 41 i32.const 2 call $~lib/env/abort unreachable @@ -1033,8 +1070,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 41 + i32.const 24 + i32.const 42 i32.const 2 call $~lib/env/abort unreachable @@ -1050,8 +1087,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 44 + i32.const 24 + i32.const 45 i32.const 2 call $~lib/env/abort unreachable @@ -1065,8 +1102,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 45 + i32.const 24 + i32.const 46 i32.const 2 call $~lib/env/abort unreachable @@ -1078,8 +1115,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 46 + i32.const 24 + i32.const 47 i32.const 2 call $~lib/env/abort unreachable @@ -1095,8 +1132,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 49 + i32.const 24 + i32.const 50 i32.const 2 call $~lib/env/abort unreachable @@ -1110,8 +1147,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 50 + i32.const 24 + i32.const 51 i32.const 2 call $~lib/env/abort unreachable @@ -1123,8 +1160,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 51 + i32.const 24 + i32.const 52 i32.const 2 call $~lib/env/abort unreachable @@ -1140,8 +1177,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 54 + i32.const 24 + i32.const 55 i32.const 2 call $~lib/env/abort unreachable @@ -1155,8 +1192,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 55 + i32.const 24 + i32.const 56 i32.const 2 call $~lib/env/abort unreachable @@ -1168,8 +1205,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 56 + i32.const 24 + i32.const 57 i32.const 2 call $~lib/env/abort unreachable @@ -1185,8 +1222,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 59 + i32.const 24 + i32.const 60 i32.const 2 call $~lib/env/abort unreachable @@ -1200,8 +1237,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 60 + i32.const 24 + i32.const 61 i32.const 2 call $~lib/env/abort unreachable @@ -1213,8 +1250,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 61 + i32.const 24 + i32.const 62 i32.const 2 call $~lib/env/abort unreachable @@ -1230,8 +1267,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 64 + i32.const 24 + i32.const 65 i32.const 2 call $~lib/env/abort unreachable @@ -1245,8 +1282,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 65 + i32.const 24 + i32.const 66 i32.const 2 call $~lib/env/abort unreachable @@ -1258,8 +1295,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 66 + i32.const 24 + i32.const 67 i32.const 2 call $~lib/env/abort unreachable @@ -1275,8 +1312,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 69 + i32.const 24 + i32.const 70 i32.const 2 call $~lib/env/abort unreachable @@ -1290,8 +1327,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 70 + i32.const 24 + i32.const 71 i32.const 2 call $~lib/env/abort unreachable @@ -1303,8 +1340,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 71 + i32.const 24 + i32.const 72 i32.const 2 call $~lib/env/abort unreachable @@ -1320,8 +1357,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 74 + i32.const 24 + i32.const 75 i32.const 2 call $~lib/env/abort unreachable @@ -1335,8 +1372,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 75 + i32.const 24 + i32.const 76 i32.const 2 call $~lib/env/abort unreachable @@ -1348,8 +1385,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 76 + i32.const 24 + i32.const 77 i32.const 2 call $~lib/env/abort unreachable @@ -1365,8 +1402,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 79 + i32.const 24 + i32.const 80 i32.const 2 call $~lib/env/abort unreachable @@ -1380,8 +1417,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 80 + i32.const 24 + i32.const 81 i32.const 2 call $~lib/env/abort unreachable @@ -1393,8 +1430,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 81 + i32.const 24 + i32.const 82 i32.const 2 call $~lib/env/abort unreachable @@ -1410,8 +1447,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 84 + i32.const 24 + i32.const 85 i32.const 2 call $~lib/env/abort unreachable @@ -1425,8 +1462,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 85 + i32.const 24 + i32.const 86 i32.const 2 call $~lib/env/abort unreachable @@ -1438,14 +1475,14 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 86 + i32.const 24 + i32.const 87 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Int32Array#__set (; 34 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int32Array#__set (; 36 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -1454,7 +1491,7 @@ i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 442 i32.const 63 call $~lib/env/abort @@ -1469,7 +1506,7 @@ local.get $2 i32.store ) - (func $~lib/typedarray/Int32Array#__get (; 35 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#__get (; 37 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -1478,7 +1515,7 @@ i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 436 i32.const 63 call $~lib/env/abort @@ -1492,7 +1529,7 @@ i32.add i32.load ) - (func $~lib/typedarray/Int32Array#subarray (; 36 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#subarray (; 38 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1500,6 +1537,9 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) local.get $0 local.set $5 local.get $1 @@ -1573,12 +1613,12 @@ i32.const 12 local.set $8 local.get $8 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $7 local.get $7 i32.const 9 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $7 local.get $5 @@ -1588,7 +1628,27 @@ i32.load offset=4 local.set $9 local.get $7 + local.tee $10 local.get $8 + local.tee $11 + local.get $10 + i32.load + local.tee $12 + i32.ne + if (result i32) + local.get $12 + if + local.get $12 + local.get $10 + call $~lib/collector/dummy/__ref_unlink + end + local.get $11 + local.get $10 + call $~lib/collector/dummy/__ref_link + local.get $11 + else + local.get $11 + end i32.store local.get $7 local.get $9 @@ -1606,7 +1666,7 @@ i32.store offset=8 local.get $7 ) - (func $~lib/typedarray/Float64Array#__set (; 37 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) + (func $~lib/typedarray/Float64Array#__set (; 39 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) local.get $1 local.get $0 i32.load offset=8 @@ -1615,7 +1675,7 @@ i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 852 i32.const 63 call $~lib/env/abort @@ -1630,7 +1690,7 @@ local.get $2 f64.store ) - (func $~lib/typedarray/Float64Array#subarray (; 38 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float64Array#subarray (; 40 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1638,6 +1698,9 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) local.get $0 local.set $5 local.get $1 @@ -1711,12 +1774,12 @@ i32.const 12 local.set $8 local.get $8 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $7 local.get $7 i32.const 14 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $7 local.get $5 @@ -1726,7 +1789,27 @@ i32.load offset=4 local.set $9 local.get $7 + local.tee $10 local.get $8 + local.tee $11 + local.get $10 + i32.load + local.tee $12 + i32.ne + if (result i32) + local.get $12 + if + local.get $12 + local.get $10 + call $~lib/collector/dummy/__ref_unlink + end + local.get $11 + local.get $10 + call $~lib/collector/dummy/__ref_link + local.get $11 + else + local.get $11 + end i32.store local.get $7 local.get $9 @@ -1744,7 +1827,7 @@ i32.store offset=8 local.get $7 ) - (func $~lib/util/sort/insertionSort (; 39 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort (; 41 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 f64) (local $5 i32) @@ -1840,12 +1923,12 @@ unreachable end ) - (func $~lib/memory/memory.free (; 40 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/memory/memory.free (; 42 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 local.set $1 ) - (func $~lib/util/sort/weakHeapSort (; 41 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/weakHeapSort (; 43 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2145,7 +2228,7 @@ local.get $10 f64.store ) - (func $~lib/typedarray/Float64Array#sort (; 42 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#sort (; 44 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2229,7 +2312,7 @@ local.get $3 end ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 43 ;) (type $FUNCSIG$idd) (param $0 f64) (param $1 f64) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 45 ;) (type $FUNCSIG$idd) (param $0 f64) (param $1 f64) (result i32) (local $2 i64) (local $3 i64) local.get $0 @@ -2262,7 +2345,7 @@ i64.lt_s i32.sub ) - (func $~lib/typedarray/Float64Array#sort|trampoline (; 44 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#sort|trampoline (; 46 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -2281,7 +2364,7 @@ local.get $1 call $~lib/typedarray/Float64Array#sort ) - (func $~lib/typedarray/Float64Array#__get (; 45 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/typedarray/Float64Array#__get (; 47 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) local.get $1 local.get $0 i32.load offset=8 @@ -2290,7 +2373,7 @@ i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 846 i32.const 63 call $~lib/env/abort @@ -2304,14 +2387,14 @@ i32.add f64.load ) - (func $~lib/typedarray/Uint8ClampedArray#__set (; 46 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint8ClampedArray#__set (; 48 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 196 i32.const 44 call $~lib/env/abort @@ -2336,14 +2419,14 @@ i32.and i32.store8 ) - (func $~lib/typedarray/Uint8ClampedArray#__get (; 47 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#__get (; 49 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 190 i32.const 44 call $~lib/env/abort @@ -2355,14 +2438,14 @@ i32.add i32.load8_u ) - (func $~lib/typedarray/Int8Array#__set (; 48 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int8Array#__set (; 50 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 32 i32.const 44 call $~lib/env/abort @@ -2375,7 +2458,7 @@ local.get $2 i32.store8 ) - (func $~lib/typedarray/Int8Array#fill (; 49 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/typedarray/Int8Array#fill (; 51 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -2463,7 +2546,7 @@ end local.get $7 ) - (func $~lib/util/memory/memcpy (; 50 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (; 52 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3664,7 +3747,7 @@ i32.store8 end ) - (func $~lib/memory/memory.copy (; 51 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 53 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3895,14 +3978,17 @@ end end ) - (func $~lib/runtime/doMakeArray (; 52 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/runtime/makeArray (; 54 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) i32.const 16 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate local.get $2 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.set $4 local.get $0 local.get $3 @@ -3911,12 +3997,32 @@ local.get $0 local.get $3 i32.shl - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate i32.const 2 - call $~lib/runtime/doRegister + call $~lib/runtime/register local.set $6 local.get $4 + local.tee $7 local.get $6 + local.tee $8 + local.get $7 + i32.load + local.tee $9 + i32.ne + if (result i32) + local.get $9 + if + local.get $9 + local.get $7 + call $~lib/collector/dummy/__ref_unlink + end + local.get $8 + local.get $7 + call $~lib/collector/dummy/__ref_link + local.get $8 + else + local.get $8 + end i32.store local.get $4 local.get $6 @@ -3936,18 +4042,18 @@ end local.get $4 ) - (func $~lib/array/Array#get:length (; 53 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 55 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/typedarray/Int8Array#__get (; 54 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#__get (; 56 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 26 i32.const 44 call $~lib/env/abort @@ -3959,21 +4065,7 @@ i32.add i32.load8_s ) - (func $~lib/array/Array#__get (; 55 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 0 - i32.shr_u - i32.ge_u - if - i32.const 0 - i32.const 216 - i32.const 100 - i32.const 61 - call $~lib/env/abort - unreachable - end + (func $~lib/array/Array#__unchecked_get (; 57 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -3982,7 +4074,26 @@ i32.add i32.load8_s ) - (func $std/typedarray/isInt8ArrayEqual (; 56 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 58 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 0 + i32.shr_u + i32.ge_u + if + i32.const 0 + i32.const 264 + i32.const 98 + i32.const 61 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + ) + (func $std/typedarray/isInt8ArrayEqual (; 59 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -4030,7 +4141,7 @@ end i32.const 1 ) - (func $~lib/typedarray/Int8Array#subarray (; 57 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#subarray (; 60 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4038,6 +4149,9 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) local.get $0 local.set $5 local.get $1 @@ -4111,12 +4225,12 @@ i32.const 12 local.set $8 local.get $8 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $7 local.get $7 i32.const 4 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $7 local.get $5 @@ -4126,7 +4240,27 @@ i32.load offset=4 local.set $9 local.get $7 + local.tee $10 local.get $8 + local.tee $11 + local.get $10 + i32.load + local.tee $12 + i32.ne + if (result i32) + local.get $12 + if + local.get $12 + local.get $10 + call $~lib/collector/dummy/__ref_unlink + end + local.get $11 + local.get $10 + call $~lib/collector/dummy/__ref_link + local.get $11 + else + local.get $11 + end i32.store local.get $7 local.get $9 @@ -4144,7 +4278,7 @@ i32.store offset=8 local.get $7 ) - (func $~lib/typedarray/Int32Array#fill (; 58 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/typedarray/Int32Array#fill (; 61 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -4242,25 +4376,11 @@ end local.get $7 ) - (func $~lib/array/Array#get:length (; 59 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 62 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__get (; 60 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 0 - i32.const 216 - i32.const 100 - i32.const 61 - call $~lib/env/abort - unreachable - end + (func $~lib/array/Array#__unchecked_get (; 63 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -4269,7 +4389,26 @@ i32.add i32.load ) - (func $std/typedarray/isInt32ArrayEqual (; 61 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 64 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 0 + i32.const 264 + i32.const 98 + i32.const 61 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + ) + (func $std/typedarray/isInt32ArrayEqual (; 65 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -4317,12 +4456,12 @@ end i32.const 1 ) - (func $std/typedarray/testReduce~anonymous|0 (; 62 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce~anonymous|0 (; 66 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $~lib/typedarray/Int8Array#reduce (; 63 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#reduce (; 67 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4379,7 +4518,7 @@ end local.get $3 ) - (func $std/typedarray/testReduce (; 64 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce (; 68 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -4413,21 +4552,21 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 252 + i32.const 24 + i32.const 253 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Uint8Array#__set (; 65 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint8Array#__set (; 69 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 114 i32.const 44 call $~lib/env/abort @@ -4440,12 +4579,12 @@ local.get $2 i32.store8 ) - (func $std/typedarray/testReduce~anonymous|0 (; 66 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce~anonymous|0 (; 70 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $~lib/typedarray/Uint8Array#reduce (; 67 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reduce (; 71 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4502,7 +4641,7 @@ end local.get $3 ) - (func $std/typedarray/testReduce (; 68 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce (; 72 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -4534,19 +4673,19 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 252 + i32.const 24 + i32.const 253 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testReduce~anonymous|0 (; 69 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce~anonymous|0 (; 73 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $~lib/typedarray/Uint8ClampedArray#reduce (; 70 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#reduce (; 74 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4603,7 +4742,7 @@ end local.get $3 ) - (func $std/typedarray/testReduce (; 71 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce (; 75 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -4635,14 +4774,14 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 252 + i32.const 24 + i32.const 253 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Int16Array#__set (; 72 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int16Array#__set (; 76 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -4651,7 +4790,7 @@ i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 278 i32.const 63 call $~lib/env/abort @@ -4666,12 +4805,12 @@ local.get $2 i32.store16 ) - (func $std/typedarray/testReduce~anonymous|0 (; 73 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce~anonymous|0 (; 77 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $~lib/typedarray/Int16Array#reduce (; 74 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#reduce (; 78 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4728,7 +4867,7 @@ end local.get $3 ) - (func $std/typedarray/testReduce (; 75 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce (; 79 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -4762,14 +4901,14 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 252 + i32.const 24 + i32.const 253 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Uint16Array#__set (; 76 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint16Array#__set (; 80 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -4778,7 +4917,7 @@ i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 360 i32.const 63 call $~lib/env/abort @@ -4793,12 +4932,12 @@ local.get $2 i32.store16 ) - (func $std/typedarray/testReduce~anonymous|0 (; 77 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce~anonymous|0 (; 81 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $~lib/typedarray/Uint16Array#reduce (; 78 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array#reduce (; 82 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4855,7 +4994,7 @@ end local.get $3 ) - (func $std/typedarray/testReduce (; 79 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce (; 83 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -4887,19 +5026,19 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 252 + i32.const 24 + i32.const 253 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testReduce~anonymous|0 (; 80 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce~anonymous|0 (; 84 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $~lib/typedarray/Int32Array#reduce (; 81 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#reduce (; 85 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4956,7 +5095,7 @@ end local.get $3 ) - (func $std/typedarray/testReduce (; 82 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce (; 86 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -4986,14 +5125,14 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 252 + i32.const 24 + i32.const 253 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Uint32Array#__set (; 83 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint32Array#__set (; 87 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -5002,7 +5141,7 @@ i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 524 i32.const 63 call $~lib/env/abort @@ -5017,12 +5156,12 @@ local.get $2 i32.store ) - (func $std/typedarray/testReduce~anonymous|0 (; 84 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce~anonymous|0 (; 88 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $~lib/typedarray/Uint32Array#reduce (; 85 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array#reduce (; 89 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5079,7 +5218,7 @@ end local.get $3 ) - (func $std/typedarray/testReduce (; 86 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce (; 90 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -5109,14 +5248,14 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 252 + i32.const 24 + i32.const 253 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Int64Array#__set (; 87 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/typedarray/Int64Array#__set (; 91 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 local.get $0 i32.load offset=8 @@ -5125,7 +5264,7 @@ i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 606 i32.const 63 call $~lib/env/abort @@ -5140,12 +5279,12 @@ local.get $2 i64.store ) - (func $std/typedarray/testReduce~anonymous|0 (; 88 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (func $std/typedarray/testReduce~anonymous|0 (; 92 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) local.get $0 local.get $1 i64.add ) - (func $~lib/typedarray/Int64Array#reduce (; 89 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) + (func $~lib/typedarray/Int64Array#reduce (; 93 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) (local $3 i32) (local $4 i32) (local $5 i64) @@ -5202,7 +5341,7 @@ end local.get $5 ) - (func $std/typedarray/testReduce (; 90 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce (; 94 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i64) i32.const 0 @@ -5232,14 +5371,14 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 252 + i32.const 24 + i32.const 253 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Uint64Array#__set (; 91 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/typedarray/Uint64Array#__set (; 95 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 local.get $0 i32.load offset=8 @@ -5248,7 +5387,7 @@ i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 688 i32.const 63 call $~lib/env/abort @@ -5263,12 +5402,12 @@ local.get $2 i64.store ) - (func $std/typedarray/testReduce~anonymous|0 (; 92 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (func $std/typedarray/testReduce~anonymous|0 (; 96 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) local.get $0 local.get $1 i64.add ) - (func $~lib/typedarray/Uint64Array#reduce (; 93 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) + (func $~lib/typedarray/Uint64Array#reduce (; 97 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) (local $3 i32) (local $4 i32) (local $5 i64) @@ -5325,7 +5464,7 @@ end local.get $5 ) - (func $std/typedarray/testReduce (; 94 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce (; 98 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i64) i32.const 0 @@ -5355,14 +5494,14 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 252 + i32.const 24 + i32.const 253 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Float32Array#__set (; 95 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) + (func $~lib/typedarray/Float32Array#__set (; 99 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) local.get $1 local.get $0 i32.load offset=8 @@ -5371,7 +5510,7 @@ i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 770 i32.const 63 call $~lib/env/abort @@ -5386,12 +5525,12 @@ local.get $2 f32.store ) - (func $std/typedarray/testReduce~anonymous|0 (; 96 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) + (func $std/typedarray/testReduce~anonymous|0 (; 100 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) local.get $0 local.get $1 f32.add ) - (func $~lib/typedarray/Float32Array#reduce (; 97 ;) (type $FUNCSIG$fiif) (param $0 i32) (param $1 i32) (param $2 f32) (result f32) + (func $~lib/typedarray/Float32Array#reduce (; 101 ;) (type $FUNCSIG$fiif) (param $0 i32) (param $1 i32) (param $2 f32) (result f32) (local $3 i32) (local $4 i32) (local $5 f32) @@ -5448,7 +5587,7 @@ end local.get $5 ) - (func $std/typedarray/testReduce (; 98 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce (; 102 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 f32) i32.const 0 @@ -5478,19 +5617,19 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 252 + i32.const 24 + i32.const 253 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testReduce~anonymous|0 (; 99 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) + (func $std/typedarray/testReduce~anonymous|0 (; 103 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) local.get $0 local.get $1 f64.add ) - (func $~lib/typedarray/Float64Array#reduce (; 100 ;) (type $FUNCSIG$diid) (param $0 i32) (param $1 i32) (param $2 f64) (result f64) + (func $~lib/typedarray/Float64Array#reduce (; 104 ;) (type $FUNCSIG$diid) (param $0 i32) (param $1 i32) (param $2 f64) (result f64) (local $3 i32) (local $4 i32) (local $5 f64) @@ -5547,7 +5686,7 @@ end local.get $5 ) - (func $std/typedarray/testReduce (; 101 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce (; 105 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 f64) i32.const 0 @@ -5577,19 +5716,19 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 252 + i32.const 24 + i32.const 253 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testReduceRight~anonymous|0 (; 102 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight~anonymous|0 (; 106 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $~lib/typedarray/Int8Array#reduceRight (; 103 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#reduceRight (; 107 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5643,7 +5782,7 @@ end local.get $3 ) - (func $std/typedarray/testReduceRight (; 104 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight (; 108 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -5677,19 +5816,19 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 279 + i32.const 24 + i32.const 280 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testReduceRight~anonymous|0 (; 105 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight~anonymous|0 (; 109 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $~lib/typedarray/Uint8Array#reduceRight (; 106 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reduceRight (; 110 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5743,7 +5882,7 @@ end local.get $3 ) - (func $std/typedarray/testReduceRight (; 107 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight (; 111 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -5775,19 +5914,19 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 279 + i32.const 24 + i32.const 280 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testReduceRight~anonymous|0 (; 108 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight~anonymous|0 (; 112 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $~lib/typedarray/Uint8ClampedArray#reduceRight (; 109 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#reduceRight (; 113 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5841,7 +5980,7 @@ end local.get $3 ) - (func $std/typedarray/testReduceRight (; 110 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight (; 114 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -5873,19 +6012,19 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 279 + i32.const 24 + i32.const 280 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testReduceRight~anonymous|0 (; 111 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight~anonymous|0 (; 115 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $~lib/typedarray/Int16Array#reduceRight (; 112 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#reduceRight (; 116 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5939,7 +6078,7 @@ end local.get $3 ) - (func $std/typedarray/testReduceRight (; 113 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight (; 117 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -5973,19 +6112,19 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 279 + i32.const 24 + i32.const 280 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testReduceRight~anonymous|0 (; 114 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight~anonymous|0 (; 118 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $~lib/typedarray/Uint16Array#reduceRight (; 115 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array#reduceRight (; 119 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6039,7 +6178,7 @@ end local.get $3 ) - (func $std/typedarray/testReduceRight (; 116 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight (; 120 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -6071,19 +6210,19 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 279 + i32.const 24 + i32.const 280 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testReduceRight~anonymous|0 (; 117 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight~anonymous|0 (; 121 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $~lib/typedarray/Int32Array#reduceRight (; 118 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#reduceRight (; 122 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6137,7 +6276,7 @@ end local.get $3 ) - (func $std/typedarray/testReduceRight (; 119 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight (; 123 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -6167,19 +6306,19 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 279 + i32.const 24 + i32.const 280 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testReduceRight~anonymous|0 (; 120 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight~anonymous|0 (; 124 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $~lib/typedarray/Uint32Array#reduceRight (; 121 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array#reduceRight (; 125 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6233,7 +6372,7 @@ end local.get $3 ) - (func $std/typedarray/testReduceRight (; 122 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight (; 126 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -6263,19 +6402,19 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 279 + i32.const 24 + i32.const 280 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testReduceRight~anonymous|0 (; 123 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (func $std/typedarray/testReduceRight~anonymous|0 (; 127 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) local.get $0 local.get $1 i64.add ) - (func $~lib/typedarray/Int64Array#reduceRight (; 124 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) + (func $~lib/typedarray/Int64Array#reduceRight (; 128 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) (local $3 i32) (local $4 i32) (local $5 i64) @@ -6329,7 +6468,7 @@ end local.get $5 ) - (func $std/typedarray/testReduceRight (; 125 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight (; 129 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i64) i32.const 0 @@ -6359,19 +6498,19 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 279 + i32.const 24 + i32.const 280 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testReduceRight~anonymous|0 (; 126 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (func $std/typedarray/testReduceRight~anonymous|0 (; 130 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) local.get $0 local.get $1 i64.add ) - (func $~lib/typedarray/Uint64Array#reduceRight (; 127 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) + (func $~lib/typedarray/Uint64Array#reduceRight (; 131 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) (local $3 i32) (local $4 i32) (local $5 i64) @@ -6425,7 +6564,7 @@ end local.get $5 ) - (func $std/typedarray/testReduceRight (; 128 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight (; 132 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i64) i32.const 0 @@ -6455,19 +6594,19 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 279 + i32.const 24 + i32.const 280 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testReduceRight~anonymous|0 (; 129 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) + (func $std/typedarray/testReduceRight~anonymous|0 (; 133 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) local.get $0 local.get $1 f32.add ) - (func $~lib/typedarray/Float32Array#reduceRight (; 130 ;) (type $FUNCSIG$fiif) (param $0 i32) (param $1 i32) (param $2 f32) (result f32) + (func $~lib/typedarray/Float32Array#reduceRight (; 134 ;) (type $FUNCSIG$fiif) (param $0 i32) (param $1 i32) (param $2 f32) (result f32) (local $3 i32) (local $4 i32) (local $5 f32) @@ -6521,7 +6660,7 @@ end local.get $5 ) - (func $std/typedarray/testReduceRight (; 131 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight (; 135 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 f32) i32.const 0 @@ -6551,19 +6690,19 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 279 + i32.const 24 + i32.const 280 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testReduceRight~anonymous|0 (; 132 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) + (func $std/typedarray/testReduceRight~anonymous|0 (; 136 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) local.get $0 local.get $1 f64.add ) - (func $~lib/typedarray/Float64Array#reduceRight (; 133 ;) (type $FUNCSIG$diid) (param $0 i32) (param $1 i32) (param $2 f64) (result f64) + (func $~lib/typedarray/Float64Array#reduceRight (; 137 ;) (type $FUNCSIG$diid) (param $0 i32) (param $1 i32) (param $2 f64) (result f64) (local $3 i32) (local $4 i32) (local $5 f64) @@ -6617,7 +6756,7 @@ end local.get $5 ) - (func $std/typedarray/testReduceRight (; 134 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight (; 138 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 f64) i32.const 0 @@ -6647,19 +6786,19 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 279 + i32.const 24 + i32.const 280 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayMap~anonymous|0 (; 135 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap~anonymous|0 (; 139 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $0 i32.mul ) - (func $~lib/typedarray/Int8Array#map (; 136 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#map (; 140 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6724,7 +6863,7 @@ end local.get $6 ) - (func $std/typedarray/testArrayMap (; 137 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap (; 141 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -6755,8 +6894,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 306 + i32.const 24 + i32.const 307 i32.const 2 call $~lib/env/abort unreachable @@ -6769,8 +6908,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 307 + i32.const 24 + i32.const 308 i32.const 2 call $~lib/env/abort unreachable @@ -6783,19 +6922,19 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 308 + i32.const 24 + i32.const 309 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayMap~anonymous|0 (; 138 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap~anonymous|0 (; 142 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $0 i32.mul ) - (func $~lib/typedarray/Uint8Array#map (; 139 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#map (; 143 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6860,14 +6999,14 @@ end local.get $6 ) - (func $~lib/typedarray/Uint8Array#__get (; 140 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#__get (; 144 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 108 i32.const 44 call $~lib/env/abort @@ -6879,7 +7018,7 @@ i32.add i32.load8_u ) - (func $std/typedarray/testArrayMap (; 141 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap (; 145 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -6910,8 +7049,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 306 + i32.const 24 + i32.const 307 i32.const 2 call $~lib/env/abort unreachable @@ -6924,8 +7063,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 307 + i32.const 24 + i32.const 308 i32.const 2 call $~lib/env/abort unreachable @@ -6938,19 +7077,19 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 308 + i32.const 24 + i32.const 309 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayMap~anonymous|0 (; 142 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap~anonymous|0 (; 146 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $0 i32.mul ) - (func $~lib/typedarray/Uint8ClampedArray#map (; 143 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#map (; 147 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7015,7 +7154,7 @@ end local.get $6 ) - (func $std/typedarray/testArrayMap (; 144 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap (; 148 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -7046,8 +7185,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 306 + i32.const 24 + i32.const 307 i32.const 2 call $~lib/env/abort unreachable @@ -7060,8 +7199,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 307 + i32.const 24 + i32.const 308 i32.const 2 call $~lib/env/abort unreachable @@ -7074,19 +7213,19 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 308 + i32.const 24 + i32.const 309 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayMap~anonymous|0 (; 145 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap~anonymous|0 (; 149 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $0 i32.mul ) - (func $~lib/typedarray/Int16Array#map (; 146 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#map (; 150 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7151,7 +7290,7 @@ end local.get $6 ) - (func $~lib/typedarray/Int16Array#__get (; 147 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#__get (; 151 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -7160,7 +7299,7 @@ i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 272 i32.const 63 call $~lib/env/abort @@ -7174,7 +7313,7 @@ i32.add i32.load16_s ) - (func $std/typedarray/testArrayMap (; 148 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap (; 152 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -7205,8 +7344,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 306 + i32.const 24 + i32.const 307 i32.const 2 call $~lib/env/abort unreachable @@ -7219,8 +7358,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 307 + i32.const 24 + i32.const 308 i32.const 2 call $~lib/env/abort unreachable @@ -7233,19 +7372,19 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 308 + i32.const 24 + i32.const 309 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayMap~anonymous|0 (; 149 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap~anonymous|0 (; 153 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $0 i32.mul ) - (func $~lib/typedarray/Uint16Array#map (; 150 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#map (; 154 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7310,7 +7449,7 @@ end local.get $6 ) - (func $~lib/typedarray/Uint16Array#__get (; 151 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#__get (; 155 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -7319,7 +7458,7 @@ i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 354 i32.const 63 call $~lib/env/abort @@ -7333,7 +7472,7 @@ i32.add i32.load16_u ) - (func $std/typedarray/testArrayMap (; 152 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap (; 156 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -7364,8 +7503,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 306 + i32.const 24 + i32.const 307 i32.const 2 call $~lib/env/abort unreachable @@ -7378,8 +7517,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 307 + i32.const 24 + i32.const 308 i32.const 2 call $~lib/env/abort unreachable @@ -7392,19 +7531,19 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 308 + i32.const 24 + i32.const 309 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayMap~anonymous|0 (; 153 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap~anonymous|0 (; 157 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $0 i32.mul ) - (func $~lib/typedarray/Int32Array#map (; 154 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#map (; 158 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7469,7 +7608,7 @@ end local.get $6 ) - (func $std/typedarray/testArrayMap (; 155 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap (; 159 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -7500,8 +7639,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 306 + i32.const 24 + i32.const 307 i32.const 2 call $~lib/env/abort unreachable @@ -7514,8 +7653,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 307 + i32.const 24 + i32.const 308 i32.const 2 call $~lib/env/abort unreachable @@ -7528,19 +7667,19 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 308 + i32.const 24 + i32.const 309 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayMap~anonymous|0 (; 156 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap~anonymous|0 (; 160 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $0 i32.mul ) - (func $~lib/typedarray/Uint32Array#map (; 157 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#map (; 161 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7605,7 +7744,7 @@ end local.get $6 ) - (func $~lib/typedarray/Uint32Array#__get (; 158 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#__get (; 162 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -7614,7 +7753,7 @@ i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 518 i32.const 63 call $~lib/env/abort @@ -7628,7 +7767,7 @@ i32.add i32.load ) - (func $std/typedarray/testArrayMap (; 159 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap (; 163 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -7659,8 +7798,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 306 + i32.const 24 + i32.const 307 i32.const 2 call $~lib/env/abort unreachable @@ -7673,8 +7812,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 307 + i32.const 24 + i32.const 308 i32.const 2 call $~lib/env/abort unreachable @@ -7687,19 +7826,19 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 308 + i32.const 24 + i32.const 309 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayMap~anonymous|0 (; 160 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) + (func $std/typedarray/testArrayMap~anonymous|0 (; 164 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) local.get $0 local.get $0 i64.mul ) - (func $~lib/typedarray/Int64Array#map (; 161 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#map (; 165 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7764,7 +7903,7 @@ end local.get $6 ) - (func $~lib/typedarray/Int64Array#__get (; 162 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/typedarray/Int64Array#__get (; 166 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 i32.load offset=8 @@ -7773,7 +7912,7 @@ i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 600 i32.const 63 call $~lib/env/abort @@ -7787,7 +7926,7 @@ i32.add i64.load ) - (func $std/typedarray/testArrayMap (; 163 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap (; 167 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -7818,8 +7957,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 306 + i32.const 24 + i32.const 307 i32.const 2 call $~lib/env/abort unreachable @@ -7832,8 +7971,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 307 + i32.const 24 + i32.const 308 i32.const 2 call $~lib/env/abort unreachable @@ -7846,19 +7985,19 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 308 + i32.const 24 + i32.const 309 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayMap~anonymous|0 (; 164 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) + (func $std/typedarray/testArrayMap~anonymous|0 (; 168 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) local.get $0 local.get $0 i64.mul ) - (func $~lib/typedarray/Uint64Array#map (; 165 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#map (; 169 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7923,7 +8062,7 @@ end local.get $6 ) - (func $~lib/typedarray/Uint64Array#__get (; 166 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/typedarray/Uint64Array#__get (; 170 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 i32.load offset=8 @@ -7932,7 +8071,7 @@ i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 682 i32.const 63 call $~lib/env/abort @@ -7946,7 +8085,7 @@ i32.add i64.load ) - (func $std/typedarray/testArrayMap (; 167 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap (; 171 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -7977,8 +8116,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 306 + i32.const 24 + i32.const 307 i32.const 2 call $~lib/env/abort unreachable @@ -7991,8 +8130,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 307 + i32.const 24 + i32.const 308 i32.const 2 call $~lib/env/abort unreachable @@ -8005,19 +8144,19 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 308 + i32.const 24 + i32.const 309 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayMap~anonymous|0 (; 168 ;) (type $FUNCSIG$ffii) (param $0 f32) (param $1 i32) (param $2 i32) (result f32) + (func $std/typedarray/testArrayMap~anonymous|0 (; 172 ;) (type $FUNCSIG$ffii) (param $0 f32) (param $1 i32) (param $2 i32) (result f32) local.get $0 local.get $0 f32.mul ) - (func $~lib/typedarray/Float32Array#map (; 169 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#map (; 173 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8082,7 +8221,7 @@ end local.get $6 ) - (func $~lib/typedarray/Float32Array#__get (; 170 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/typedarray/Float32Array#__get (; 174 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) local.get $1 local.get $0 i32.load offset=8 @@ -8091,7 +8230,7 @@ i32.ge_u if i32.const 0 - i32.const 152 + i32.const 184 i32.const 764 i32.const 63 call $~lib/env/abort @@ -8105,7 +8244,7 @@ i32.add f32.load ) - (func $std/typedarray/testArrayMap (; 171 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap (; 175 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -8136,8 +8275,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 306 + i32.const 24 + i32.const 307 i32.const 2 call $~lib/env/abort unreachable @@ -8150,8 +8289,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 307 + i32.const 24 + i32.const 308 i32.const 2 call $~lib/env/abort unreachable @@ -8164,19 +8303,19 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 308 + i32.const 24 + i32.const 309 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayMap~anonymous|0 (; 172 ;) (type $FUNCSIG$ddii) (param $0 f64) (param $1 i32) (param $2 i32) (result f64) + (func $std/typedarray/testArrayMap~anonymous|0 (; 176 ;) (type $FUNCSIG$ddii) (param $0 f64) (param $1 i32) (param $2 i32) (result f64) local.get $0 local.get $0 f64.mul ) - (func $~lib/typedarray/Float64Array#map (; 173 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#map (; 177 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8241,7 +8380,7 @@ end local.get $6 ) - (func $std/typedarray/testArrayMap (; 174 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap (; 178 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -8272,8 +8411,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 306 + i32.const 24 + i32.const 307 i32.const 2 call $~lib/env/abort unreachable @@ -8286,8 +8425,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 307 + i32.const 24 + i32.const 308 i32.const 2 call $~lib/env/abort unreachable @@ -8300,14 +8439,14 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 308 + i32.const 24 + i32.const 309 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArraySome~anonymous|0 (; 175 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|0 (; 179 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 24 i32.shl @@ -8316,7 +8455,7 @@ i32.const 2 i32.eq ) - (func $~lib/typedarray/Int8Array#some (; 176 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#some (; 180 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8376,7 +8515,7 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome~anonymous|1 (; 177 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|1 (; 181 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 24 i32.shl @@ -8385,7 +8524,7 @@ i32.const 0 i32.eq ) - (func $std/typedarray/testArraySome (; 178 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome (; 182 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8415,8 +8554,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 335 + i32.const 24 + i32.const 336 i32.const 2 call $~lib/env/abort unreachable @@ -8432,21 +8571,21 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 338 + i32.const 24 + i32.const 339 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArraySome~anonymous|0 (; 179 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|0 (; 183 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and i32.const 2 i32.eq ) - (func $~lib/typedarray/Uint8Array#some (; 180 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#some (; 184 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8506,14 +8645,14 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome~anonymous|1 (; 181 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|1 (; 185 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and i32.const 0 i32.eq ) - (func $std/typedarray/testArraySome (; 182 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome (; 186 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8543,8 +8682,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 335 + i32.const 24 + i32.const 336 i32.const 2 call $~lib/env/abort unreachable @@ -8560,21 +8699,21 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 338 + i32.const 24 + i32.const 339 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArraySome~anonymous|0 (; 183 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|0 (; 187 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and i32.const 2 i32.eq ) - (func $~lib/typedarray/Uint8ClampedArray#some (; 184 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#some (; 188 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8634,14 +8773,14 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome~anonymous|1 (; 185 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|1 (; 189 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and i32.const 0 i32.eq ) - (func $std/typedarray/testArraySome (; 186 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome (; 190 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8671,8 +8810,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 335 + i32.const 24 + i32.const 336 i32.const 2 call $~lib/env/abort unreachable @@ -8688,14 +8827,14 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 338 + i32.const 24 + i32.const 339 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArraySome~anonymous|0 (; 187 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|0 (; 191 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 16 i32.shl @@ -8704,7 +8843,7 @@ i32.const 2 i32.eq ) - (func $~lib/typedarray/Int16Array#some (; 188 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#some (; 192 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8764,7 +8903,7 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome~anonymous|1 (; 189 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|1 (; 193 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 16 i32.shl @@ -8773,7 +8912,7 @@ i32.const 0 i32.eq ) - (func $std/typedarray/testArraySome (; 190 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome (; 194 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8803,8 +8942,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 335 + i32.const 24 + i32.const 336 i32.const 2 call $~lib/env/abort unreachable @@ -8820,21 +8959,21 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 338 + i32.const 24 + i32.const 339 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArraySome~anonymous|0 (; 191 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|0 (; 195 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 65535 i32.and i32.const 2 i32.eq ) - (func $~lib/typedarray/Uint16Array#some (; 192 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#some (; 196 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8894,14 +9033,14 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome~anonymous|1 (; 193 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|1 (; 197 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 65535 i32.and i32.const 0 i32.eq ) - (func $std/typedarray/testArraySome (; 194 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome (; 198 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8931,8 +9070,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 335 + i32.const 24 + i32.const 336 i32.const 2 call $~lib/env/abort unreachable @@ -8948,19 +9087,19 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 338 + i32.const 24 + i32.const 339 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArraySome~anonymous|0 (; 195 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|0 (; 199 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 2 i32.eq ) - (func $~lib/typedarray/Int32Array#some (; 196 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#some (; 200 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9020,12 +9159,12 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome~anonymous|1 (; 197 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|1 (; 201 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 0 i32.eq ) - (func $std/typedarray/testArraySome (; 198 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome (; 202 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9055,8 +9194,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 335 + i32.const 24 + i32.const 336 i32.const 2 call $~lib/env/abort unreachable @@ -9072,19 +9211,19 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 338 + i32.const 24 + i32.const 339 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArraySome~anonymous|0 (; 199 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|0 (; 203 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 2 i32.eq ) - (func $~lib/typedarray/Uint32Array#some (; 200 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#some (; 204 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9144,12 +9283,12 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome~anonymous|1 (; 201 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|1 (; 205 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 0 i32.eq ) - (func $std/typedarray/testArraySome (; 202 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome (; 206 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9179,8 +9318,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 335 + i32.const 24 + i32.const 336 i32.const 2 call $~lib/env/abort unreachable @@ -9196,19 +9335,19 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 338 + i32.const 24 + i32.const 339 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArraySome~anonymous|0 (; 203 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|0 (; 207 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 i64.const 2 i64.eq ) - (func $~lib/typedarray/Int64Array#some (; 204 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#some (; 208 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9268,12 +9407,12 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome~anonymous|1 (; 205 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|1 (; 209 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 i64.const 0 i64.eq ) - (func $std/typedarray/testArraySome (; 206 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome (; 210 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9303,8 +9442,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 335 + i32.const 24 + i32.const 336 i32.const 2 call $~lib/env/abort unreachable @@ -9320,19 +9459,19 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 338 + i32.const 24 + i32.const 339 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArraySome~anonymous|0 (; 207 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|0 (; 211 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 i64.const 2 i64.eq ) - (func $~lib/typedarray/Uint64Array#some (; 208 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#some (; 212 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9392,12 +9531,12 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome~anonymous|1 (; 209 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|1 (; 213 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 i64.const 0 i64.eq ) - (func $std/typedarray/testArraySome (; 210 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome (; 214 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9427,8 +9566,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 335 + i32.const 24 + i32.const 336 i32.const 2 call $~lib/env/abort unreachable @@ -9444,19 +9583,19 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 338 + i32.const 24 + i32.const 339 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArraySome~anonymous|0 (; 211 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|0 (; 215 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $0 f32.const 2 f32.eq ) - (func $~lib/typedarray/Float32Array#some (; 212 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#some (; 216 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9516,12 +9655,12 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome~anonymous|1 (; 213 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|1 (; 217 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $0 f32.const 0 f32.eq ) - (func $std/typedarray/testArraySome (; 214 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome (; 218 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9551,8 +9690,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 335 + i32.const 24 + i32.const 336 i32.const 2 call $~lib/env/abort unreachable @@ -9568,19 +9707,19 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 338 + i32.const 24 + i32.const 339 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArraySome~anonymous|0 (; 215 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|0 (; 219 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $0 f64.const 2 f64.eq ) - (func $~lib/typedarray/Float64Array#some (; 216 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#some (; 220 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9640,12 +9779,12 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome~anonymous|1 (; 217 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|1 (; 221 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $0 f64.const 0 f64.eq ) - (func $std/typedarray/testArraySome (; 218 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome (; 222 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9675,8 +9814,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 335 + i32.const 24 + i32.const 336 i32.const 2 call $~lib/env/abort unreachable @@ -9692,14 +9831,14 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 338 + i32.const 24 + i32.const 339 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 219 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 223 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 24 i32.shl @@ -9708,7 +9847,7 @@ i32.const 2 i32.eq ) - (func $~lib/typedarray/Int8Array#findIndex (; 220 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#findIndex (; 224 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9768,7 +9907,7 @@ i32.const -1 end ) - (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 221 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 225 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 24 i32.shl @@ -9777,7 +9916,7 @@ i32.const 4 i32.eq ) - (func $std/typedarray/testArrayFindIndex (; 222 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex (; 226 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9806,9 +9945,9 @@ i32.eq i32.eqz if - i32.const 568 - i32.const 16 - i32.const 365 + i32.const 728 + i32.const 24 + i32.const 366 i32.const 2 call $~lib/env/abort unreachable @@ -9822,22 +9961,22 @@ i32.eq i32.eqz if - i32.const 608 - i32.const 16 - i32.const 368 + i32.const 776 + i32.const 24 + i32.const 369 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 223 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 227 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and i32.const 2 i32.eq ) - (func $~lib/typedarray/Uint8Array#findIndex (; 224 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#findIndex (; 228 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9897,14 +10036,14 @@ i32.const -1 end ) - (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 225 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 229 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and i32.const 4 i32.eq ) - (func $std/typedarray/testArrayFindIndex (; 226 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex (; 230 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9933,9 +10072,9 @@ i32.eq i32.eqz if - i32.const 568 - i32.const 16 - i32.const 365 + i32.const 728 + i32.const 24 + i32.const 366 i32.const 2 call $~lib/env/abort unreachable @@ -9949,22 +10088,22 @@ i32.eq i32.eqz if - i32.const 608 - i32.const 16 - i32.const 368 + i32.const 776 + i32.const 24 + i32.const 369 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 227 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 231 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and i32.const 2 i32.eq ) - (func $~lib/typedarray/Uint8ClampedArray#findIndex (; 228 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#findIndex (; 232 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10024,14 +10163,14 @@ i32.const -1 end ) - (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 229 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 233 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and i32.const 4 i32.eq ) - (func $std/typedarray/testArrayFindIndex (; 230 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex (; 234 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10060,9 +10199,9 @@ i32.eq i32.eqz if - i32.const 568 - i32.const 16 - i32.const 365 + i32.const 728 + i32.const 24 + i32.const 366 i32.const 2 call $~lib/env/abort unreachable @@ -10076,15 +10215,15 @@ i32.eq i32.eqz if - i32.const 608 - i32.const 16 - i32.const 368 + i32.const 776 + i32.const 24 + i32.const 369 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 231 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 235 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 16 i32.shl @@ -10093,7 +10232,7 @@ i32.const 2 i32.eq ) - (func $~lib/typedarray/Int16Array#findIndex (; 232 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#findIndex (; 236 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10153,7 +10292,7 @@ i32.const -1 end ) - (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 233 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 237 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 16 i32.shl @@ -10162,7 +10301,7 @@ i32.const 4 i32.eq ) - (func $std/typedarray/testArrayFindIndex (; 234 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex (; 238 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10191,9 +10330,9 @@ i32.eq i32.eqz if - i32.const 568 - i32.const 16 - i32.const 365 + i32.const 728 + i32.const 24 + i32.const 366 i32.const 2 call $~lib/env/abort unreachable @@ -10207,22 +10346,22 @@ i32.eq i32.eqz if - i32.const 608 - i32.const 16 - i32.const 368 + i32.const 776 + i32.const 24 + i32.const 369 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 235 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 239 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 65535 i32.and i32.const 2 i32.eq ) - (func $~lib/typedarray/Uint16Array#findIndex (; 236 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#findIndex (; 240 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10282,14 +10421,14 @@ i32.const -1 end ) - (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 237 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 241 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 65535 i32.and i32.const 4 i32.eq ) - (func $std/typedarray/testArrayFindIndex (; 238 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex (; 242 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10318,9 +10457,9 @@ i32.eq i32.eqz if - i32.const 568 - i32.const 16 - i32.const 365 + i32.const 728 + i32.const 24 + i32.const 366 i32.const 2 call $~lib/env/abort unreachable @@ -10334,20 +10473,20 @@ i32.eq i32.eqz if - i32.const 608 - i32.const 16 - i32.const 368 + i32.const 776 + i32.const 24 + i32.const 369 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 239 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 243 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 2 i32.eq ) - (func $~lib/typedarray/Int32Array#findIndex (; 240 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#findIndex (; 244 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10407,12 +10546,12 @@ i32.const -1 end ) - (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 241 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 245 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 4 i32.eq ) - (func $std/typedarray/testArrayFindIndex (; 242 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex (; 246 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10441,9 +10580,9 @@ i32.eq i32.eqz if - i32.const 568 - i32.const 16 - i32.const 365 + i32.const 728 + i32.const 24 + i32.const 366 i32.const 2 call $~lib/env/abort unreachable @@ -10457,20 +10596,20 @@ i32.eq i32.eqz if - i32.const 608 - i32.const 16 - i32.const 368 + i32.const 776 + i32.const 24 + i32.const 369 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 243 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 247 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 2 i32.eq ) - (func $~lib/typedarray/Uint32Array#findIndex (; 244 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#findIndex (; 248 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10530,12 +10669,12 @@ i32.const -1 end ) - (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 245 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 249 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 4 i32.eq ) - (func $std/typedarray/testArrayFindIndex (; 246 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex (; 250 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10564,9 +10703,9 @@ i32.eq i32.eqz if - i32.const 568 - i32.const 16 - i32.const 365 + i32.const 728 + i32.const 24 + i32.const 366 i32.const 2 call $~lib/env/abort unreachable @@ -10580,20 +10719,20 @@ i32.eq i32.eqz if - i32.const 608 - i32.const 16 - i32.const 368 + i32.const 776 + i32.const 24 + i32.const 369 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 247 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 251 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 i64.const 2 i64.eq ) - (func $~lib/typedarray/Int64Array#findIndex (; 248 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#findIndex (; 252 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10653,12 +10792,12 @@ i32.const -1 end ) - (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 249 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 253 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 i64.const 4 i64.eq ) - (func $std/typedarray/testArrayFindIndex (; 250 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex (; 254 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10687,9 +10826,9 @@ i32.eq i32.eqz if - i32.const 568 - i32.const 16 - i32.const 365 + i32.const 728 + i32.const 24 + i32.const 366 i32.const 2 call $~lib/env/abort unreachable @@ -10703,20 +10842,20 @@ i32.eq i32.eqz if - i32.const 608 - i32.const 16 - i32.const 368 + i32.const 776 + i32.const 24 + i32.const 369 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 251 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 255 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 i64.const 2 i64.eq ) - (func $~lib/typedarray/Uint64Array#findIndex (; 252 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#findIndex (; 256 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10776,12 +10915,12 @@ i32.const -1 end ) - (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 253 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 257 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 i64.const 4 i64.eq ) - (func $std/typedarray/testArrayFindIndex (; 254 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex (; 258 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10810,9 +10949,9 @@ i32.eq i32.eqz if - i32.const 568 - i32.const 16 - i32.const 365 + i32.const 728 + i32.const 24 + i32.const 366 i32.const 2 call $~lib/env/abort unreachable @@ -10826,20 +10965,20 @@ i32.eq i32.eqz if - i32.const 608 - i32.const 16 - i32.const 368 + i32.const 776 + i32.const 24 + i32.const 369 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 255 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 259 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $0 f32.const 2 f32.eq ) - (func $~lib/typedarray/Float32Array#findIndex (; 256 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#findIndex (; 260 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10899,12 +11038,12 @@ i32.const -1 end ) - (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 257 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 261 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $0 f32.const 4 f32.eq ) - (func $std/typedarray/testArrayFindIndex (; 258 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex (; 262 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10933,9 +11072,9 @@ i32.eq i32.eqz if - i32.const 568 - i32.const 16 - i32.const 365 + i32.const 728 + i32.const 24 + i32.const 366 i32.const 2 call $~lib/env/abort unreachable @@ -10949,20 +11088,20 @@ i32.eq i32.eqz if - i32.const 608 - i32.const 16 - i32.const 368 + i32.const 776 + i32.const 24 + i32.const 369 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 259 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 263 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $0 f64.const 2 f64.eq ) - (func $~lib/typedarray/Float64Array#findIndex (; 260 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#findIndex (; 264 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11022,12 +11161,12 @@ i32.const -1 end ) - (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 261 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 265 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $0 f64.const 4 f64.eq ) - (func $std/typedarray/testArrayFindIndex (; 262 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex (; 266 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11056,9 +11195,9 @@ i32.eq i32.eqz if - i32.const 568 - i32.const 16 - i32.const 365 + i32.const 728 + i32.const 24 + i32.const 366 i32.const 2 call $~lib/env/abort unreachable @@ -11072,15 +11211,15 @@ i32.eq i32.eqz if - i32.const 608 - i32.const 16 - i32.const 368 + i32.const 776 + i32.const 24 + i32.const 369 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayEvery~anonymous|0 (; 263 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|0 (; 267 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 24 i32.shl @@ -11091,7 +11230,7 @@ i32.const 0 i32.eq ) - (func $~lib/typedarray/Int8Array#every (; 264 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#every (; 268 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11158,7 +11297,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery~anonymous|1 (; 265 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|1 (; 269 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 24 i32.shl @@ -11167,7 +11306,7 @@ i32.const 2 i32.eq ) - (func $std/typedarray/testArrayEvery (; 266 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery (; 270 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11197,8 +11336,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 395 + i32.const 24 + i32.const 396 i32.const 2 call $~lib/env/abort unreachable @@ -11214,14 +11353,14 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 398 + i32.const 24 + i32.const 399 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayEvery~anonymous|0 (; 267 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|0 (; 271 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and @@ -11230,7 +11369,7 @@ i32.const 0 i32.eq ) - (func $~lib/typedarray/Uint8Array#every (; 268 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#every (; 272 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11297,14 +11436,14 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery~anonymous|1 (; 269 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|1 (; 273 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and i32.const 2 i32.eq ) - (func $std/typedarray/testArrayEvery (; 270 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery (; 274 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11334,8 +11473,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 395 + i32.const 24 + i32.const 396 i32.const 2 call $~lib/env/abort unreachable @@ -11351,14 +11490,14 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 398 + i32.const 24 + i32.const 399 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayEvery~anonymous|0 (; 271 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|0 (; 275 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and @@ -11367,7 +11506,7 @@ i32.const 0 i32.eq ) - (func $~lib/typedarray/Uint8ClampedArray#every (; 272 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#every (; 276 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11434,14 +11573,14 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery~anonymous|1 (; 273 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|1 (; 277 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and i32.const 2 i32.eq ) - (func $std/typedarray/testArrayEvery (; 274 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery (; 278 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11471,8 +11610,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 395 + i32.const 24 + i32.const 396 i32.const 2 call $~lib/env/abort unreachable @@ -11488,14 +11627,14 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 398 + i32.const 24 + i32.const 399 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayEvery~anonymous|0 (; 275 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|0 (; 279 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 16 i32.shl @@ -11506,7 +11645,7 @@ i32.const 0 i32.eq ) - (func $~lib/typedarray/Int16Array#every (; 276 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#every (; 280 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11573,7 +11712,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery~anonymous|1 (; 277 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|1 (; 281 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 16 i32.shl @@ -11582,7 +11721,7 @@ i32.const 2 i32.eq ) - (func $std/typedarray/testArrayEvery (; 278 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery (; 282 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11612,8 +11751,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 395 + i32.const 24 + i32.const 396 i32.const 2 call $~lib/env/abort unreachable @@ -11629,14 +11768,14 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 398 + i32.const 24 + i32.const 399 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayEvery~anonymous|0 (; 279 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|0 (; 283 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 65535 i32.and @@ -11645,7 +11784,7 @@ i32.const 0 i32.eq ) - (func $~lib/typedarray/Uint16Array#every (; 280 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#every (; 284 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11712,14 +11851,14 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery~anonymous|1 (; 281 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|1 (; 285 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 65535 i32.and i32.const 2 i32.eq ) - (func $std/typedarray/testArrayEvery (; 282 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery (; 286 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11749,8 +11888,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 395 + i32.const 24 + i32.const 396 i32.const 2 call $~lib/env/abort unreachable @@ -11766,21 +11905,21 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 398 + i32.const 24 + i32.const 399 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayEvery~anonymous|0 (; 283 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|0 (; 287 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 2 i32.rem_s i32.const 0 i32.eq ) - (func $~lib/typedarray/Int32Array#every (; 284 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#every (; 288 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11847,12 +11986,12 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery~anonymous|1 (; 285 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|1 (; 289 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 2 i32.eq ) - (func $std/typedarray/testArrayEvery (; 286 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery (; 290 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11882,8 +12021,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 395 + i32.const 24 + i32.const 396 i32.const 2 call $~lib/env/abort unreachable @@ -11899,21 +12038,21 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 398 + i32.const 24 + i32.const 399 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayEvery~anonymous|0 (; 287 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|0 (; 291 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 2 i32.rem_u i32.const 0 i32.eq ) - (func $~lib/typedarray/Uint32Array#every (; 288 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#every (; 292 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11980,12 +12119,12 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery~anonymous|1 (; 289 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|1 (; 293 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 2 i32.eq ) - (func $std/typedarray/testArrayEvery (; 290 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery (; 294 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12015,8 +12154,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 395 + i32.const 24 + i32.const 396 i32.const 2 call $~lib/env/abort unreachable @@ -12032,21 +12171,21 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 398 + i32.const 24 + i32.const 399 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayEvery~anonymous|0 (; 291 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|0 (; 295 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 i64.const 2 i64.rem_s i64.const 0 i64.eq ) - (func $~lib/typedarray/Int64Array#every (; 292 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#every (; 296 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12113,12 +12252,12 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery~anonymous|1 (; 293 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|1 (; 297 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 i64.const 2 i64.eq ) - (func $std/typedarray/testArrayEvery (; 294 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery (; 298 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12148,8 +12287,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 395 + i32.const 24 + i32.const 396 i32.const 2 call $~lib/env/abort unreachable @@ -12165,21 +12304,21 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 398 + i32.const 24 + i32.const 399 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayEvery~anonymous|0 (; 295 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|0 (; 299 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 i64.const 2 i64.rem_u i64.const 0 i64.eq ) - (func $~lib/typedarray/Uint64Array#every (; 296 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#every (; 300 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12246,12 +12385,12 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery~anonymous|1 (; 297 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|1 (; 301 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 i64.const 2 i64.eq ) - (func $std/typedarray/testArrayEvery (; 298 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery (; 302 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12281,8 +12420,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 395 + i32.const 24 + i32.const 396 i32.const 2 call $~lib/env/abort unreachable @@ -12298,19 +12437,19 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 398 + i32.const 24 + i32.const 399 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/builtins/isNaN (; 299 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + (func $~lib/builtins/isNaN (; 303 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) local.get $0 local.get $0 f32.ne ) - (func $~lib/math/NativeMathf.mod (; 300 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) + (func $~lib/math/NativeMathf.mod (; 304 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12561,14 +12700,14 @@ local.get $2 f32.reinterpret_i32 ) - (func $std/typedarray/testArrayEvery~anonymous|0 (; 301 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|0 (; 305 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $0 f32.const 2 call $~lib/math/NativeMathf.mod f32.const 0 f32.eq ) - (func $~lib/typedarray/Float32Array#every (; 302 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#every (; 306 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12635,12 +12774,12 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery~anonymous|1 (; 303 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|1 (; 307 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $0 f32.const 2 f32.eq ) - (func $std/typedarray/testArrayEvery (; 304 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery (; 308 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12670,8 +12809,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 395 + i32.const 24 + i32.const 396 i32.const 2 call $~lib/env/abort unreachable @@ -12687,19 +12826,19 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 398 + i32.const 24 + i32.const 399 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/builtins/isNaN (; 305 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/builtins/isNaN (; 309 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 local.get $0 f64.ne ) - (func $~lib/math/NativeMath.mod (; 306 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) + (func $~lib/math/NativeMath.mod (; 310 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) (local $2 i64) (local $3 i64) (local $4 i64) @@ -12952,14 +13091,14 @@ local.get $2 f64.reinterpret_i64 ) - (func $std/typedarray/testArrayEvery~anonymous|0 (; 307 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|0 (; 311 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $0 f64.const 2 call $~lib/math/NativeMath.mod f64.const 0 f64.eq ) - (func $~lib/typedarray/Float64Array#every (; 308 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#every (; 312 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13026,12 +13165,12 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery~anonymous|1 (; 309 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|1 (; 313 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $0 f64.const 2 f64.eq ) - (func $std/typedarray/testArrayEvery (; 310 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery (; 314 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -13061,8 +13200,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 395 + i32.const 24 + i32.const 396 i32.const 2 call $~lib/env/abort unreachable @@ -13078,14 +13217,14 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 398 + i32.const 24 + i32.const 399 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayForEach~anonymous|0 (; 311 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach~anonymous|0 (; 315 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) global.get $std/typedarray/forEachValues local.get $1 @@ -13104,9 +13243,9 @@ i32.eq i32.eqz if - i32.const 704 - i32.const 16 - i32.const 425 + i32.const 896 + i32.const 24 + i32.const 426 i32.const 4 call $~lib/env/abort unreachable @@ -13116,9 +13255,9 @@ i32.eq i32.eqz if - i32.const 760 - i32.const 16 - i32.const 426 + i32.const 960 + i32.const 24 + i32.const 427 i32.const 4 call $~lib/env/abort unreachable @@ -13128,9 +13267,9 @@ i32.eq i32.eqz if - i32.const 816 - i32.const 16 - i32.const 427 + i32.const 1024 + i32.const 24 + i32.const 428 i32.const 4 call $~lib/env/abort unreachable @@ -13140,7 +13279,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Int8Array#forEach (; 312 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int8Array#forEach (; 316 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13185,7 +13324,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach (; 313 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach (; 317 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -13233,15 +13372,15 @@ i32.eq i32.eqz if - i32.const 888 - i32.const 16 - i32.const 430 + i32.const 1104 + i32.const 24 + i32.const 431 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayForEach~anonymous|0 (; 314 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach~anonymous|0 (; 318 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) global.get $std/typedarray/forEachValues local.get $1 @@ -13256,9 +13395,9 @@ i32.eq i32.eqz if - i32.const 704 - i32.const 16 - i32.const 425 + i32.const 896 + i32.const 24 + i32.const 426 i32.const 4 call $~lib/env/abort unreachable @@ -13268,9 +13407,9 @@ i32.eq i32.eqz if - i32.const 760 - i32.const 16 - i32.const 426 + i32.const 960 + i32.const 24 + i32.const 427 i32.const 4 call $~lib/env/abort unreachable @@ -13280,9 +13419,9 @@ i32.eq i32.eqz if - i32.const 816 - i32.const 16 - i32.const 427 + i32.const 1024 + i32.const 24 + i32.const 428 i32.const 4 call $~lib/env/abort unreachable @@ -13292,7 +13431,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Uint8Array#forEach (; 315 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint8Array#forEach (; 319 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13337,7 +13476,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach (; 316 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach (; 320 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -13379,15 +13518,15 @@ i32.eq i32.eqz if - i32.const 888 - i32.const 16 - i32.const 430 + i32.const 1104 + i32.const 24 + i32.const 431 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayForEach~anonymous|0 (; 317 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach~anonymous|0 (; 321 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) global.get $std/typedarray/forEachValues local.get $1 @@ -13402,9 +13541,9 @@ i32.eq i32.eqz if - i32.const 704 - i32.const 16 - i32.const 425 + i32.const 896 + i32.const 24 + i32.const 426 i32.const 4 call $~lib/env/abort unreachable @@ -13414,9 +13553,9 @@ i32.eq i32.eqz if - i32.const 760 - i32.const 16 - i32.const 426 + i32.const 960 + i32.const 24 + i32.const 427 i32.const 4 call $~lib/env/abort unreachable @@ -13426,9 +13565,9 @@ i32.eq i32.eqz if - i32.const 816 - i32.const 16 - i32.const 427 + i32.const 1024 + i32.const 24 + i32.const 428 i32.const 4 call $~lib/env/abort unreachable @@ -13438,7 +13577,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Uint8ClampedArray#forEach (; 318 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint8ClampedArray#forEach (; 322 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13483,7 +13622,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach (; 319 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach (; 323 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -13525,15 +13664,15 @@ i32.eq i32.eqz if - i32.const 888 - i32.const 16 - i32.const 430 + i32.const 1104 + i32.const 24 + i32.const 431 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayForEach~anonymous|0 (; 320 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach~anonymous|0 (; 324 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) global.get $std/typedarray/forEachValues local.get $1 @@ -13552,9 +13691,9 @@ i32.eq i32.eqz if - i32.const 704 - i32.const 16 - i32.const 425 + i32.const 896 + i32.const 24 + i32.const 426 i32.const 4 call $~lib/env/abort unreachable @@ -13564,9 +13703,9 @@ i32.eq i32.eqz if - i32.const 760 - i32.const 16 - i32.const 426 + i32.const 960 + i32.const 24 + i32.const 427 i32.const 4 call $~lib/env/abort unreachable @@ -13576,9 +13715,9 @@ i32.eq i32.eqz if - i32.const 816 - i32.const 16 - i32.const 427 + i32.const 1024 + i32.const 24 + i32.const 428 i32.const 4 call $~lib/env/abort unreachable @@ -13588,7 +13727,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Int16Array#forEach (; 321 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int16Array#forEach (; 325 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13633,7 +13772,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach (; 322 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach (; 326 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -13681,15 +13820,15 @@ i32.eq i32.eqz if - i32.const 888 - i32.const 16 - i32.const 430 + i32.const 1104 + i32.const 24 + i32.const 431 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayForEach~anonymous|0 (; 323 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach~anonymous|0 (; 327 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) global.get $std/typedarray/forEachValues local.get $1 @@ -13704,9 +13843,9 @@ i32.eq i32.eqz if - i32.const 704 - i32.const 16 - i32.const 425 + i32.const 896 + i32.const 24 + i32.const 426 i32.const 4 call $~lib/env/abort unreachable @@ -13716,9 +13855,9 @@ i32.eq i32.eqz if - i32.const 760 - i32.const 16 - i32.const 426 + i32.const 960 + i32.const 24 + i32.const 427 i32.const 4 call $~lib/env/abort unreachable @@ -13728,9 +13867,9 @@ i32.eq i32.eqz if - i32.const 816 - i32.const 16 - i32.const 427 + i32.const 1024 + i32.const 24 + i32.const 428 i32.const 4 call $~lib/env/abort unreachable @@ -13740,7 +13879,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Uint16Array#forEach (; 324 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint16Array#forEach (; 328 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13785,7 +13924,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach (; 325 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach (; 329 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -13827,15 +13966,15 @@ i32.eq i32.eqz if - i32.const 888 - i32.const 16 - i32.const 430 + i32.const 1104 + i32.const 24 + i32.const 431 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayForEach~anonymous|0 (; 326 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach~anonymous|0 (; 330 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) global.get $std/typedarray/forEachValues local.get $1 @@ -13846,9 +13985,9 @@ i32.eq i32.eqz if - i32.const 704 - i32.const 16 - i32.const 425 + i32.const 896 + i32.const 24 + i32.const 426 i32.const 4 call $~lib/env/abort unreachable @@ -13858,9 +13997,9 @@ i32.eq i32.eqz if - i32.const 760 - i32.const 16 - i32.const 426 + i32.const 960 + i32.const 24 + i32.const 427 i32.const 4 call $~lib/env/abort unreachable @@ -13870,9 +14009,9 @@ i32.eq i32.eqz if - i32.const 816 - i32.const 16 - i32.const 427 + i32.const 1024 + i32.const 24 + i32.const 428 i32.const 4 call $~lib/env/abort unreachable @@ -13882,7 +14021,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Int32Array#forEach (; 327 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int32Array#forEach (; 331 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13927,7 +14066,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach (; 328 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach (; 332 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -13963,15 +14102,15 @@ i32.eq i32.eqz if - i32.const 888 - i32.const 16 - i32.const 430 + i32.const 1104 + i32.const 24 + i32.const 431 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayForEach~anonymous|0 (; 329 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach~anonymous|0 (; 333 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) global.get $std/typedarray/forEachValues local.get $1 @@ -13982,9 +14121,9 @@ i32.eq i32.eqz if - i32.const 704 - i32.const 16 - i32.const 425 + i32.const 896 + i32.const 24 + i32.const 426 i32.const 4 call $~lib/env/abort unreachable @@ -13994,9 +14133,9 @@ i32.eq i32.eqz if - i32.const 760 - i32.const 16 - i32.const 426 + i32.const 960 + i32.const 24 + i32.const 427 i32.const 4 call $~lib/env/abort unreachable @@ -14006,9 +14145,9 @@ i32.eq i32.eqz if - i32.const 816 - i32.const 16 - i32.const 427 + i32.const 1024 + i32.const 24 + i32.const 428 i32.const 4 call $~lib/env/abort unreachable @@ -14018,7 +14157,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Uint32Array#forEach (; 330 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint32Array#forEach (; 334 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14063,7 +14202,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach (; 331 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach (; 335 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -14099,15 +14238,15 @@ i32.eq i32.eqz if - i32.const 888 - i32.const 16 - i32.const 430 + i32.const 1104 + i32.const 24 + i32.const 431 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayForEach~anonymous|0 (; 332 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach~anonymous|0 (; 336 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) (local $3 i32) global.get $std/typedarray/forEachValues local.get $1 @@ -14119,9 +14258,9 @@ i64.eq i32.eqz if - i32.const 704 - i32.const 16 - i32.const 425 + i32.const 896 + i32.const 24 + i32.const 426 i32.const 4 call $~lib/env/abort unreachable @@ -14131,9 +14270,9 @@ i32.eq i32.eqz if - i32.const 760 - i32.const 16 - i32.const 426 + i32.const 960 + i32.const 24 + i32.const 427 i32.const 4 call $~lib/env/abort unreachable @@ -14143,9 +14282,9 @@ i32.eq i32.eqz if - i32.const 816 - i32.const 16 - i32.const 427 + i32.const 1024 + i32.const 24 + i32.const 428 i32.const 4 call $~lib/env/abort unreachable @@ -14155,7 +14294,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Int64Array#forEach (; 333 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int64Array#forEach (; 337 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14200,7 +14339,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach (; 334 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach (; 338 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -14239,15 +14378,15 @@ i32.eq i32.eqz if - i32.const 888 - i32.const 16 - i32.const 430 + i32.const 1104 + i32.const 24 + i32.const 431 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayForEach~anonymous|0 (; 335 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach~anonymous|0 (; 339 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) (local $3 i32) global.get $std/typedarray/forEachValues local.get $1 @@ -14259,9 +14398,9 @@ i64.eq i32.eqz if - i32.const 704 - i32.const 16 - i32.const 425 + i32.const 896 + i32.const 24 + i32.const 426 i32.const 4 call $~lib/env/abort unreachable @@ -14271,9 +14410,9 @@ i32.eq i32.eqz if - i32.const 760 - i32.const 16 - i32.const 426 + i32.const 960 + i32.const 24 + i32.const 427 i32.const 4 call $~lib/env/abort unreachable @@ -14283,9 +14422,9 @@ i32.eq i32.eqz if - i32.const 816 - i32.const 16 - i32.const 427 + i32.const 1024 + i32.const 24 + i32.const 428 i32.const 4 call $~lib/env/abort unreachable @@ -14295,7 +14434,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Uint64Array#forEach (; 336 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint64Array#forEach (; 340 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14340,7 +14479,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach (; 337 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach (; 341 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -14379,15 +14518,15 @@ i32.eq i32.eqz if - i32.const 888 - i32.const 16 - i32.const 430 + i32.const 1104 + i32.const 24 + i32.const 431 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayForEach~anonymous|0 (; 338 ;) (type $FUNCSIG$vfii) (param $0 f32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach~anonymous|0 (; 342 ;) (type $FUNCSIG$vfii) (param $0 f32) (param $1 i32) (param $2 i32) (local $3 i32) global.get $std/typedarray/forEachValues local.get $1 @@ -14399,9 +14538,9 @@ f32.eq i32.eqz if - i32.const 704 - i32.const 16 - i32.const 425 + i32.const 896 + i32.const 24 + i32.const 426 i32.const 4 call $~lib/env/abort unreachable @@ -14411,9 +14550,9 @@ i32.eq i32.eqz if - i32.const 760 - i32.const 16 - i32.const 426 + i32.const 960 + i32.const 24 + i32.const 427 i32.const 4 call $~lib/env/abort unreachable @@ -14423,9 +14562,9 @@ i32.eq i32.eqz if - i32.const 816 - i32.const 16 - i32.const 427 + i32.const 1024 + i32.const 24 + i32.const 428 i32.const 4 call $~lib/env/abort unreachable @@ -14435,7 +14574,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Float32Array#forEach (; 339 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Float32Array#forEach (; 343 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14480,7 +14619,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach (; 340 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach (; 344 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -14519,15 +14658,15 @@ i32.eq i32.eqz if - i32.const 888 - i32.const 16 - i32.const 430 + i32.const 1104 + i32.const 24 + i32.const 431 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/typedarray/testArrayForEach~anonymous|0 (; 341 ;) (type $FUNCSIG$vdii) (param $0 f64) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach~anonymous|0 (; 345 ;) (type $FUNCSIG$vdii) (param $0 f64) (param $1 i32) (param $2 i32) (local $3 i32) global.get $std/typedarray/forEachValues local.get $1 @@ -14539,9 +14678,9 @@ f64.eq i32.eqz if - i32.const 704 - i32.const 16 - i32.const 425 + i32.const 896 + i32.const 24 + i32.const 426 i32.const 4 call $~lib/env/abort unreachable @@ -14551,9 +14690,9 @@ i32.eq i32.eqz if - i32.const 760 - i32.const 16 - i32.const 426 + i32.const 960 + i32.const 24 + i32.const 427 i32.const 4 call $~lib/env/abort unreachable @@ -14563,9 +14702,9 @@ i32.eq i32.eqz if - i32.const 816 - i32.const 16 - i32.const 427 + i32.const 1024 + i32.const 24 + i32.const 428 i32.const 4 call $~lib/env/abort unreachable @@ -14575,7 +14714,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Float64Array#forEach (; 342 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Float64Array#forEach (; 346 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14620,7 +14759,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach (; 343 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach (; 347 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -14659,15 +14798,15 @@ i32.eq i32.eqz if - i32.const 888 - i32.const 16 - i32.const 430 + i32.const 1104 + i32.const 24 + i32.const 431 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Int8Array#reverse (; 344 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#reverse (; 348 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -14737,7 +14876,7 @@ end local.get $1 ) - (func $std/typedarray/testArrayReverse (; 345 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse (; 349 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14822,9 +14961,9 @@ i32.eq i32.eqz if - i32.const 1024 - i32.const 16 - i32.const 461 + i32.const 1264 + i32.const 24 + i32.const 462 i32.const 4 call $~lib/env/abort unreachable @@ -14851,9 +14990,9 @@ i32.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 466 + i32.const 1352 + i32.const 24 + i32.const 467 i32.const 2 call $~lib/env/abort unreachable @@ -14865,9 +15004,9 @@ i32.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 467 + i32.const 1352 + i32.const 24 + i32.const 468 i32.const 2 call $~lib/env/abort unreachable @@ -14879,9 +15018,9 @@ i32.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 468 + i32.const 1352 + i32.const 24 + i32.const 469 i32.const 2 call $~lib/env/abort unreachable @@ -14893,15 +15032,15 @@ i32.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 469 + i32.const 1352 + i32.const 24 + i32.const 470 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Uint8Array#reverse (; 346 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reverse (; 350 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -14971,7 +15110,7 @@ end local.get $1 ) - (func $~lib/typedarray/Uint8Array#subarray (; 347 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array#subarray (; 351 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -14979,6 +15118,9 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) local.get $0 local.set $5 local.get $1 @@ -15052,12 +15194,12 @@ i32.const 12 local.set $8 local.get $8 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $7 local.get $7 i32.const 5 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $7 local.get $5 @@ -15067,7 +15209,27 @@ i32.load offset=4 local.set $9 local.get $7 + local.tee $10 local.get $8 + local.tee $11 + local.get $10 + i32.load + local.tee $12 + i32.ne + if (result i32) + local.get $12 + if + local.get $12 + local.get $10 + call $~lib/collector/dummy/__ref_unlink + end + local.get $11 + local.get $10 + call $~lib/collector/dummy/__ref_link + local.get $11 + else + local.get $11 + end i32.store local.get $7 local.get $9 @@ -15085,7 +15247,7 @@ i32.store offset=8 local.get $7 ) - (func $std/typedarray/testArrayReverse (; 348 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse (; 352 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -15164,9 +15326,9 @@ i32.eq i32.eqz if - i32.const 1024 - i32.const 16 - i32.const 461 + i32.const 1264 + i32.const 24 + i32.const 462 i32.const 4 call $~lib/env/abort unreachable @@ -15193,9 +15355,9 @@ i32.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 466 + i32.const 1352 + i32.const 24 + i32.const 467 i32.const 2 call $~lib/env/abort unreachable @@ -15207,9 +15369,9 @@ i32.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 467 + i32.const 1352 + i32.const 24 + i32.const 468 i32.const 2 call $~lib/env/abort unreachable @@ -15221,9 +15383,9 @@ i32.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 468 + i32.const 1352 + i32.const 24 + i32.const 469 i32.const 2 call $~lib/env/abort unreachable @@ -15235,15 +15397,15 @@ i32.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 469 + i32.const 1352 + i32.const 24 + i32.const 470 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Uint8ClampedArray#reverse (; 349 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#reverse (; 353 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -15313,7 +15475,7 @@ end local.get $1 ) - (func $~lib/typedarray/Uint8ClampedArray#subarray (; 350 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#subarray (; 354 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -15321,6 +15483,9 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) local.get $0 local.set $5 local.get $1 @@ -15394,12 +15559,12 @@ i32.const 12 local.set $8 local.get $8 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $7 local.get $7 i32.const 6 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $7 local.get $5 @@ -15409,7 +15574,27 @@ i32.load offset=4 local.set $9 local.get $7 + local.tee $10 local.get $8 + local.tee $11 + local.get $10 + i32.load + local.tee $12 + i32.ne + if (result i32) + local.get $12 + if + local.get $12 + local.get $10 + call $~lib/collector/dummy/__ref_unlink + end + local.get $11 + local.get $10 + call $~lib/collector/dummy/__ref_link + local.get $11 + else + local.get $11 + end i32.store local.get $7 local.get $9 @@ -15427,7 +15612,7 @@ i32.store offset=8 local.get $7 ) - (func $std/typedarray/testArrayReverse (; 351 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse (; 355 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -15506,9 +15691,9 @@ i32.eq i32.eqz if - i32.const 1024 - i32.const 16 - i32.const 461 + i32.const 1264 + i32.const 24 + i32.const 462 i32.const 4 call $~lib/env/abort unreachable @@ -15535,9 +15720,9 @@ i32.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 466 + i32.const 1352 + i32.const 24 + i32.const 467 i32.const 2 call $~lib/env/abort unreachable @@ -15549,9 +15734,9 @@ i32.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 467 + i32.const 1352 + i32.const 24 + i32.const 468 i32.const 2 call $~lib/env/abort unreachable @@ -15563,9 +15748,9 @@ i32.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 468 + i32.const 1352 + i32.const 24 + i32.const 469 i32.const 2 call $~lib/env/abort unreachable @@ -15577,15 +15762,15 @@ i32.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 469 + i32.const 1352 + i32.const 24 + i32.const 470 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Int16Array#reverse (; 352 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#reverse (; 356 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -15655,7 +15840,7 @@ end local.get $1 ) - (func $~lib/typedarray/Int16Array#subarray (; 353 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#subarray (; 357 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -15663,6 +15848,9 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) local.get $0 local.set $5 local.get $1 @@ -15736,12 +15924,12 @@ i32.const 12 local.set $8 local.get $8 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $7 local.get $7 i32.const 7 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $7 local.get $5 @@ -15751,7 +15939,27 @@ i32.load offset=4 local.set $9 local.get $7 + local.tee $10 local.get $8 + local.tee $11 + local.get $10 + i32.load + local.tee $12 + i32.ne + if (result i32) + local.get $12 + if + local.get $12 + local.get $10 + call $~lib/collector/dummy/__ref_unlink + end + local.get $11 + local.get $10 + call $~lib/collector/dummy/__ref_link + local.get $11 + else + local.get $11 + end i32.store local.get $7 local.get $9 @@ -15769,7 +15977,7 @@ i32.store offset=8 local.get $7 ) - (func $std/typedarray/testArrayReverse (; 354 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse (; 358 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -15854,9 +16062,9 @@ i32.eq i32.eqz if - i32.const 1024 - i32.const 16 - i32.const 461 + i32.const 1264 + i32.const 24 + i32.const 462 i32.const 4 call $~lib/env/abort unreachable @@ -15883,9 +16091,9 @@ i32.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 466 + i32.const 1352 + i32.const 24 + i32.const 467 i32.const 2 call $~lib/env/abort unreachable @@ -15897,9 +16105,9 @@ i32.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 467 + i32.const 1352 + i32.const 24 + i32.const 468 i32.const 2 call $~lib/env/abort unreachable @@ -15911,9 +16119,9 @@ i32.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 468 + i32.const 1352 + i32.const 24 + i32.const 469 i32.const 2 call $~lib/env/abort unreachable @@ -15925,15 +16133,15 @@ i32.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 469 + i32.const 1352 + i32.const 24 + i32.const 470 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Uint16Array#reverse (; 355 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#reverse (; 359 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -16003,7 +16211,7 @@ end local.get $1 ) - (func $~lib/typedarray/Uint16Array#subarray (; 356 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array#subarray (; 360 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -16011,6 +16219,9 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) local.get $0 local.set $5 local.get $1 @@ -16084,12 +16295,12 @@ i32.const 12 local.set $8 local.get $8 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $7 local.get $7 i32.const 8 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $7 local.get $5 @@ -16099,7 +16310,27 @@ i32.load offset=4 local.set $9 local.get $7 + local.tee $10 local.get $8 + local.tee $11 + local.get $10 + i32.load + local.tee $12 + i32.ne + if (result i32) + local.get $12 + if + local.get $12 + local.get $10 + call $~lib/collector/dummy/__ref_unlink + end + local.get $11 + local.get $10 + call $~lib/collector/dummy/__ref_link + local.get $11 + else + local.get $11 + end i32.store local.get $7 local.get $9 @@ -16117,7 +16348,7 @@ i32.store offset=8 local.get $7 ) - (func $std/typedarray/testArrayReverse (; 357 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse (; 361 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -16196,9 +16427,9 @@ i32.eq i32.eqz if - i32.const 1024 - i32.const 16 - i32.const 461 + i32.const 1264 + i32.const 24 + i32.const 462 i32.const 4 call $~lib/env/abort unreachable @@ -16225,9 +16456,9 @@ i32.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 466 + i32.const 1352 + i32.const 24 + i32.const 467 i32.const 2 call $~lib/env/abort unreachable @@ -16239,9 +16470,9 @@ i32.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 467 + i32.const 1352 + i32.const 24 + i32.const 468 i32.const 2 call $~lib/env/abort unreachable @@ -16253,9 +16484,9 @@ i32.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 468 + i32.const 1352 + i32.const 24 + i32.const 469 i32.const 2 call $~lib/env/abort unreachable @@ -16267,15 +16498,15 @@ i32.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 469 + i32.const 1352 + i32.const 24 + i32.const 470 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Int32Array#reverse (; 358 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int32Array#reverse (; 362 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -16345,7 +16576,7 @@ end local.get $1 ) - (func $std/typedarray/testArrayReverse (; 359 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse (; 363 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -16418,9 +16649,9 @@ i32.eq i32.eqz if - i32.const 1024 - i32.const 16 - i32.const 461 + i32.const 1264 + i32.const 24 + i32.const 462 i32.const 4 call $~lib/env/abort unreachable @@ -16447,9 +16678,9 @@ i32.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 466 + i32.const 1352 + i32.const 24 + i32.const 467 i32.const 2 call $~lib/env/abort unreachable @@ -16461,9 +16692,9 @@ i32.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 467 + i32.const 1352 + i32.const 24 + i32.const 468 i32.const 2 call $~lib/env/abort unreachable @@ -16475,9 +16706,9 @@ i32.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 468 + i32.const 1352 + i32.const 24 + i32.const 469 i32.const 2 call $~lib/env/abort unreachable @@ -16489,15 +16720,15 @@ i32.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 469 + i32.const 1352 + i32.const 24 + i32.const 470 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Uint32Array#reverse (; 360 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint32Array#reverse (; 364 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -16567,7 +16798,7 @@ end local.get $1 ) - (func $~lib/typedarray/Uint32Array#subarray (; 361 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array#subarray (; 365 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -16575,6 +16806,9 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) local.get $0 local.set $5 local.get $1 @@ -16648,12 +16882,12 @@ i32.const 12 local.set $8 local.get $8 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $7 local.get $7 i32.const 10 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $7 local.get $5 @@ -16663,7 +16897,27 @@ i32.load offset=4 local.set $9 local.get $7 + local.tee $10 local.get $8 + local.tee $11 + local.get $10 + i32.load + local.tee $12 + i32.ne + if (result i32) + local.get $12 + if + local.get $12 + local.get $10 + call $~lib/collector/dummy/__ref_unlink + end + local.get $11 + local.get $10 + call $~lib/collector/dummy/__ref_link + local.get $11 + else + local.get $11 + end i32.store local.get $7 local.get $9 @@ -16681,7 +16935,7 @@ i32.store offset=8 local.get $7 ) - (func $std/typedarray/testArrayReverse (; 362 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse (; 366 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -16754,9 +17008,9 @@ i32.eq i32.eqz if - i32.const 1024 - i32.const 16 - i32.const 461 + i32.const 1264 + i32.const 24 + i32.const 462 i32.const 4 call $~lib/env/abort unreachable @@ -16783,9 +17037,9 @@ i32.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 466 + i32.const 1352 + i32.const 24 + i32.const 467 i32.const 2 call $~lib/env/abort unreachable @@ -16797,9 +17051,9 @@ i32.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 467 + i32.const 1352 + i32.const 24 + i32.const 468 i32.const 2 call $~lib/env/abort unreachable @@ -16811,9 +17065,9 @@ i32.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 468 + i32.const 1352 + i32.const 24 + i32.const 469 i32.const 2 call $~lib/env/abort unreachable @@ -16825,15 +17079,15 @@ i32.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 469 + i32.const 1352 + i32.const 24 + i32.const 470 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Int64Array#reverse (; 363 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int64Array#reverse (; 367 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -16903,7 +17157,7 @@ end local.get $1 ) - (func $~lib/typedarray/Int64Array#subarray (; 364 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int64Array#subarray (; 368 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -16911,6 +17165,9 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) local.get $0 local.set $5 local.get $1 @@ -16984,12 +17241,12 @@ i32.const 12 local.set $8 local.get $8 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $7 local.get $7 i32.const 11 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $7 local.get $5 @@ -16999,7 +17256,27 @@ i32.load offset=4 local.set $9 local.get $7 + local.tee $10 local.get $8 + local.tee $11 + local.get $10 + i32.load + local.tee $12 + i32.ne + if (result i32) + local.get $12 + if + local.get $12 + local.get $10 + call $~lib/collector/dummy/__ref_unlink + end + local.get $11 + local.get $10 + call $~lib/collector/dummy/__ref_link + local.get $11 + else + local.get $11 + end i32.store local.get $7 local.get $9 @@ -17017,7 +17294,7 @@ i32.store offset=8 local.get $7 ) - (func $std/typedarray/testArrayReverse (; 365 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse (; 369 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -17093,9 +17370,9 @@ i64.eq i32.eqz if - i32.const 1024 - i32.const 16 - i32.const 461 + i32.const 1264 + i32.const 24 + i32.const 462 i32.const 4 call $~lib/env/abort unreachable @@ -17122,9 +17399,9 @@ i64.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 466 + i32.const 1352 + i32.const 24 + i32.const 467 i32.const 2 call $~lib/env/abort unreachable @@ -17136,9 +17413,9 @@ i64.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 467 + i32.const 1352 + i32.const 24 + i32.const 468 i32.const 2 call $~lib/env/abort unreachable @@ -17150,9 +17427,9 @@ i64.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 468 + i32.const 1352 + i32.const 24 + i32.const 469 i32.const 2 call $~lib/env/abort unreachable @@ -17164,15 +17441,15 @@ i64.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 469 + i32.const 1352 + i32.const 24 + i32.const 470 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Uint64Array#reverse (; 366 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint64Array#reverse (; 370 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -17242,7 +17519,7 @@ end local.get $1 ) - (func $~lib/typedarray/Uint64Array#subarray (; 367 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint64Array#subarray (; 371 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -17250,6 +17527,9 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) local.get $0 local.set $5 local.get $1 @@ -17323,12 +17603,12 @@ i32.const 12 local.set $8 local.get $8 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $7 local.get $7 i32.const 12 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $7 local.get $5 @@ -17338,7 +17618,27 @@ i32.load offset=4 local.set $9 local.get $7 + local.tee $10 local.get $8 + local.tee $11 + local.get $10 + i32.load + local.tee $12 + i32.ne + if (result i32) + local.get $12 + if + local.get $12 + local.get $10 + call $~lib/collector/dummy/__ref_unlink + end + local.get $11 + local.get $10 + call $~lib/collector/dummy/__ref_link + local.get $11 + else + local.get $11 + end i32.store local.get $7 local.get $9 @@ -17356,7 +17656,7 @@ i32.store offset=8 local.get $7 ) - (func $std/typedarray/testArrayReverse (; 368 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse (; 372 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -17432,9 +17732,9 @@ i64.eq i32.eqz if - i32.const 1024 - i32.const 16 - i32.const 461 + i32.const 1264 + i32.const 24 + i32.const 462 i32.const 4 call $~lib/env/abort unreachable @@ -17461,9 +17761,9 @@ i64.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 466 + i32.const 1352 + i32.const 24 + i32.const 467 i32.const 2 call $~lib/env/abort unreachable @@ -17475,9 +17775,9 @@ i64.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 467 + i32.const 1352 + i32.const 24 + i32.const 468 i32.const 2 call $~lib/env/abort unreachable @@ -17489,9 +17789,9 @@ i64.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 468 + i32.const 1352 + i32.const 24 + i32.const 469 i32.const 2 call $~lib/env/abort unreachable @@ -17503,15 +17803,15 @@ i64.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 469 + i32.const 1352 + i32.const 24 + i32.const 470 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Float32Array#reverse (; 369 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float32Array#reverse (; 373 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -17581,7 +17881,7 @@ end local.get $1 ) - (func $~lib/typedarray/Float32Array#subarray (; 370 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float32Array#subarray (; 374 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -17589,6 +17889,9 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) local.get $0 local.set $5 local.get $1 @@ -17662,12 +17965,12 @@ i32.const 12 local.set $8 local.get $8 - call $~lib/runtime/doAllocate + call $~lib/runtime/allocate end local.set $7 local.get $7 i32.const 13 - call $~lib/runtime/doRegister + call $~lib/runtime/register end local.set $7 local.get $5 @@ -17677,7 +17980,27 @@ i32.load offset=4 local.set $9 local.get $7 + local.tee $10 local.get $8 + local.tee $11 + local.get $10 + i32.load + local.tee $12 + i32.ne + if (result i32) + local.get $12 + if + local.get $12 + local.get $10 + call $~lib/collector/dummy/__ref_unlink + end + local.get $11 + local.get $10 + call $~lib/collector/dummy/__ref_link + local.get $11 + else + local.get $11 + end i32.store local.get $7 local.get $9 @@ -17695,7 +18018,7 @@ i32.store offset=8 local.get $7 ) - (func $std/typedarray/testArrayReverse (; 371 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse (; 375 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -17771,9 +18094,9 @@ f32.eq i32.eqz if - i32.const 1024 - i32.const 16 - i32.const 461 + i32.const 1264 + i32.const 24 + i32.const 462 i32.const 4 call $~lib/env/abort unreachable @@ -17800,9 +18123,9 @@ f32.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 466 + i32.const 1352 + i32.const 24 + i32.const 467 i32.const 2 call $~lib/env/abort unreachable @@ -17814,9 +18137,9 @@ f32.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 467 + i32.const 1352 + i32.const 24 + i32.const 468 i32.const 2 call $~lib/env/abort unreachable @@ -17828,9 +18151,9 @@ f32.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 468 + i32.const 1352 + i32.const 24 + i32.const 469 i32.const 2 call $~lib/env/abort unreachable @@ -17842,15 +18165,15 @@ f32.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 469 + i32.const 1352 + i32.const 24 + i32.const 470 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/typedarray/Float64Array#reverse (; 372 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float64Array#reverse (; 376 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -17920,7 +18243,7 @@ end local.get $1 ) - (func $std/typedarray/testArrayReverse (; 373 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse (; 377 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -17996,9 +18319,9 @@ f64.eq i32.eqz if - i32.const 1024 - i32.const 16 - i32.const 461 + i32.const 1264 + i32.const 24 + i32.const 462 i32.const 4 call $~lib/env/abort unreachable @@ -18025,9 +18348,9 @@ f64.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 466 + i32.const 1352 + i32.const 24 + i32.const 467 i32.const 2 call $~lib/env/abort unreachable @@ -18039,9 +18362,9 @@ f64.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 467 + i32.const 1352 + i32.const 24 + i32.const 468 i32.const 2 call $~lib/env/abort unreachable @@ -18053,9 +18376,9 @@ f64.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 468 + i32.const 1352 + i32.const 24 + i32.const 469 i32.const 2 call $~lib/env/abort unreachable @@ -18067,15 +18390,15 @@ f64.eq i32.eqz if - i32.const 1104 - i32.const 16 - i32.const 469 + i32.const 1352 + i32.const 24 + i32.const 470 i32.const 2 call $~lib/env/abort unreachable end ) - (func $start:std/typedarray (; 374 ;) (type $FUNCSIG$v) + (func $start:std/typedarray (; 378 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) global.get $~lib/typedarray/Int8Array.BYTES_PER_ELEMENT @@ -18084,8 +18407,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 1 + i32.const 24 + i32.const 4 i32.const 0 call $~lib/env/abort unreachable @@ -18096,8 +18419,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 2 + i32.const 24 + i32.const 5 i32.const 0 call $~lib/env/abort unreachable @@ -18108,8 +18431,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 3 + i32.const 24 + i32.const 6 i32.const 0 call $~lib/env/abort unreachable @@ -18120,8 +18443,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 4 + i32.const 24 + i32.const 7 i32.const 0 call $~lib/env/abort unreachable @@ -18132,8 +18455,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 5 + i32.const 24 + i32.const 8 i32.const 0 call $~lib/env/abort unreachable @@ -18144,8 +18467,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 6 + i32.const 24 + i32.const 9 i32.const 0 call $~lib/env/abort unreachable @@ -18156,8 +18479,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 7 + i32.const 24 + i32.const 10 i32.const 0 call $~lib/env/abort unreachable @@ -18168,8 +18491,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 8 + i32.const 24 + i32.const 11 i32.const 0 call $~lib/env/abort unreachable @@ -18180,8 +18503,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 9 + i32.const 24 + i32.const 12 i32.const 0 call $~lib/env/abort unreachable @@ -18192,8 +18515,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 10 + i32.const 24 + i32.const 13 i32.const 0 call $~lib/env/abort unreachable @@ -18204,8 +18527,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 11 + i32.const 24 + i32.const 14 i32.const 0 call $~lib/env/abort unreachable @@ -18247,8 +18570,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 96 + i32.const 24 + i32.const 97 i32.const 0 call $~lib/env/abort unreachable @@ -18260,8 +18583,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 97 + i32.const 24 + i32.const 98 i32.const 0 call $~lib/env/abort unreachable @@ -18275,8 +18598,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 98 + i32.const 24 + i32.const 99 i32.const 0 call $~lib/env/abort unreachable @@ -18289,8 +18612,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 99 + i32.const 24 + i32.const 100 i32.const 0 call $~lib/env/abort unreachable @@ -18303,8 +18626,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 100 + i32.const 24 + i32.const 101 i32.const 0 call $~lib/env/abort unreachable @@ -18317,8 +18640,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 101 + i32.const 24 + i32.const 102 i32.const 0 call $~lib/env/abort unreachable @@ -18335,8 +18658,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 104 + i32.const 24 + i32.const 105 i32.const 0 call $~lib/env/abort unreachable @@ -18350,8 +18673,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 105 + i32.const 24 + i32.const 106 i32.const 0 call $~lib/env/abort unreachable @@ -18365,8 +18688,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 106 + i32.const 24 + i32.const 107 i32.const 0 call $~lib/env/abort unreachable @@ -18379,8 +18702,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 107 + i32.const 24 + i32.const 108 i32.const 0 call $~lib/env/abort unreachable @@ -18433,8 +18756,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 121 + i32.const 24 + i32.const 122 i32.const 0 call $~lib/env/abort unreachable @@ -18448,8 +18771,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 122 + i32.const 24 + i32.const 123 i32.const 0 call $~lib/env/abort unreachable @@ -18463,8 +18786,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 123 + i32.const 24 + i32.const 124 i32.const 0 call $~lib/env/abort unreachable @@ -18515,8 +18838,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 125 + i32.const 24 + i32.const 126 i32.const 0 call $~lib/env/abort unreachable @@ -18545,8 +18868,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 132 + i32.const 24 + i32.const 133 i32.const 0 call $~lib/env/abort unreachable @@ -18559,8 +18882,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 133 + i32.const 24 + i32.const 134 i32.const 0 call $~lib/env/abort unreachable @@ -18573,8 +18896,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 134 + i32.const 24 + i32.const 135 i32.const 0 call $~lib/env/abort unreachable @@ -18613,20 +18936,20 @@ block $~lib/runtime/MAKEARRAY|inlined.0 (result i32) i32.const 5 local.set $0 - i32.const 200 + i32.const 240 local.set $1 local.get $0 local.get $1 i32.const 15 i32.const 0 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 - i32.const 16 - i32.const 144 + i32.const 24 + i32.const 145 i32.const 0 call $~lib/env/abort unreachable @@ -18641,20 +18964,20 @@ block $~lib/runtime/MAKEARRAY|inlined.1 (result i32) i32.const 5 local.set $1 - i32.const 256 + i32.const 312 local.set $0 local.get $1 local.get $0 i32.const 15 i32.const 0 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 - i32.const 16 - i32.const 147 + i32.const 24 + i32.const 148 i32.const 0 call $~lib/env/abort unreachable @@ -18669,20 +18992,20 @@ block $~lib/runtime/MAKEARRAY|inlined.2 (result i32) i32.const 5 local.set $0 - i32.const 272 + i32.const 336 local.set $1 local.get $0 local.get $1 i32.const 15 i32.const 0 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 - i32.const 16 - i32.const 150 + i32.const 24 + i32.const 151 i32.const 0 call $~lib/env/abort unreachable @@ -18697,20 +19020,20 @@ block $~lib/runtime/MAKEARRAY|inlined.3 (result i32) i32.const 5 local.set $1 - i32.const 288 + i32.const 360 local.set $0 local.get $1 local.get $0 i32.const 15 i32.const 0 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 - i32.const 16 - i32.const 153 + i32.const 24 + i32.const 154 i32.const 0 call $~lib/env/abort unreachable @@ -18725,20 +19048,20 @@ block $~lib/runtime/MAKEARRAY|inlined.4 (result i32) i32.const 5 local.set $0 - i32.const 304 + i32.const 384 local.set $1 local.get $0 local.get $1 i32.const 15 i32.const 0 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 - i32.const 16 - i32.const 156 + i32.const 24 + i32.const 157 i32.const 0 call $~lib/env/abort unreachable @@ -18761,8 +19084,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 160 + i32.const 24 + i32.const 161 i32.const 0 call $~lib/env/abort unreachable @@ -18774,8 +19097,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 161 + i32.const 24 + i32.const 162 i32.const 0 call $~lib/env/abort unreachable @@ -18787,8 +19110,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 162 + i32.const 24 + i32.const 163 i32.const 0 call $~lib/env/abort unreachable @@ -18797,20 +19120,20 @@ block $~lib/runtime/MAKEARRAY|inlined.5 (result i32) i32.const 3 local.set $1 - i32.const 320 + i32.const 408 local.set $0 local.get $1 local.get $0 i32.const 15 i32.const 0 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 - i32.const 16 - i32.const 163 + i32.const 24 + i32.const 164 i32.const 0 call $~lib/env/abort unreachable @@ -18819,20 +19142,20 @@ block $~lib/runtime/MAKEARRAY|inlined.6 (result i32) i32.const 5 local.set $0 - i32.const 336 + i32.const 432 local.set $1 local.get $0 local.get $1 i32.const 15 i32.const 0 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 - i32.const 16 - i32.const 164 + i32.const 24 + i32.const 165 i32.const 0 call $~lib/env/abort unreachable @@ -18871,20 +19194,20 @@ block $~lib/runtime/MAKEARRAY|inlined.0 (result i32) i32.const 5 local.set $1 - i32.const 352 + i32.const 456 local.set $0 local.get $1 local.get $0 i32.const 16 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 16 - i32.const 174 + i32.const 24 + i32.const 175 i32.const 0 call $~lib/env/abort unreachable @@ -18899,20 +19222,20 @@ block $~lib/runtime/MAKEARRAY|inlined.1 (result i32) i32.const 5 local.set $0 - i32.const 384 + i32.const 496 local.set $1 local.get $0 local.get $1 i32.const 16 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 16 - i32.const 177 + i32.const 24 + i32.const 178 i32.const 0 call $~lib/env/abort unreachable @@ -18927,20 +19250,20 @@ block $~lib/runtime/MAKEARRAY|inlined.2 (result i32) i32.const 5 local.set $1 - i32.const 416 + i32.const 536 local.set $0 local.get $1 local.get $0 i32.const 16 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 16 - i32.const 180 + i32.const 24 + i32.const 181 i32.const 0 call $~lib/env/abort unreachable @@ -18955,20 +19278,20 @@ block $~lib/runtime/MAKEARRAY|inlined.3 (result i32) i32.const 5 local.set $0 - i32.const 448 + i32.const 576 local.set $1 local.get $0 local.get $1 i32.const 16 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 16 - i32.const 183 + i32.const 24 + i32.const 184 i32.const 0 call $~lib/env/abort unreachable @@ -18983,20 +19306,20 @@ block $~lib/runtime/MAKEARRAY|inlined.4 (result i32) i32.const 5 local.set $1 - i32.const 480 + i32.const 616 local.set $0 local.get $1 local.get $0 i32.const 16 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 16 - i32.const 186 + i32.const 24 + i32.const 187 i32.const 0 call $~lib/env/abort unreachable @@ -19019,8 +19342,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 190 + i32.const 24 + i32.const 191 i32.const 0 call $~lib/env/abort unreachable @@ -19034,8 +19357,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 191 + i32.const 24 + i32.const 192 i32.const 0 call $~lib/env/abort unreachable @@ -19049,8 +19372,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 192 + i32.const 24 + i32.const 193 i32.const 0 call $~lib/env/abort unreachable @@ -19059,20 +19382,20 @@ block $~lib/runtime/MAKEARRAY|inlined.5 (result i32) i32.const 3 local.set $0 - i32.const 512 + i32.const 656 local.set $1 local.get $0 local.get $1 i32.const 16 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 16 - i32.const 193 + i32.const 24 + i32.const 194 i32.const 0 call $~lib/env/abort unreachable @@ -19081,20 +19404,20 @@ block $~lib/runtime/MAKEARRAY|inlined.6 (result i32) i32.const 5 local.set $1 - i32.const 536 + i32.const 688 local.set $0 local.get $1 local.get $0 i32.const 16 i32.const 2 - call $~lib/runtime/doMakeArray + call $~lib/runtime/makeArray end call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 16 - i32.const 194 + i32.const 24 + i32.const 195 i32.const 0 call $~lib/env/abort unreachable @@ -19144,8 +19467,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 211 + i32.const 24 + i32.const 212 i32.const 0 call $~lib/env/abort unreachable @@ -19157,8 +19480,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 212 + i32.const 24 + i32.const 213 i32.const 0 call $~lib/env/abort unreachable @@ -19170,8 +19493,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 213 + i32.const 24 + i32.const 214 i32.const 0 call $~lib/env/abort unreachable @@ -19183,8 +19506,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 214 + i32.const 24 + i32.const 215 i32.const 0 call $~lib/env/abort unreachable @@ -19202,8 +19525,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 217 + i32.const 24 + i32.const 218 i32.const 0 call $~lib/env/abort unreachable @@ -19215,8 +19538,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 218 + i32.const 24 + i32.const 219 i32.const 0 call $~lib/env/abort unreachable @@ -19228,8 +19551,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 219 + i32.const 24 + i32.const 220 i32.const 0 call $~lib/env/abort unreachable @@ -19241,8 +19564,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 220 + i32.const 24 + i32.const 221 i32.const 0 call $~lib/env/abort unreachable @@ -19260,8 +19583,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 223 + i32.const 24 + i32.const 224 i32.const 0 call $~lib/env/abort unreachable @@ -19273,8 +19596,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 224 + i32.const 24 + i32.const 225 i32.const 0 call $~lib/env/abort unreachable @@ -19286,8 +19609,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 225 + i32.const 24 + i32.const 226 i32.const 0 call $~lib/env/abort unreachable @@ -19299,8 +19622,8 @@ i32.eqz if i32.const 0 - i32.const 16 - i32.const 226 + i32.const 24 + i32.const 227 i32.const 0 call $~lib/env/abort unreachable @@ -19394,9 +19717,9 @@ call $std/typedarray/testArrayReverse call $std/typedarray/testArrayReverse ) - (func $start (; 375 ;) (type $FUNCSIG$v) + (func $start (; 379 ;) (type $FUNCSIG$v) call $start:std/typedarray ) - (func $null (; 376 ;) (type $FUNCSIG$v) + (func $null (; 380 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/unary.optimized.wat b/tests/compiler/unary.optimized.wat index 1e04efb7..a56a7f41 100644 --- a/tests/compiler/unary.optimized.wat +++ b/tests/compiler/unary.optimized.wat @@ -53,10 +53,16 @@ global.get $unary/i i32.const 1 i32.add + local.tee $2 + global.set $unary/i + local.get $2 global.set $unary/i global.get $unary/i i32.const 1 i32.sub + local.tee $2 + global.set $unary/i + local.get $2 global.set $unary/i global.get $unary/i local.tee $2 @@ -111,10 +117,16 @@ global.get $unary/I i64.const 1 i64.add + local.tee $3 + global.set $unary/I + local.get $3 global.set $unary/I global.get $unary/I i64.const 1 i64.sub + local.tee $3 + global.set $unary/I + local.get $3 global.set $unary/I global.get $unary/I local.tee $3 @@ -163,10 +175,16 @@ local.get $0 f32.const 1 f32.add + local.tee $0 + global.set $unary/f + local.get $0 global.set $unary/f global.get $unary/f f32.const 1 f32.sub + local.tee $0 + global.set $unary/f + local.get $0 global.set $unary/f global.get $unary/f local.tee $0 @@ -216,10 +234,16 @@ local.get $1 f64.const 1 f64.add + local.tee $1 + global.set $unary/F + local.get $1 global.set $unary/F global.get $unary/F f64.const 1 f64.sub + local.tee $1 + global.set $unary/F + local.get $1 global.set $unary/F global.get $unary/F local.tee $1 diff --git a/tests/compiler/unary.untouched.wat b/tests/compiler/unary.untouched.wat index 2a3437b0..0114ad80 100644 --- a/tests/compiler/unary.untouched.wat +++ b/tests/compiler/unary.untouched.wat @@ -92,16 +92,18 @@ global.get $unary/i i32.const 1 i32.add + local.tee $0 global.set $unary/i - global.get $unary/i + local.get $0 end global.set $unary/i block (result i32) global.get $unary/i i32.const 1 i32.sub + local.tee $0 global.set $unary/i - global.get $unary/i + local.get $0 end global.set $unary/i block (result i32) @@ -181,16 +183,18 @@ global.get $unary/I i64.const 1 i64.add + local.tee $1 global.set $unary/I - global.get $unary/I + local.get $1 end global.set $unary/I block (result i64) global.get $unary/I i64.const 1 i64.sub + local.tee $1 global.set $unary/I - global.get $unary/I + local.get $1 end global.set $unary/I block (result i64) @@ -257,16 +261,18 @@ global.get $unary/f f32.const 1 f32.add + local.tee $2 global.set $unary/f - global.get $unary/f + local.get $2 end global.set $unary/f block (result f32) global.get $unary/f f32.const 1 f32.sub + local.tee $2 global.set $unary/f - global.get $unary/f + local.get $2 end global.set $unary/f block (result f32) @@ -335,16 +341,18 @@ global.get $unary/F f64.const 1 f64.add + local.tee $3 global.set $unary/F - global.get $unary/F + local.get $3 end global.set $unary/F block (result f64) global.get $unary/F f64.const 1 f64.sub + local.tee $3 global.set $unary/F - global.get $unary/F + local.get $3 end global.set $unary/F block (result f64) diff --git a/tests/compiler/while.optimized.wat b/tests/compiler/while.optimized.wat index 6f28b556..41f4f950 100644 --- a/tests/compiler/while.optimized.wat +++ b/tests/compiler/while.optimized.wat @@ -146,9 +146,8 @@ global.get $while/m i32.const 1 i32.add + local.tee $0 global.set $while/m - global.get $while/m - local.set $0 end local.get $0 br_if $continue|3 diff --git a/tests/compiler/while.untouched.wat b/tests/compiler/while.untouched.wat index 68278d4a..ea0fecdc 100644 --- a/tests/compiler/while.untouched.wat +++ b/tests/compiler/while.untouched.wat @@ -176,8 +176,9 @@ global.get $while/m i32.const 1 i32.add + local.tee $0 global.set $while/m - global.get $while/m + local.get $0 else local.get $0 end diff --git a/tslint.json b/tslint.json index dbd2c28b..e075f8c7 100644 --- a/tslint.json +++ b/tslint.json @@ -7,12 +7,6 @@ "indent": { "options": ["spaces", 2] }, - "max-line-length": { - "options": [{ - "limit": 120, - "ignore-pattern": " *DiagnosticCode\\.[^ ]+,$" - }] - }, "member-access": { "options": ["no-public"] },