1
0
mirror of https://github.com/fluencelabs/assemblyscript synced 2025-06-17 17:01:37 +00:00

optimize array literal init, warn on unsupported inlining

This commit is contained in:
dcode
2019-03-19 08:20:10 +01:00
parent 83566a5512
commit 7693b543f4
67 changed files with 1808 additions and 5124 deletions

@ -633,17 +633,10 @@ export function compileCall(
return module.createI32(getExpressionId(expr) == ExpressionId.Const ? 1 : 0); return module.createI32(getExpressionId(expr) == ExpressionId.Const ? 1 : 0);
} }
case BuiltinSymbols.isManaged: { // isManaged<T>() -> bool case BuiltinSymbols.isManaged: { // isManaged<T>() -> bool
if (!compiler.program.gcImplemented) {
compiler.currentType = Type.bool;
return module.createI32(0);
}
let type = evaluateConstantType(compiler, typeArguments, operands, reportNode); let type = evaluateConstantType(compiler, typeArguments, operands, reportNode);
compiler.currentType = Type.bool; compiler.currentType = Type.bool;
if (!type) return module.createUnreachable(); if (!type) return module.createUnreachable();
let classType = type.classReference; return module.createI32(type.isManaged(compiler.program) ? 1 : 0);
return classType !== null && !classType.hasDecorator(DecoratorFlags.UNMANAGED)
? module.createI32(1)
: module.createI32(0);
} }
case BuiltinSymbols.sizeof: { // sizeof<T!>() -> usize case BuiltinSymbols.sizeof: { // sizeof<T!>() -> usize
compiler.currentType = compiler.options.usizeType; compiler.currentType = compiler.options.usizeType;
@ -4253,7 +4246,8 @@ export function compileBuiltinArraySetWithValue(
} }
} }
var typeIsManaged = type.is(TypeFlags.REFERENCE); // FIXME: .isManaged var program = compiler.program;
var isManaged = type.isManaged(program) && target.type.isManaged(program);
var usizeType = compiler.options.usizeType; var usizeType = compiler.options.usizeType;
var nativeSizeType = compiler.options.nativeSizeType; var nativeSizeType = compiler.options.nativeSizeType;
var thisExpr = compiler.compileExpression( var thisExpr = compiler.compileExpression(
@ -4263,7 +4257,7 @@ export function compileBuiltinArraySetWithValue(
WrapMode.NONE WrapMode.NONE
); );
var tempThis: Local | null = null; var tempThis: Local | null = null;
if (typeIsManaged) { if (isManaged) {
tempThis = compiler.currentFlow.getTempLocal(target.type, false); tempThis = compiler.currentFlow.getTempLocal(target.type, false);
thisExpr = module.createTeeLocal(tempThis.index, thisExpr); thisExpr = module.createTeeLocal(tempThis.index, thisExpr);
} }
@ -4293,8 +4287,8 @@ export function compileBuiltinArraySetWithValue(
} }
} }
// handle Array<Ref>: value = LINK<T, TArray>(value, this), value // handle Array<Ref>: value = LINK<T, TArray>(value, this)
if (typeIsManaged) { if (isManaged) {
let program = compiler.program; let program = compiler.program;
let linkPrototype = assert(program.linkPrototype); let linkPrototype = assert(program.linkPrototype);
let linkInstance = compiler.resolver.resolveFunction(linkPrototype, [ type, target.type ]); let linkInstance = compiler.resolver.resolveFunction(linkPrototype, [ type, target.type ]);
@ -4309,9 +4303,6 @@ export function compileBuiltinArraySetWithValue(
body.unshift( body.unshift(
module.createSetLocal(tempValue.index, valueExpr) module.createSetLocal(tempValue.index, valueExpr)
); );
body.push(
module.createGetLocal(tempValue.index, nativeSizeType)
);
previousFlow.freeTempLocal(tempValue); previousFlow.freeTempLocal(tempValue);
previousFlow.freeTempLocal(tempThis!); tempThis = null; previousFlow.freeTempLocal(tempThis!); tempThis = null;
compiler.currentFlow = previousFlow; compiler.currentFlow = previousFlow;

@ -3731,7 +3731,7 @@ export class Compiler extends DiagnosticEmitter {
if (!(instance && this.compileFunction(instance))) { if (!(instance && this.compileFunction(instance))) {
expr = module.createUnreachable(); expr = module.createUnreachable();
} else { } else {
expr = this.makeCallDirect(instance, [ leftExpr, rightExpr ]); expr = this.makeCallDirect(instance, [ leftExpr, rightExpr ], expression);
} }
break; break;
} }
@ -3980,7 +3980,7 @@ export class Compiler extends DiagnosticEmitter {
if (!(instance && this.compileFunction(instance))) { if (!(instance && this.compileFunction(instance))) {
expr = module.createUnreachable(); expr = module.createUnreachable();
} else { } else {
expr = this.makeCallDirect(instance, [ leftExpr, rightExpr ]); expr = this.makeCallDirect(instance, [ leftExpr, rightExpr ], expression);
} }
break; break;
} }
@ -4011,7 +4011,7 @@ export class Compiler extends DiagnosticEmitter {
if (!(instance && this.compileFunction(instance))) { if (!(instance && this.compileFunction(instance))) {
expr = module.createUnreachable(); expr = module.createUnreachable();
} else { } else {
expr = this.makeCallDirect(instance, [ leftExpr, rightExpr ]); expr = this.makeCallDirect(instance, [ leftExpr, rightExpr ], expression);
} }
break; break;
} }
@ -4904,7 +4904,7 @@ export class Compiler extends DiagnosticEmitter {
let setterInstance = this.resolver.resolveFunction(setterPrototype, null, makeMap(), ReportMode.REPORT); let setterInstance = this.resolver.resolveFunction(setterPrototype, null, makeMap(), ReportMode.REPORT);
if (!setterInstance) return module.createUnreachable(); if (!setterInstance) return module.createUnreachable();
// call just the setter if the return value isn't of interest // call just the setter if the return value isn't of interest
if (!tee) return this.makeCallDirect(setterInstance, [ valueWithCorrectType ]); if (!tee) return this.makeCallDirect(setterInstance, [ valueWithCorrectType ], expression);
// otherwise call the setter first, then the getter // otherwise call the setter first, then the getter
let getterPrototype = assert((<PropertyPrototype>target).getterPrototype); // must be present let getterPrototype = assert((<PropertyPrototype>target).getterPrototype); // must be present
let getterInstance = this.resolver.resolveFunction(getterPrototype, null, makeMap(), ReportMode.REPORT); let getterInstance = this.resolver.resolveFunction(getterPrototype, null, makeMap(), ReportMode.REPORT);
@ -4912,8 +4912,8 @@ export class Compiler extends DiagnosticEmitter {
let returnType = getterInstance.signature.returnType; let returnType = getterInstance.signature.returnType;
let nativeReturnType = returnType.toNativeType(); let nativeReturnType = returnType.toNativeType();
return module.createBlock(null, [ return module.createBlock(null, [
this.makeCallDirect(setterInstance, [ valueWithCorrectType ]), this.makeCallDirect(setterInstance, [ valueWithCorrectType ], expression),
this.makeCallDirect(getterInstance) // sets currentType this.makeCallDirect(getterInstance, null, expression) // sets currentType
], nativeReturnType); ], nativeReturnType);
} }
case ElementKind.PROPERTY: { // instance property case ElementKind.PROPERTY: { // instance property
@ -4932,7 +4932,7 @@ export class Compiler extends DiagnosticEmitter {
this.options.usizeType, this.options.usizeType,
WrapMode.NONE WrapMode.NONE
); );
return this.makeCallDirect(setterInstance, [ thisExpr, valueWithCorrectType ]); return this.makeCallDirect(setterInstance, [ thisExpr, valueWithCorrectType ], expression);
} }
// otherwise call the setter first, then the getter // otherwise call the setter first, then the getter
let getterInstance = assert((<Property>target).getterInstance); // must be present let getterInstance = assert((<Property>target).getterInstance); // must be present
@ -4949,10 +4949,10 @@ export class Compiler extends DiagnosticEmitter {
this.makeCallDirect(setterInstance, [ // set and remember the target this.makeCallDirect(setterInstance, [ // set and remember the target
module.createTeeLocal(tempLocalIndex, thisExpr), module.createTeeLocal(tempLocalIndex, thisExpr),
valueWithCorrectType valueWithCorrectType
]), ], expression),
this.makeCallDirect(getterInstance, [ // get from remembered target this.makeCallDirect(getterInstance, [ // get from remembered target
module.createGetLocal(tempLocalIndex, nativeReturnType) module.createGetLocal(tempLocalIndex, nativeReturnType)
]) ], expression)
], nativeReturnType); ], nativeReturnType);
} }
case ElementKind.CLASS: { case ElementKind.CLASS: {
@ -5012,18 +5012,18 @@ export class Compiler extends DiagnosticEmitter {
module.createTeeLocal(tempLocalTarget.index, thisExpr), module.createTeeLocal(tempLocalTarget.index, thisExpr),
module.createTeeLocal(tempLocalElement.index, elementExpr), module.createTeeLocal(tempLocalElement.index, elementExpr),
valueWithCorrectType valueWithCorrectType
]), ], expression),
this.makeCallDirect(indexedGet, [ this.makeCallDirect(indexedGet, [
module.createGetLocal(tempLocalTarget.index, tempLocalTarget.type.toNativeType()), module.createGetLocal(tempLocalTarget.index, tempLocalTarget.type.toNativeType()),
module.createGetLocal(tempLocalElement.index, tempLocalElement.type.toNativeType()) module.createGetLocal(tempLocalElement.index, tempLocalElement.type.toNativeType())
]) ], expression)
], returnType.toNativeType()); ], returnType.toNativeType());
} else { } else {
return this.makeCallDirect(indexedSet, [ return this.makeCallDirect(indexedSet, [
thisExpr, thisExpr,
elementExpr, elementExpr,
valueWithCorrectType valueWithCorrectType
]); ], expression);
} }
} }
// fall-through // fall-through
@ -5211,7 +5211,7 @@ export class Compiler extends DiagnosticEmitter {
makeMap<string,Type>(flow.contextualTypeArguments) makeMap<string,Type>(flow.contextualTypeArguments)
); );
if (!instance) return this.module.createUnreachable(); if (!instance) return this.module.createUnreachable();
return this.makeCallDirect(instance, argumentExprs); return this.makeCallDirect(instance, argumentExprs, expression);
// TODO: this skips inlining because inlining requires compiling its temporary locals in // TODO: this skips inlining because inlining requires compiling its temporary locals in
// the scope of the inlined flow. might need another mechanism to lock temp. locals early, // the scope of the inlined flow. might need another mechanism to lock temp. locals early,
// so inlining can be performed in `makeCallDirect` instead? // so inlining can be performed in `makeCallDirect` instead?
@ -5515,7 +5515,7 @@ export class Compiler extends DiagnosticEmitter {
); );
} }
assert(index == numArgumentsInclThis); assert(index == numArgumentsInclThis);
return this.makeCallDirect(instance, operands); return this.makeCallDirect(instance, operands, reportNode);
} }
// Depends on being pre-checked in compileCallDirect // Depends on being pre-checked in compileCallDirect
@ -5788,8 +5788,15 @@ export class Compiler extends DiagnosticEmitter {
/** Creates a direct call to the specified function. */ /** Creates a direct call to the specified function. */
makeCallDirect( makeCallDirect(
instance: Function, instance: Function,
operands: ExpressionRef[] | null = null operands: ExpressionRef[] | null,
reportNode: Node
): ExpressionRef { ): ExpressionRef {
if (instance.hasDecorator(DecoratorFlags.INLINE)) {
this.warning(
DiagnosticCode.TODO_Cannot_inline_inferred_calls_and_specific_internals_yet,
reportNode.range, instance.internalName
);
}
var numOperands = operands ? operands.length : 0; var numOperands = operands ? operands.length : 0;
var numArguments = numOperands; var numArguments = numOperands;
var minArguments = instance.signature.requiredParameters; var minArguments = instance.signature.requiredParameters;
@ -6619,40 +6626,37 @@ export class Compiler extends DiagnosticEmitter {
// find out whether all elements are constant (array is static) // find out whether all elements are constant (array is static)
var length = expressions.length; var length = expressions.length;
var compiledValues = new Array<ExpressionRef>(length); var constantValues: ExpressionRef[] | null = new Array<ExpressionRef>(length);
var constantValues = new Array<ExpressionRef>(length);
var nativeElementType = elementType.toNativeType(); var nativeElementType = elementType.toNativeType();
var isStatic = true;
for (let i = 0; i < length; ++i) { for (let i = 0; i < length; ++i) {
let expression = expressions[i]; let expression = expressions[i];
let expr = expression let expr = expression
? this.compileExpression(<Expression>expression, elementType, ConversionKind.IMPLICIT, WrapMode.NONE) ? this.compileExpression(<Expression>expression, elementType, ConversionKind.IMPLICIT, WrapMode.NONE)
: elementType.toNativeZero(module); : elementType.toNativeZero(module);
compiledValues[i] = expr; expr = module.precomputeExpression(expr);
if (isStatic) { if (getExpressionId(expr) == ExpressionId.Const) {
expr = module.precomputeExpression(expr); assert(getExpressionType(expr) == nativeElementType);
if (getExpressionId(expr) == ExpressionId.Const) { constantValues![i] = expr;
assert(getExpressionType(expr) == nativeElementType); } else {
constantValues[i] = expr; if (isConst) {
} else { this.warning(
if (isConst) { DiagnosticCode.Compiling_constant_with_non_constant_initializer_as_mutable,
this.warning( reportNode.range
DiagnosticCode.Compiling_constant_with_non_constant_initializer_as_mutable, );
reportNode.range
);
}
isStatic = false;
} }
constantValues = null;
break;
} }
} }
var program = this.program; var program = this.program;
var arrayPrototype = assert(program.arrayPrototype); var arrayPrototype = assert(program.arrayPrototype);
var arrayInstance = assert(this.resolver.resolveClass(arrayPrototype, [ elementType ])); var arrayInstance = assert(this.resolver.resolveClass(arrayPrototype, [ elementType ]));
var arrayBufferInstance = assert(program.arrayBufferInstance);
var arrayType = arrayInstance.type; var arrayType = arrayInstance.type;
// if the array is static, make a static arraybuffer segment // if the array is static, make a static arraybuffer segment
if (isStatic) { if (constantValues) {
let runtimeHeaderSize = program.runtimeHeaderSize; let runtimeHeaderSize = program.runtimeHeaderSize;
let bufferSegment = this.ensureStaticArrayBuffer(elementType, constantValues); let bufferSegment = this.ensureStaticArrayBuffer(elementType, constantValues);
let bufferAddress = i64_add(bufferSegment.offset, i64_new(runtimeHeaderSize)); let bufferAddress = i64_add(bufferSegment.offset, i64_new(runtimeHeaderSize));
@ -6669,7 +6673,6 @@ export class Compiler extends DiagnosticEmitter {
// otherwise allocate a new array header and make it wrap a copy of the static buffer // otherwise allocate a new array header and make it wrap a copy of the static buffer
} else { } else {
let arrayBufferInstance = assert(program.arrayBufferInstance);
let wrapArrayPrototype = assert(program.wrapArrayPrototype); let wrapArrayPrototype = assert(program.wrapArrayPrototype);
let wrapArrayInstance = this.resolver.resolveFunction(wrapArrayPrototype, [ elementType ]); let wrapArrayInstance = this.resolver.resolveFunction(wrapArrayPrototype, [ elementType ]);
if (!wrapArrayInstance) { if (!wrapArrayInstance) {
@ -6708,25 +6711,73 @@ export class Compiler extends DiagnosticEmitter {
} }
var nativeArrayType = arrayType.toNativeType(); var nativeArrayType = arrayType.toNativeType();
var flow = this.currentFlow; var flow = this.currentFlow;
var tempLocal = flow.parentFunction.addLocal(arrayType); // can't reuse a temp (used in compiledValues) var tempThis = flow.getTempLocal(arrayType, false);
var stmts = new Array<ExpressionRef>(2 + length); var tempDataStart = flow.getTempLocal(arrayBufferInstance.type);
var index = 0; var stmts = new Array<ExpressionRef>();
stmts[index++] = module.createSetLocal(tempLocal.index, // tempThis = new Array<T>(length)
this.makeCallDirect(assert(arrayInstance.constructorInstance), [ stmts.push(
module.createI32(0), // this module.createSetLocal(tempThis.index,
module.createI32(length) this.makeCallDirect(assert(arrayInstance.constructorInstance), [
]) module.createI32(0), // this
module.createI32(length)
], reportNode)
)
); );
for (let i = 0; i < length; ++i) { // tempData = tempThis.dataStart
stmts[index++] = this.makeCallDirect(setter, [ var dataStart = assert(arrayInstance.lookupInSelf("dataStart"));
module.createGetLocal(tempLocal.index, nativeArrayType), // this assert(dataStart.kind == ElementKind.FIELD);
module.createI32(i), stmts.push(
compiledValues[i] module.createSetLocal(tempDataStart.index,
]); module.createLoad(arrayType.byteSize, false,
module.createGetLocal(tempThis.index, nativeArrayType),
nativeArrayType,
(<Field>dataStart).memoryOffset
)
)
);
var isManaged = elementType.isManaged(program) && arrayType.isManaged(program);
var linkInstance = isManaged
? this.resolver.resolveFunction(assert(program.linkPrototype), [ elementType, arrayType ])
: null;
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 (!linkInstance) {
valueExpr = module.createUnreachable();
} else {
// value = LINK(value, tempThis)
let tempValue = flow.getAndFreeTempLocal(elementType, false);
let inlineFlow = Flow.createInline(flow.parentFunction, linkInstance);
inlineFlow.addScopedAlias(linkInstance.signature.getParameterName(0), elementType, tempValue.index);
inlineFlow.addScopedAlias(linkInstance.signature.getParameterName(1), arrayType, tempThis.index);
this.currentFlow = inlineFlow;
let body = this.compileFunctionBody(linkInstance);
stmts.push(
module.createSetLocal(tempValue.index, valueExpr)
);
valueExpr = module.createBlock(inlineFlow.inlineReturnLabel, body, nativeElementType);
this.currentFlow = flow;
}
}
// store<T>(tempData, value, immOffset)
stmts.push(
module.createStore(elementType.byteSize,
module.createGetLocal(tempDataStart.index, nativeArrayType),
valueExpr,
nativeElementType,
i << alignLog2
)
);
} }
assert(index + 1 == stmts.length); // -> tempThis
stmts[index] = module.createGetLocal(tempLocal.index, nativeArrayType); stmts.push(
flow.freeTempLocal(tempLocal); // but can be reused now module.createGetLocal(tempThis.index, nativeArrayType)
);
flow.freeTempLocal(tempThis); // but can be reused now
flow.freeTempLocal(tempDataStart);
this.currentType = arrayType; this.currentType = arrayType;
return module.createBlock(null, stmts, nativeArrayType); return module.createBlock(null, stmts, nativeArrayType);
} }
@ -6942,7 +6993,7 @@ export class Compiler extends DiagnosticEmitter {
// TODO: base constructor might be inlined, but makeCallDirect can't do this // TODO: base constructor might be inlined, but makeCallDirect can't do this
stmts.push( stmts.push(
module.createSetLocal(0, module.createSetLocal(0,
this.makeCallDirect(assert(baseClass.constructorInstance), operands) this.makeCallDirect(assert(baseClass.constructorInstance), operands, reportNode)
) )
); );
} }

@ -34,6 +34,7 @@ export enum DiagnosticCode {
Module_cannot_have_multiple_start_functions = 221, Module_cannot_have_multiple_start_functions = 221,
_0_must_be_a_value_between_1_and_2_inclusive = 222, _0_must_be_a_value_between_1_and_2_inclusive = 222,
_0_must_be_a_power_of_two = 223, _0_must_be_a_power_of_two = 223,
TODO_Cannot_inline_inferred_calls_and_specific_internals_yet = 224,
Unterminated_string_literal = 1002, Unterminated_string_literal = 1002,
Identifier_expected = 1003, Identifier_expected = 1003,
_0_expected = 1005, _0_expected = 1005,
@ -169,6 +170,7 @@ export function diagnosticCodeToString(code: DiagnosticCode): string {
case 221: return "Module cannot have multiple start functions."; case 221: return "Module cannot have multiple start functions.";
case 222: return "'{0}' must be a value between '{1}' and '{2}' inclusive."; case 222: return "'{0}' must be a value between '{1}' and '{2}' inclusive.";
case 223: return "'{0}' must be a power of two."; case 223: return "'{0}' must be a power of two.";
case 224: return "TODO: Cannot inline inferred calls and specific internals yet.";
case 1002: return "Unterminated string literal."; case 1002: return "Unterminated string literal.";
case 1003: return "Identifier expected."; case 1003: return "Identifier expected.";
case 1005: return "'{0}' expected."; case 1005: return "'{0}' expected.";

@ -26,6 +26,7 @@
"Module cannot have multiple start functions.": 221, "Module cannot have multiple start functions.": 221,
"'{0}' must be a value between '{1}' and '{2}' inclusive.": 222, "'{0}' must be a value between '{1}' and '{2}' inclusive.": 222,
"'{0}' must be a power of two.": 223, "'{0}' must be a power of two.": 223,
"TODO: Cannot inline inferred calls and specific internals yet.": 224,
"Unterminated string literal.": 1002, "Unterminated string literal.": 1002,
"Identifier expected.": 1003, "Identifier expected.": 1003,

@ -72,8 +72,11 @@ export class Array<T> extends ArrayBufferView {
@operator("[]=") // unchecked is built-in @operator("[]=") // unchecked is built-in
private __set(index: i32, value: T): void { private __set(index: i32, value: T): void {
ensureCapacity(this, index + 1, alignof<T>()); ensureCapacity(this, index + 1, alignof<T>());
store<T>(this.dataStart + (<usize>index << alignof<T>()), value); store<T>(this.dataStart + (<usize>index << alignof<T>()),
if (isManaged<T>()) LINK(value, this); isManaged<T>()
? LINK<T,this>(value, this)
: value
);
if (index >= this.length_) this.length_ = index + 1; if (index >= this.length_) this.length_ = index + 1;
} }
@ -131,8 +134,11 @@ export class Array<T> extends ArrayBufferView {
var newLength = this.length_ + 1; var newLength = this.length_ + 1;
ensureCapacity(this, newLength, alignof<T>()); ensureCapacity(this, newLength, alignof<T>());
this.length_ = newLength; this.length_ = newLength;
store<T>(this.dataStart + (<usize>(newLength - 1) << alignof<T>()), element); store<T>(this.dataStart + (<usize>(newLength - 1) << alignof<T>()),
if (isManaged<T>()) LINK(element, this); isManaged<T>()
? LINK<T,this>(element, this)
: element
);
return newLength; return newLength;
} }
@ -146,15 +152,13 @@ export class Array<T> extends ArrayBufferView {
let thisStart = this.dataStart; let thisStart = this.dataStart;
for (let offset: usize = 0; offset < thisSize; offset += sizeof<T>()) { for (let offset: usize = 0; offset < thisSize; offset += sizeof<T>()) {
let element = load<T>(thisStart + offset); let element = load<T>(thisStart + offset);
store<T>(outStart + offset, element); store<T>(outStart + offset, LINK<T,Array<T>>(element, out));
LINK(element, out);
} }
let otherStart = other.dataStart; let otherStart = other.dataStart;
let otherSize = <usize>otherLen << alignof<T>(); let otherSize = <usize>otherLen << alignof<T>();
for (let offset: usize = 0; offset < otherSize; offset += sizeof<T>()) { for (let offset: usize = 0; offset < otherSize; offset += sizeof<T>()) {
let element = load<T>(otherStart + offset); let element = load<T>(otherStart + offset);
store<T>(outStart + thisSize + offset, element); store<T>(outStart + thisSize + offset, LINK<T,Array<T>>(element, out));
LINK(element, out);
} }
} else { } else {
memory.copy(outStart, this.dataStart, thisSize); memory.copy(outStart, this.dataStart, thisSize);
@ -211,8 +215,11 @@ export class Array<T> extends ArrayBufferView {
for (let index = 0; index < min(length, this.length_); ++index) { for (let index = 0; index < min(length, this.length_); ++index) {
let value = load<T>(this.dataStart + (<usize>index << alignof<T>())); let value = load<T>(this.dataStart + (<usize>index << alignof<T>()));
let result = callbackfn(value, index, this); let result = callbackfn(value, index, this);
store<U>(outStart + (<usize>index << alignof<U>()), result); store<U>(outStart + (<usize>index << alignof<U>()),
if (isManaged<U>()) LINK(result, out); isManaged<U>()
? LINK<U,Array<U>>(result, out)
: result
);
} }
return out; return out;
} }
@ -283,8 +290,11 @@ export class Array<T> extends ArrayBufferView {
base, base,
<usize>(newLength - 1) << alignof<T>() <usize>(newLength - 1) << alignof<T>()
); );
store<T>(base, element); store<T>(base,
if (isManaged<T>()) LINK(element, this); isManaged<T>()
? LINK<T,this>(element, this)
: element
);
this.length_ = newLength; this.length_ = newLength;
return newLength; return newLength;
} }
@ -300,8 +310,11 @@ export class Array<T> extends ArrayBufferView {
for (let i = 0; i < length; ++i) { for (let i = 0; i < length; ++i) {
let offset = <usize>i << alignof<T>(); let offset = <usize>i << alignof<T>();
let element = load<T>(thisBase + offset); let element = load<T>(thisBase + offset);
store<T>(sliceBase + offset, element); store<T>(sliceBase + offset,
if (isManaged<T>()) LINK(element, slice); isManaged<T>()
? LINK<T,Array<T>>(element, slice)
: element
);
} }
return slice; return slice;
} }
@ -316,8 +329,11 @@ export class Array<T> extends ArrayBufferView {
var thisBase = thisStart + (<usize>start << alignof<T>()); var thisBase = thisStart + (<usize>start << alignof<T>());
for (let i = 0; i < deleteCount; ++i) { for (let i = 0; i < deleteCount; ++i) {
let element = load<T>(thisBase + (<usize>i << alignof<T>())); let element = load<T>(thisBase + (<usize>i << alignof<T>()));
store<T>(spliceStart + (<usize>i << alignof<T>()), element); store<T>(spliceStart + (<usize>i << alignof<T>()),
if (isManaged<T>()) LINK(element, splice); isManaged<T>()
? LINK<T,Array<T>>(element, splice)
: element
);
} }
memory.copy( memory.copy(
splice.dataStart, splice.dataStart,

@ -2,7 +2,7 @@ import { ALLOCATE, REGISTER, HEADER, HEADER_SIZE, MAX_BYTELENGTH } from "./runti
@sealed export class ArrayBuffer { @sealed export class ArrayBuffer {
@inline static isView<T>(value: T): bool { static isView<T>(value: T): bool {
if (value) { if (value) {
if (value instanceof Int8Array) return true; if (value instanceof Int8Array) return true;
if (value instanceof Uint8Array) return true; if (value instanceof Uint8Array) return true;

@ -58,14 +58,17 @@ export declare function isConstant(expression: void): bool;
@builtin @builtin
export declare function isManaged<T>(value?: T): bool; export declare function isManaged<T>(value?: T): bool;
// @ts-ignore: decorator export function isNaN<T extends number>(value: T): bool {
@inline if (!isFloat<T>()) {
export function isNaN<T>(value: T): bool { return value != value; } if (!isInteger<T>()) ERROR("numeric type expected");
}
return value != value;
}
// @ts-ignore: decorator export function isFinite<T extends number>(value: T): bool {
@inline if (!isFloat<T>()) {
export function isFinite<T>(value: T): bool { if (!isInteger<T>()) ERROR("numeric type expected");
// @ts-ignore: type }
return value - value == 0; return value - value == 0;
} }

@ -119,15 +119,18 @@ export class Map<K,V> {
entry = changetype<MapEntry<K,V>>( entry = changetype<MapEntry<K,V>>(
changetype<usize>(entries) + this.entriesOffset++ * ENTRY_SIZE<K,V>() changetype<usize>(entries) + this.entriesOffset++ * ENTRY_SIZE<K,V>()
); );
entry.key = key; // link with the map (entry is unmanaged)
entry.value = value; entry.key = isManaged<K>()
? LINK<K,this>(key, this)
: key;
entry.value = isManaged<V>()
? LINK<V,this>(value, this)
: value;
++this.entriesCount; ++this.entriesCount;
// link with previous entry in bucket // link with previous entry in bucket
let bucketPtrBase = changetype<usize>(this.buckets) + <usize>(hashCode & this.bucketsMask) * BUCKET_SIZE; let bucketPtrBase = changetype<usize>(this.buckets) + <usize>(hashCode & this.bucketsMask) * BUCKET_SIZE;
entry.taggedNext = load<usize>(bucketPtrBase); entry.taggedNext = load<usize>(bucketPtrBase);
store<usize>(bucketPtrBase, changetype<usize>(entry)); store<usize>(bucketPtrBase, changetype<usize>(entry));
if (isManaged<K>()) LINK(key, this);
if (isManaged<V>()) LINK(value, this);
} }
} }

@ -137,10 +137,11 @@ function doRegister(ref: usize, classId: u32): usize {
/** Links a registered object with the (registered) object now referencing it. */ /** Links a registered object with the (registered) object now referencing it. */
// @ts-ignore: decorator // @ts-ignore: decorator
@unsafe @inline @unsafe @inline
export function LINK<T,TParent>(ref: T, parentRef: TParent): void { export function LINK<T,TParent>(ref: T, parentRef: TParent): T {
if (!isReference<T>()) ERROR("reference expected"); if (!isManaged<T>()) ERROR("managed reference expected");
if (!isReference<TParent>()) ERROR("reference expected"); if (!isManaged<TParent>()) ERROR("managed reference expected");
doLink(changetype<usize>(ref), changetype<usize>(parentRef)); doLink(changetype<usize>(ref), changetype<usize>(parentRef));
return ref;
} }
function doLink(ref: usize, parentRef: usize): void { function doLink(ref: usize, parentRef: usize): void {

@ -88,11 +88,11 @@ export class Set<K> {
} }
has(key: K): bool { has(key: K): bool {
return this.find(key, HASH(key)) !== null; return this.find(key, HASH<K>(key)) !== null;
} }
add(key: K): void { add(key: K): void {
var hashCode = HASH(key); var hashCode = HASH<K>(key);
var entry = this.find(key, hashCode); var entry = this.find(key, hashCode);
if (!entry) { if (!entry) {
// check if rehashing is necessary // check if rehashing is necessary
@ -108,13 +108,15 @@ export class Set<K> {
entry = changetype<SetEntry<K>>( entry = changetype<SetEntry<K>>(
changetype<usize>(entries) + this.entriesOffset++ * ENTRY_SIZE<K>() changetype<usize>(entries) + this.entriesOffset++ * ENTRY_SIZE<K>()
); );
entry.key = key; // link with the set itself (entry is unmanaged)
entry.key = isManaged<K>()
? LINK<K,this>(key, this)
: key;
++this.entriesCount; ++this.entriesCount;
// link with previous entry in bucket // link with previous entry in bucket
let bucketPtrBase = changetype<usize>(this.buckets) + <usize>(hashCode & this.bucketsMask) * BUCKET_SIZE; let bucketPtrBase = changetype<usize>(this.buckets) + <usize>(hashCode & this.bucketsMask) * BUCKET_SIZE;
entry.taggedNext = load<usize>(bucketPtrBase); entry.taggedNext = load<usize>(bucketPtrBase);
store<usize>(bucketPtrBase, changetype<usize>(entry)); store<usize>(bucketPtrBase, changetype<usize>(entry));
if (isManaged<K>()) LINK(key, this);
} }
} }

@ -362,8 +362,12 @@ import { compareImpl, parse, CharCode, isWhiteSpaceOrLineTerminator } from "./ut
charStr, charStr,
load<u16>(changetype<usize>(this) + (<usize>i << 1)) load<u16>(changetype<usize>(this) + (<usize>i << 1))
); );
store<usize>(resultStart + (<usize>i << alignof<usize>()), REGISTER<String>(charStr)); // result[i] = charStr // result[i] = charStr
if (isManaged<String>()) LINK(changetype<String>(charStr), result); store<String>(resultStart + (<usize>i << alignof<usize>()),
isManaged<String>()
? LINK<String,Array<String>>(REGISTER<String>(charStr), result)
: REGISTER<String>(charStr)
);
} }
return result; return result;
} else if (!length) { } else if (!length) {

@ -620,8 +620,8 @@ export function dtoa_core(buffer: usize, value: f64): i32 {
export function dtoa(value: f64): String { export function dtoa(value: f64): String {
if (value == 0) return "0.0"; if (value == 0) return "0.0";
if (!isFinite(value)) { if (!isFinite<f64>(value)) {
if (isNaN(value)) return "NaN"; if (isNaN<f64>(value)) return "NaN";
return select<String>("-Infinity", "Infinity", value < 0); return select<String>("-Infinity", "Infinity", value < 0);
} }
var temp = ALLOCATE(MAX_DOUBLE_LENGTH << 1); var temp = ALLOCATE(MAX_DOUBLE_LENGTH << 1);
@ -681,8 +681,8 @@ export function dtoa_stream(buffer: usize, offset: usize, value: f64): u32 {
store<u16>(buffer, CharCode._0, 4); store<u16>(buffer, CharCode._0, 4);
return 3; return 3;
} }
if (!isFinite(value)) { if (!isFinite<f64>(value)) {
if (isNaN(value)) { if (isNaN<f64>(value)) {
store<u16>(buffer, CharCode.N); store<u16>(buffer, CharCode.N);
store<u16>(buffer, CharCode.a, 2); store<u16>(buffer, CharCode.a, 2);
store<u16>(buffer, CharCode.N, 4); store<u16>(buffer, CharCode.N, 4);

@ -83,24 +83,24 @@
local.get $0 local.get $0
i32.reinterpret_f32 i32.reinterpret_f32
local.tee $1 local.tee $1
i32.const -2147483648
i32.and
local.set $4
local.get $1
i32.const 23 i32.const 23
i32.shr_u i32.shr_u
i32.const 255 i32.const 255
i32.and i32.and
local.set $2 local.tee $2
local.get $1
i32.const -2147483648
i32.and
local.set $4
local.get $2
i32.const 255 i32.const 255
i32.eq i32.eq
local.tee $3 local.tee $3
if (result i32) i32.eqz
local.get $3 if
else
i32.const 0 i32.const 0
local.set $3
end end
local.get $3
if if
local.get $0 local.get $0
local.get $0 local.get $0
@ -151,7 +151,7 @@
local.get $1 local.get $1
i32.const 8388608 i32.const 8388608
i32.ge_u i32.ge_u
if if (result i32)
local.get $1 local.get $1
i32.const 8388608 i32.const 8388608
i32.eq i32.eq
@ -159,9 +159,9 @@
local.get $1 local.get $1
i32.const 8388608 i32.const 8388608
i32.sub i32.sub
local.set $1 else
local.get $1
end end
local.get $1
i32.const 1 i32.const 1
i32.shl i32.shl
local.set $1 local.set $1
@ -254,29 +254,29 @@
(local $1 i64) (local $1 i64)
(local $2 i64) (local $2 i64)
(local $3 i64) (local $3 i64)
(local $4 i64) (local $4 i32)
(local $5 i32) (local $5 i64)
local.get $0 local.get $0
i64.reinterpret_f64 i64.reinterpret_f64
local.tee $1 local.tee $1
i64.const 63
i64.shr_u
local.set $5
local.get $1
i64.const 52 i64.const 52
i64.shr_u i64.shr_u
i64.const 2047 i64.const 2047
i64.and i64.and
local.set $2 local.tee $2
local.get $1
i64.const 63
i64.shr_u
local.set $4
local.get $2
i64.const 2047 i64.const 2047
i64.eq i64.eq
local.tee $5 local.tee $4
if (result i32) i32.eqz
local.get $5 if
else
i32.const 0 i32.const 0
local.set $4
end end
local.get $4
if if
local.get $0 local.get $0
local.get $0 local.get $0
@ -330,7 +330,7 @@
local.get $1 local.get $1
i64.const 4503599627370496 i64.const 4503599627370496
i64.ge_u i64.ge_u
if if (result i64)
local.get $1 local.get $1
i64.const 4503599627370496 i64.const 4503599627370496
i64.eq i64.eq
@ -338,9 +338,9 @@
local.get $1 local.get $1
i64.const 4503599627370496 i64.const 4503599627370496
i64.sub i64.sub
local.set $1 else
local.get $1
end end
local.get $1
i64.const 1 i64.const 1
i64.shl i64.shl
local.set $1 local.set $1
@ -395,7 +395,7 @@
i64.add i64.add
i64.shr_u i64.shr_u
end end
local.get $4 local.get $5
i64.const 63 i64.const 63
i64.shl i64.shl
i64.or i64.or

@ -2,7 +2,9 @@
(type $FUNCSIG$ddd (func (param f64 f64) (result f64))) (type $FUNCSIG$ddd (func (param f64 f64) (result f64)))
(type $FUNCSIG$ddi (func (param f64 i32) (result f64))) (type $FUNCSIG$ddi (func (param f64 i32) (result f64)))
(type $FUNCSIG$fff (func (param f32 f32) (result f32))) (type $FUNCSIG$fff (func (param f32 f32) (result f32)))
(type $FUNCSIG$if (func (param f32) (result i32)))
(type $FUNCSIG$ffi (func (param f32 i32) (result f32))) (type $FUNCSIG$ffi (func (param f32 i32) (result f32)))
(type $FUNCSIG$id (func (param f64) (result i32)))
(type $FUNCSIG$v (func)) (type $FUNCSIG$v (func))
(memory $0 0) (memory $0 0)
(table $0 1 funcref) (table $0 1 funcref)
@ -1195,7 +1197,12 @@
local.get $16 local.get $16
f64.mul f64.mul
) )
(func $~lib/math/NativeMathf.mod (; 2 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) (func $~lib/builtins/isNaN<f32> (; 2 ;) (type $FUNCSIG$if) (param $0 f32) (result i32)
local.get $0
local.get $0
f32.ne
)
(func $~lib/math/NativeMathf.mod (; 3 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -1248,13 +1255,8 @@
local.get $8 local.get $8
else else
local.get $1 local.get $1
local.set $9 call $~lib/builtins/isNaN<f32>
local.get $9
local.get $9
f32.ne
end end
i32.const 0
i32.ne
if if
local.get $0 local.get $0
local.get $1 local.get $1
@ -1451,7 +1453,7 @@
local.get $2 local.get $2
f32.reinterpret_i32 f32.reinterpret_i32
) )
(func $~lib/math/NativeMathf.scalbn (; 3 ;) (type $FUNCSIG$ffi) (param $0 f32) (param $1 i32) (result f32) (func $~lib/math/NativeMathf.scalbn (; 4 ;) (type $FUNCSIG$ffi) (param $0 f32) (param $1 i32) (result f32)
(local $2 f32) (local $2 f32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -1541,7 +1543,7 @@
f32.reinterpret_i32 f32.reinterpret_i32
f32.mul f32.mul
) )
(func $~lib/math/NativeMathf.pow (; 4 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) (func $~lib/math/NativeMathf.pow (; 5 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -2479,7 +2481,12 @@
local.get $11 local.get $11
f32.mul f32.mul
) )
(func $~lib/math/NativeMath.mod (; 5 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) (func $~lib/builtins/isNaN<f64> (; 6 ;) (type $FUNCSIG$id) (param $0 f64) (result i32)
local.get $0
local.get $0
f64.ne
)
(func $~lib/math/NativeMath.mod (; 7 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64)
(local $2 i64) (local $2 i64)
(local $3 i64) (local $3 i64)
(local $4 i64) (local $4 i64)
@ -2532,13 +2539,8 @@
local.get $8 local.get $8
else else
local.get $1 local.get $1
local.set $9 call $~lib/builtins/isNaN<f64>
local.get $9
local.get $9
f64.ne
end end
i32.const 0
i32.ne
if if
local.get $0 local.get $0
local.get $1 local.get $1
@ -2737,7 +2739,7 @@
local.get $2 local.get $2
f64.reinterpret_i64 f64.reinterpret_i64
) )
(func $start:binary (; 6 ;) (type $FUNCSIG$v) (func $start:binary (; 8 ;) (type $FUNCSIG$v)
global.get $binary/i global.get $binary/i
i32.const 1 i32.const 1
i32.lt_s i32.lt_s
@ -3345,9 +3347,9 @@
call $~lib/math/NativeMath.pow call $~lib/math/NativeMath.pow
global.set $binary/F global.set $binary/F
) )
(func $start (; 7 ;) (type $FUNCSIG$v) (func $start (; 9 ;) (type $FUNCSIG$v)
call $start:binary call $start:binary
) )
(func $null (; 8 ;) (type $FUNCSIG$v) (func $null (; 10 ;) (type $FUNCSIG$v)
) )
) )

@ -1,5 +1,7 @@
(module (module
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(type $FUNCSIG$if (func (param f32) (result i32)))
(type $FUNCSIG$id (func (param f64) (result i32)))
(type $FUNCSIG$vii (func (param i32 i32))) (type $FUNCSIG$vii (func (param i32 i32)))
(type $FUNCSIG$v (func)) (type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
@ -54,16 +56,38 @@
(export "table" (table $0)) (export "table" (table $0))
(export "test" (func $builtins/test)) (export "test" (func $builtins/test))
(start $start) (start $start)
(func $start:builtins~anonymous|0 (; 1 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/builtins/isNaN<f32> (; 1 ;) (type $FUNCSIG$if) (param $0 f32) (result i32)
local.get $0
local.get $0
f32.ne
)
(func $~lib/builtins/isFinite<f32> (; 2 ;) (type $FUNCSIG$if) (param $0 f32) (result i32)
local.get $0
local.get $0
f32.sub
f32.const 0
f32.eq
)
(func $~lib/builtins/isNaN<f64> (; 3 ;) (type $FUNCSIG$id) (param $0 f64) (result i32)
local.get $0
local.get $0
f64.ne
)
(func $~lib/builtins/isFinite<f64> (; 4 ;) (type $FUNCSIG$id) (param $0 f64) (result i32)
local.get $0
local.get $0
f64.sub
f64.const 0
f64.eq
)
(func $start:builtins~anonymous|0 (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
nop nop
) )
(func $start:builtins (; 2 ;) (type $FUNCSIG$v) (func $start:builtins (; 6 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
(local $2 i64) (local $2 i64)
(local $3 i64) (local $3 i64)
(local $4 f32)
(local $5 f64)
i32.const 1 i32.const 1
i32.eqz i32.eqz
if if
@ -728,15 +752,8 @@
f32.const 1.25 f32.const 1.25
f32.trunc f32.trunc
drop drop
block $~lib/builtins/isNaN<f32>|inlined.0 (result i32) f32.const 1.25
f32.const 1.25 call $~lib/builtins/isNaN<f32>
local.set $4
local.get $4
local.get $4
f32.ne
end
i32.const 0
i32.ne
i32.const 0 i32.const 0
i32.eq i32.eq
i32.eqz i32.eqz
@ -748,15 +765,8 @@
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
end end
block $~lib/builtins/isNaN<f32>|inlined.1 (result i32) f32.const nan:0x400000
f32.const nan:0x400000 call $~lib/builtins/isNaN<f32>
local.set $4
local.get $4
local.get $4
f32.ne
end
i32.const 0
i32.ne
i32.const 1 i32.const 1
i32.eq i32.eq
i32.eqz i32.eqz
@ -768,17 +778,8 @@
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
end end
block $~lib/builtins/isFinite<f32>|inlined.0 (result i32) f32.const 1.25
f32.const 1.25 call $~lib/builtins/isFinite<f32>
local.set $4
local.get $4
local.get $4
f32.sub
f32.const 0
f32.eq
end
i32.const 0
i32.ne
i32.const 1 i32.const 1
i32.eq i32.eq
i32.eqz i32.eqz
@ -790,17 +791,8 @@
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
end end
block $~lib/builtins/isFinite<f32>|inlined.1 (result i32) f32.const inf
f32.const inf call $~lib/builtins/isFinite<f32>
local.set $4
local.get $4
local.get $4
f32.sub
f32.const 0
f32.eq
end
i32.const 0
i32.ne
i32.const 0 i32.const 0
i32.eq i32.eq
i32.eqz i32.eqz
@ -812,18 +804,9 @@
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
end end
block $~lib/builtins/isFinite<f32>|inlined.2 (result i32) f32.const inf
f32.const inf f32.neg
f32.neg call $~lib/builtins/isFinite<f32>
local.set $4
local.get $4
local.get $4
f32.sub
f32.const 0
f32.eq
end
i32.const 0
i32.ne
i32.const 0 i32.const 0
i32.eq i32.eq
i32.eqz i32.eqz
@ -835,17 +818,8 @@
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
end end
block $~lib/builtins/isFinite<f32>|inlined.3 (result i32) f32.const nan:0x400000
f32.const nan:0x400000 call $~lib/builtins/isFinite<f32>
local.set $4
local.get $4
local.get $4
f32.sub
f32.const 0
f32.eq
end
i32.const 0
i32.ne
i32.const 0 i32.const 0
i32.eq i32.eq
i32.eqz i32.eqz
@ -891,27 +865,11 @@
f32.const 1.25 f32.const 1.25
f32.trunc f32.trunc
global.set $builtins/f global.set $builtins/f
block $~lib/builtins/isNaN<f32>|inlined.2 (result i32) f32.const 1.25
f32.const 1.25 call $~lib/builtins/isNaN<f32>
local.set $4
local.get $4
local.get $4
f32.ne
end
i32.const 0
i32.ne
global.set $builtins/b global.set $builtins/b
block $~lib/builtins/isFinite<f32>|inlined.4 (result i32) f32.const 1.25
f32.const 1.25 call $~lib/builtins/isFinite<f32>
local.set $4
local.get $4
local.get $4
f32.sub
f32.const 0
f32.eq
end
i32.const 0
i32.ne
global.set $builtins/b global.set $builtins/b
f64.const nan:0x8000000000000 f64.const nan:0x8000000000000
drop drop
@ -951,15 +909,8 @@
f64.const 1.25 f64.const 1.25
f64.trunc f64.trunc
drop drop
block $~lib/builtins/isNaN<f64>|inlined.0 (result i32) f64.const 1.25
f64.const 1.25 call $~lib/builtins/isNaN<f64>
local.set $5
local.get $5
local.get $5
f64.ne
end
i32.const 0
i32.ne
i32.const 0 i32.const 0
i32.eq i32.eq
i32.eqz i32.eqz
@ -971,15 +922,8 @@
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
end end
block $~lib/builtins/isNaN<f64>|inlined.1 (result i32) f64.const nan:0x8000000000000
f64.const nan:0x8000000000000 call $~lib/builtins/isNaN<f64>
local.set $5
local.get $5
local.get $5
f64.ne
end
i32.const 0
i32.ne
i32.const 1 i32.const 1
i32.eq i32.eq
i32.eqz i32.eqz
@ -991,17 +935,8 @@
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
end end
block $~lib/builtins/isFinite<f64>|inlined.0 (result i32) f64.const 1.25
f64.const 1.25 call $~lib/builtins/isFinite<f64>
local.set $5
local.get $5
local.get $5
f64.sub
f64.const 0
f64.eq
end
i32.const 0
i32.ne
i32.const 1 i32.const 1
i32.eq i32.eq
i32.eqz i32.eqz
@ -1013,17 +948,8 @@
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
end end
block $~lib/builtins/isFinite<f64>|inlined.1 (result i32) f64.const inf
f64.const inf call $~lib/builtins/isFinite<f64>
local.set $5
local.get $5
local.get $5
f64.sub
f64.const 0
f64.eq
end
i32.const 0
i32.ne
i32.const 0 i32.const 0
i32.eq i32.eq
i32.eqz i32.eqz
@ -1035,18 +961,9 @@
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
end end
block $~lib/builtins/isFinite<f64>|inlined.2 (result i32) f64.const inf
f64.const inf f64.neg
f64.neg call $~lib/builtins/isFinite<f64>
local.set $5
local.get $5
local.get $5
f64.sub
f64.const 0
f64.eq
end
i32.const 0
i32.ne
i32.const 0 i32.const 0
i32.eq i32.eq
i32.eqz i32.eqz
@ -1058,17 +975,8 @@
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
end end
block $~lib/builtins/isFinite<f64>|inlined.3 (result i32) f64.const nan:0x8000000000000
f64.const nan:0x8000000000000 call $~lib/builtins/isFinite<f64>
local.set $5
local.get $5
local.get $5
f64.sub
f64.const 0
f64.eq
end
i32.const 0
i32.ne
i32.const 0 i32.const 0
i32.eq i32.eq
i32.eqz i32.eqz
@ -1114,27 +1022,11 @@
f64.const 1.25 f64.const 1.25
f64.trunc f64.trunc
global.set $builtins/F global.set $builtins/F
block $~lib/builtins/isNaN<f64>|inlined.2 (result i32) f64.const 1.25
f64.const 1.25 call $~lib/builtins/isNaN<f64>
local.set $5
local.get $5
local.get $5
f64.ne
end
i32.const 0
i32.ne
global.set $builtins/b global.set $builtins/b
block $~lib/builtins/isFinite<f64>|inlined.4 (result i32) f64.const 1.25
f64.const 1.25 call $~lib/builtins/isFinite<f64>
local.set $5
local.get $5
local.get $5
f64.sub
f64.const 0
f64.eq
end
i32.const 0
i32.ne
global.set $builtins/b global.set $builtins/b
i32.const 8 i32.const 8
i32.load i32.load
@ -1664,15 +1556,8 @@
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
end end
block $~lib/builtins/isNaN<f32>|inlined.3 (result i32) f32.const nan:0x400000
f32.const nan:0x400000 call $~lib/builtins/isNaN<f32>
local.set $4
local.get $4
local.get $4
f32.ne
end
i32.const 0
i32.ne
i32.eqz i32.eqz
if if
i32.const 0 i32.const 0
@ -1682,15 +1567,8 @@
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
end end
block $~lib/builtins/isNaN<f64>|inlined.3 (result i32) f64.const nan:0x8000000000000
f64.const nan:0x8000000000000 call $~lib/builtins/isNaN<f64>
local.set $5
local.get $5
local.get $5
f64.ne
end
i32.const 0
i32.ne
i32.eqz i32.eqz
if if
i32.const 0 i32.const 0
@ -1700,17 +1578,8 @@
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
end end
block $~lib/builtins/isFinite<f32>|inlined.5 (result i32) f32.const nan:0x400000
f32.const nan:0x400000 call $~lib/builtins/isFinite<f32>
local.set $4
local.get $4
local.get $4
f32.sub
f32.const 0
f32.eq
end
i32.const 0
i32.ne
i32.eqz i32.eqz
i32.eqz i32.eqz
if if
@ -1721,17 +1590,8 @@
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
end end
block $~lib/builtins/isFinite<f32>|inlined.6 (result i32) f32.const inf
f32.const inf call $~lib/builtins/isFinite<f32>
local.set $4
local.get $4
local.get $4
f32.sub
f32.const 0
f32.eq
end
i32.const 0
i32.ne
i32.eqz i32.eqz
i32.eqz i32.eqz
if if
@ -1742,17 +1602,8 @@
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
end end
block $~lib/builtins/isFinite<f64>|inlined.5 (result i32) f64.const nan:0x8000000000000
f64.const nan:0x8000000000000 call $~lib/builtins/isFinite<f64>
local.set $5
local.get $5
local.get $5
f64.sub
f64.const 0
f64.eq
end
i32.const 0
i32.ne
i32.eqz i32.eqz
i32.eqz i32.eqz
if if
@ -1763,17 +1614,8 @@
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
end end
block $~lib/builtins/isFinite<f64>|inlined.6 (result i32) f64.const inf
f64.const inf call $~lib/builtins/isFinite<f64>
local.set $5
local.get $5
local.get $5
f64.sub
f64.const 0
f64.eq
end
i32.const 0
i32.ne
i32.eqz i32.eqz
i32.eqz i32.eqz
if if
@ -1784,17 +1626,8 @@
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
end end
block $~lib/builtins/isFinite<f32>|inlined.7 (result i32) f32.const 0
f32.const 0 call $~lib/builtins/isFinite<f32>
local.set $4
local.get $4
local.get $4
f32.sub
f32.const 0
f32.eq
end
i32.const 0
i32.ne
i32.eqz i32.eqz
if if
i32.const 0 i32.const 0
@ -1804,17 +1637,8 @@
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
end end
block $~lib/builtins/isFinite<f64>|inlined.7 (result i32) f64.const 0
f64.const 0 call $~lib/builtins/isFinite<f64>
local.set $5
local.get $5
local.get $5
f64.sub
f64.const 0
f64.eq
end
i32.const 0
i32.ne
i32.eqz i32.eqz
if if
i32.const 0 i32.const 0
@ -2391,21 +2215,16 @@
f64.const 1 f64.const 1
f64.trunc f64.trunc
drop drop
block $~lib/builtins/isNaN<f64>|inlined.4 (result i32) f64.const 1
f64.const 1 call $~lib/builtins/isNaN<f64>
local.set $5
local.get $5
local.get $5
f64.ne
end
drop drop
) )
(func $builtins/test (; 3 ;) (type $FUNCSIG$v) (func $builtins/test (; 7 ;) (type $FUNCSIG$v)
nop nop
) )
(func $start (; 4 ;) (type $FUNCSIG$v) (func $start (; 8 ;) (type $FUNCSIG$v)
call $start:builtins call $start:builtins
) )
(func $null (; 5 ;) (type $FUNCSIG$v) (func $null (; 9 ;) (type $FUNCSIG$v)
) )
) )

@ -106,7 +106,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -120,7 +120,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable

@ -145,7 +145,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -160,7 +160,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable

@ -116,7 +116,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -130,7 +130,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable

@ -155,7 +155,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -170,7 +170,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable

@ -131,7 +131,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -145,7 +145,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable

@ -197,7 +197,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -212,7 +212,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable

@ -85,7 +85,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -99,7 +99,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable

@ -147,7 +147,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -162,7 +162,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable

@ -131,7 +131,7 @@
if if
i32.const 0 i32.const 0
i32.const 48 i32.const 48
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -145,7 +145,7 @@
if if
i32.const 0 i32.const 0
i32.const 48 i32.const 48
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable

@ -411,7 +411,7 @@
if if
i32.const 0 i32.const 0
i32.const 48 i32.const 48
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -426,7 +426,7 @@
if if
i32.const 0 i32.const 0
i32.const 48 i32.const 48
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable

@ -61,7 +61,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -76,7 +76,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable

@ -302,7 +302,7 @@
if if
i32.const 0 i32.const 0
i32.const 464 i32.const 464
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -316,7 +316,7 @@
if if
i32.const 0 i32.const 0
i32.const 464 i32.const 464
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable

@ -399,7 +399,7 @@
if if
i32.const 0 i32.const 0
i32.const 464 i32.const 464
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -414,7 +414,7 @@
if if
i32.const 0 i32.const 0
i32.const 464 i32.const 464
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -3609,7 +3609,12 @@
i32.const 1792 i32.const 1792
end end
) )
(func $~lib/number/F32.isSafeInteger (; 27 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) (func $~lib/builtins/isNaN<f32> (; 27 ;) (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)
(local $1 i32) (local $1 i32)
local.get $0 local.get $0
f32.abs f32.abs
@ -3625,31 +3630,28 @@
local.get $1 local.get $1
end end
) )
(func $~lib/number/F32.isInteger (; 28 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) (func $~lib/builtins/isFinite<f32> (; 29 ;) (type $FUNCSIG$if) (param $0 f32) (result i32)
(local $1 f32) local.get $0
(local $2 i32) local.get $0
block $~lib/builtins/isFinite<f32>|inlined.0 (result i32) f32.sub
local.get $0 f32.const 0
local.set $1 f32.eq
local.get $1 )
local.get $1 (func $~lib/number/F32.isInteger (; 30 ;) (type $FUNCSIG$if) (param $0 f32) (result i32)
f32.sub (local $1 i32)
f32.const 0 local.get $0
f32.eq call $~lib/builtins/isFinite<f32>
end local.tee $1
local.tee $2
i32.const 0
i32.ne
if (result i32) if (result i32)
local.get $0 local.get $0
f32.trunc f32.trunc
local.get $0 local.get $0
f32.eq f32.eq
else else
local.get $2 local.get $1
end end
) )
(func $~lib/number/F64.isSafeInteger (; 29 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) (func $~lib/number/F64.isSafeInteger (; 31 ;) (type $FUNCSIG$id) (param $0 f64) (result i32)
(local $1 i32) (local $1 i32)
local.get $0 local.get $0
f64.abs f64.abs
@ -3665,34 +3667,22 @@
local.get $1 local.get $1
end end
) )
(func $~lib/number/F64.isInteger (; 30 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) (func $~lib/number/F64.isInteger (; 32 ;) (type $FUNCSIG$id) (param $0 f64) (result i32)
(local $1 f64) (local $1 i32)
(local $2 i32) local.get $0
block $~lib/builtins/isFinite<f64>|inlined.0 (result i32) call $~lib/builtins/isFinite<f64>
local.get $0 local.tee $1
local.set $1
local.get $1
local.get $1
f64.sub
f64.const 0
f64.eq
end
local.tee $2
i32.const 0
i32.ne
if (result i32) if (result i32)
local.get $0 local.get $0
f64.trunc f64.trunc
local.get $0 local.get $0
f64.eq f64.eq
else else
local.get $2 local.get $1
end end
) )
(func $start:number (; 31 ;) (type $FUNCSIG$v) (func $start:number (; 33 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 f32)
(local $2 f64)
global.get $~lib/memory/HEAP_BASE global.get $~lib/memory/HEAP_BASE
i32.const 7 i32.const 7
i32.add i32.add
@ -3874,15 +3864,8 @@
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
end end
block $~lib/builtins/isNaN<f32>|inlined.0 (result i32) global.get $~lib/number/F32.NaN
global.get $~lib/number/F32.NaN call $~lib/builtins/isNaN<f32>
local.set $1
local.get $1
local.get $1
f32.ne
end
i32.const 0
i32.ne
i32.eqz i32.eqz
if if
i32.const 0 i32.const 0
@ -4015,8 +3998,6 @@
end end
f32.const 0 f32.const 0
call $~lib/number/F32.isInteger call $~lib/number/F32.isInteger
i32.const 0
i32.ne
i32.const 1 i32.const 1
i32.eq i32.eq
i32.eqz i32.eqz
@ -4030,8 +4011,6 @@
end end
f32.const -0 f32.const -0
call $~lib/number/F32.isInteger call $~lib/number/F32.isInteger
i32.const 0
i32.ne
i32.const 1 i32.const 1
i32.eq i32.eq
i32.eqz i32.eqz
@ -4046,8 +4025,6 @@
f32.const nan:0x400000 f32.const nan:0x400000
call $~lib/number/F32.isInteger call $~lib/number/F32.isInteger
i32.const 0 i32.const 0
i32.ne
i32.const 0
i32.eq i32.eq
i32.eqz i32.eqz
if if
@ -4061,8 +4038,6 @@
f32.const inf f32.const inf
call $~lib/number/F32.isInteger call $~lib/number/F32.isInteger
i32.const 0 i32.const 0
i32.ne
i32.const 0
i32.eq i32.eq
i32.eqz i32.eqz
if if
@ -4076,8 +4051,6 @@
global.get $~lib/builtins/f32.EPSILON global.get $~lib/builtins/f32.EPSILON
call $~lib/number/F32.isInteger call $~lib/number/F32.isInteger
i32.const 0 i32.const 0
i32.ne
i32.const 0
i32.eq i32.eq
i32.eqz i32.eqz
if if
@ -4090,8 +4063,6 @@
end end
f32.const 1 f32.const 1
call $~lib/number/F32.isInteger call $~lib/number/F32.isInteger
i32.const 0
i32.ne
i32.const 1 i32.const 1
i32.eq i32.eq
i32.eqz i32.eqz
@ -4105,8 +4076,6 @@
end end
f32.const -1 f32.const -1
call $~lib/number/F32.isInteger call $~lib/number/F32.isInteger
i32.const 0
i32.ne
i32.const 1 i32.const 1
i32.eq i32.eq
i32.eqz i32.eqz
@ -4120,8 +4089,6 @@
end end
global.get $~lib/builtins/f32.MIN_SAFE_INTEGER global.get $~lib/builtins/f32.MIN_SAFE_INTEGER
call $~lib/number/F32.isInteger call $~lib/number/F32.isInteger
i32.const 0
i32.ne
i32.const 1 i32.const 1
i32.eq i32.eq
i32.eqz i32.eqz
@ -4135,8 +4102,6 @@
end end
global.get $~lib/builtins/f32.MAX_SAFE_INTEGER global.get $~lib/builtins/f32.MAX_SAFE_INTEGER
call $~lib/number/F32.isInteger call $~lib/number/F32.isInteger
i32.const 0
i32.ne
i32.const 1 i32.const 1
i32.eq i32.eq
i32.eqz i32.eqz
@ -4151,8 +4116,6 @@
f32.const 0.5 f32.const 0.5
call $~lib/number/F32.isInteger call $~lib/number/F32.isInteger
i32.const 0 i32.const 0
i32.ne
i32.const 0
i32.eq i32.eq
i32.eqz i32.eqz
if if
@ -4166,8 +4129,6 @@
f32.const -1.5 f32.const -1.5
call $~lib/number/F32.isInteger call $~lib/number/F32.isInteger
i32.const 0 i32.const 0
i32.ne
i32.const 0
i32.eq i32.eq
i32.eqz i32.eqz
if if
@ -4178,15 +4139,8 @@
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
end end
block $~lib/builtins/isNaN<f64>|inlined.0 (result i32) global.get $~lib/number/F64.NaN
global.get $~lib/number/F64.NaN call $~lib/builtins/isNaN<f64>
local.set $2
local.get $2
local.get $2
f64.ne
end
i32.const 0
i32.ne
i32.eqz i32.eqz
if if
i32.const 0 i32.const 0
@ -4319,8 +4273,6 @@
end end
f64.const 0 f64.const 0
call $~lib/number/F64.isInteger call $~lib/number/F64.isInteger
i32.const 0
i32.ne
i32.const 1 i32.const 1
i32.eq i32.eq
i32.eqz i32.eqz
@ -4334,8 +4286,6 @@
end end
f64.const -0 f64.const -0
call $~lib/number/F64.isInteger call $~lib/number/F64.isInteger
i32.const 0
i32.ne
i32.const 1 i32.const 1
i32.eq i32.eq
i32.eqz i32.eqz
@ -4350,8 +4300,6 @@
f64.const nan:0x8000000000000 f64.const nan:0x8000000000000
call $~lib/number/F64.isInteger call $~lib/number/F64.isInteger
i32.const 0 i32.const 0
i32.ne
i32.const 0
i32.eq i32.eq
i32.eqz i32.eqz
if if
@ -4365,8 +4313,6 @@
f64.const inf f64.const inf
call $~lib/number/F64.isInteger call $~lib/number/F64.isInteger
i32.const 0 i32.const 0
i32.ne
i32.const 0
i32.eq i32.eq
i32.eqz i32.eqz
if if
@ -4380,8 +4326,6 @@
global.get $~lib/builtins/f64.EPSILON global.get $~lib/builtins/f64.EPSILON
call $~lib/number/F64.isInteger call $~lib/number/F64.isInteger
i32.const 0 i32.const 0
i32.ne
i32.const 0
i32.eq i32.eq
i32.eqz i32.eqz
if if
@ -4394,8 +4338,6 @@
end end
f64.const 1 f64.const 1
call $~lib/number/F64.isInteger call $~lib/number/F64.isInteger
i32.const 0
i32.ne
i32.const 1 i32.const 1
i32.eq i32.eq
i32.eqz i32.eqz
@ -4409,8 +4351,6 @@
end end
f64.const -1 f64.const -1
call $~lib/number/F64.isInteger call $~lib/number/F64.isInteger
i32.const 0
i32.ne
i32.const 1 i32.const 1
i32.eq i32.eq
i32.eqz i32.eqz
@ -4424,8 +4364,6 @@
end end
global.get $~lib/builtins/f64.MIN_SAFE_INTEGER global.get $~lib/builtins/f64.MIN_SAFE_INTEGER
call $~lib/number/F64.isInteger call $~lib/number/F64.isInteger
i32.const 0
i32.ne
i32.const 1 i32.const 1
i32.eq i32.eq
i32.eqz i32.eqz
@ -4439,8 +4377,6 @@
end end
global.get $~lib/builtins/f64.MAX_SAFE_INTEGER global.get $~lib/builtins/f64.MAX_SAFE_INTEGER
call $~lib/number/F64.isInteger call $~lib/number/F64.isInteger
i32.const 0
i32.ne
i32.const 1 i32.const 1
i32.eq i32.eq
i32.eqz i32.eqz
@ -4455,8 +4391,6 @@
f64.const 0.5 f64.const 0.5
call $~lib/number/F64.isInteger call $~lib/number/F64.isInteger
i32.const 0 i32.const 0
i32.ne
i32.const 0
i32.eq i32.eq
i32.eqz i32.eqz
if if
@ -4470,8 +4404,6 @@
f64.const -1.5 f64.const -1.5
call $~lib/number/F64.isInteger call $~lib/number/F64.isInteger
i32.const 0 i32.const 0
i32.ne
i32.const 0
i32.eq i32.eq
i32.eqz i32.eqz
if if
@ -4483,9 +4415,9 @@
unreachable unreachable
end end
) )
(func $start (; 32 ;) (type $FUNCSIG$v) (func $start (; 34 ;) (type $FUNCSIG$v)
call $start:number call $start:number
) )
(func $null (; 33 ;) (type $FUNCSIG$v) (func $null (; 35 ;) (type $FUNCSIG$v)
) )
) )

@ -106,7 +106,7 @@
if if
i32.const 0 i32.const 0
i32.const 48 i32.const 48
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -120,7 +120,7 @@
if if
i32.const 0 i32.const 0
i32.const 48 i32.const 48
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable

@ -147,7 +147,7 @@
if if
i32.const 0 i32.const 0
i32.const 48 i32.const 48
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -162,7 +162,7 @@
if if
i32.const 0 i32.const 0
i32.const 48 i32.const 48
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable

@ -100,7 +100,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -114,7 +114,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable

@ -154,7 +154,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -169,7 +169,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -216,11 +216,16 @@
(data (i32.const 6296) "\02\00\00\00\10\00\00\00\c8\15\00\00h\18\00\00\00\00\00\00x\18") (data (i32.const 6296) "\02\00\00\00\10\00\00\00\c8\15\00\00h\18\00\00\00\00\00\00x\18")
(data (i32.const 6320) "\01\00\00\00\0c\00\00\001\00,\002\00,\00,\004") (data (i32.const 6320) "\01\00\00\00\0c\00\00\001\00,\002\00,\00,\004")
(data (i32.const 6344) "\02\00\00\00\08\00\00\00\01\00\00\00\02") (data (i32.const 6344) "\02\00\00\00\08\00\00\00\01\00\00\00\02")
(data (i32.const 6360) "\02\00\00\00\08\00\00\00\03\00\00\00\04") (data (i32.const 6360) "\02\00\00\00\08\00\00\00\01\00\00\00\02")
(data (i32.const 6376) "\01\00\00\00\0e\00\00\001\00,\002\00,\003\00,\004") (data (i32.const 6376) "\02\00\00\00\08\00\00\00\03\00\00\00\04")
(data (i32.const 6400) "\02\00\00\00\02\00\00\00\01\02") (data (i32.const 6392) "\01\00\00\00\0e\00\00\001\00,\002\00,\003\00,\004")
(data (i32.const 6416) "\02\00\00\00\02\00\00\00\03\04") (data (i32.const 6416) "\02\00\00\00\02\00\00\00\01\02")
(data (i32.const 6432) "\02\00\00\00\04\00\00\00\01") (data (i32.const 6432) "\02\00\00\00\02\00\00\00\01\02")
(data (i32.const 6448) "\02\00\00\00\02\00\00\00\03\04")
(data (i32.const 6464) "\02\00\00\00\04\00\00\00\01")
(data (i32.const 6480) "\02\00\00\00\04\00\00\00\01")
(data (i32.const 6496) "\02\00\00\00\04\00\00\00\01")
(data (i32.const 6512) "\02\00\00\00\04\00\00\00\01")
(table $0 56 funcref) (table $0 56 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<f32>~anonymous|0 $~lib/util/sort/COMPARATOR<f64>~anonymous|0 $~lib/util/sort/COMPARATOR<i32>~anonymous|0 $~lib/util/sort/COMPARATOR<u32>~anonymous|0 $~lib/util/sort/COMPARATOR<i32>~anonymous|0 $~lib/util/sort/COMPARATOR<i32>~anonymous|0 $start:std/array~anonymous|44 $~lib/util/sort/COMPARATOR<i32>~anonymous|0 $start:std/array~anonymous|44 $start:std/array~anonymous|47 $start:std/array~anonymous|48 $~lib/util/sort/COMPARATOR<String>~anonymous|0) (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<f32>~anonymous|0 $~lib/util/sort/COMPARATOR<f64>~anonymous|0 $~lib/util/sort/COMPARATOR<i32>~anonymous|0 $~lib/util/sort/COMPARATOR<u32>~anonymous|0 $~lib/util/sort/COMPARATOR<i32>~anonymous|0 $~lib/util/sort/COMPARATOR<i32>~anonymous|0 $start:std/array~anonymous|44 $~lib/util/sort/COMPARATOR<i32>~anonymous|0 $start:std/array~anonymous|44 $start:std/array~anonymous|47 $start:std/array~anonymous|48 $~lib/util/sort/COMPARATOR<String>~anonymous|0)
(global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0))
@ -591,12 +596,12 @@
) )
(func $~lib/runtime/assertUnregistered (; 5 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/runtime/assertUnregistered (; 5 ;) (type $FUNCSIG$vi) (param $0 i32)
local.get $0 local.get $0
i32.const 6444 i32.const 6524
i32.le_u i32.le_u
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -610,7 +615,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -658,7 +663,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 226 i32.const 227
i32.const 57 i32.const 57
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -2142,7 +2147,7 @@
i32.shl i32.shl
i32.const 0 i32.const 0
local.get $0 local.get $0
i32.const 6444 i32.const 6524
i32.gt_u i32.gt_u
select select
i32.const 1 i32.const 1
@ -2183,7 +2188,7 @@
i32.eq i32.eq
if if
local.get $0 local.get $0
i32.const 6444 i32.const 6524
i32.le_u i32.le_u
if if
i32.const 0 i32.const 0
@ -2293,7 +2298,7 @@
if if
i32.const 0 i32.const 0
i32.const 208 i32.const 208
i32.const 195 i32.const 199
i32.const 20 i32.const 20
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -2560,7 +2565,7 @@
if if
i32.const 0 i32.const 0
i32.const 208 i32.const 208
i32.const 253 i32.const 260
i32.const 20 i32.const 20
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -4091,7 +4096,7 @@
if if
i32.const 0 i32.const 0
i32.const 208 i32.const 208
i32.const 357 i32.const 373
i32.const 4 i32.const 4
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -4587,7 +4592,7 @@
if if
i32.const 0 i32.const 0
i32.const 208 i32.const 208
i32.const 357 i32.const 373
i32.const 4 i32.const 4
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -5106,7 +5111,7 @@
if if
i32.const 0 i32.const 0
i32.const 208 i32.const 208
i32.const 357 i32.const 373
i32.const 4 i32.const 4
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -5431,7 +5436,7 @@
if if
i32.const 0 i32.const 0
i32.const 208 i32.const 208
i32.const 357 i32.const 373
i32.const 4 i32.const 4
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -9685,7 +9690,8 @@
(func $start:std/array (; 158 ;) (type $FUNCSIG$v) (func $start:std/array (; 158 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
i32.const 6448 (local $2 i32)
i32.const 6528
global.set $~lib/allocator/arena/startOffset global.set $~lib/allocator/arena/startOffset
global.get $~lib/allocator/arena/startOffset global.get $~lib/allocator/arena/startOffset
global.set $~lib/allocator/arena/offset global.set $~lib/allocator/arena/offset
@ -13217,6 +13223,8 @@
i32.const 0 i32.const 0
global.set $~lib/argc global.set $~lib/argc
global.get $std/array/f32ArrayTyped global.get $std/array/f32ArrayTyped
local.set $1
i32.const 0
local.set $0 local.set $0
block $1of1 block $1of1
block $0of1 block $0of1
@ -13227,10 +13235,10 @@
unreachable unreachable
end end
i32.const 44 i32.const 44
local.set $1 local.set $0
end end
local.get $0
local.get $1 local.get $1
local.get $0
call $~lib/array/Array<f32>#sort call $~lib/array/Array<f32>#sort
global.get $std/array/f32ArrayTyped global.get $std/array/f32ArrayTyped
i32.const 2576 i32.const 2576
@ -13250,9 +13258,9 @@
i32.const 0 i32.const 0
global.set $~lib/argc global.set $~lib/argc
global.get $std/array/f64ArrayTyped global.get $std/array/f64ArrayTyped
local.set $0
i32.const 0
local.set $1 local.set $1
i32.const 0
local.set $0
block $1of143 block $1of143
block $0of144 block $0of144
block $outOfRange45 block $outOfRange45
@ -13262,10 +13270,10 @@
unreachable unreachable
end end
i32.const 45 i32.const 45
local.set $1 local.set $0
end end
local.get $0
local.get $1 local.get $1
local.get $0
call $~lib/array/Array<f64>#sort call $~lib/array/Array<f64>#sort
global.get $std/array/f64ArrayTyped global.get $std/array/f64ArrayTyped
i32.const 2712 i32.const 2712
@ -13285,9 +13293,9 @@
i32.const 0 i32.const 0
global.set $~lib/argc global.set $~lib/argc
global.get $std/array/i32ArrayTyped global.get $std/array/i32ArrayTyped
local.set $0
i32.const 0
local.set $1 local.set $1
i32.const 0
local.set $0
block $1of146 block $1of146
block $0of147 block $0of147
block $outOfRange48 block $outOfRange48
@ -13297,10 +13305,10 @@
unreachable unreachable
end end
i32.const 46 i32.const 46
local.set $1 local.set $0
end end
local.get $0
local.get $1 local.get $1
local.get $0
call $~lib/array/Array<i32>#sort call $~lib/array/Array<i32>#sort
drop drop
global.get $std/array/i32ArrayTyped global.get $std/array/i32ArrayTyped
@ -13322,9 +13330,9 @@
i32.const 0 i32.const 0
global.set $~lib/argc global.set $~lib/argc
global.get $std/array/u32ArrayTyped global.get $std/array/u32ArrayTyped
local.set $0
i32.const 0
local.set $1 local.set $1
i32.const 0
local.set $0
block $1of149 block $1of149
block $0of150 block $0of150
block $outOfRange51 block $outOfRange51
@ -13334,10 +13342,10 @@
unreachable unreachable
end end
i32.const 47 i32.const 47
local.set $1 local.set $0
end end
local.get $0
local.get $1 local.get $1
local.get $0
call $~lib/array/Array<i32>#sort call $~lib/array/Array<i32>#sort
drop drop
global.get $std/array/u32ArrayTyped global.get $std/array/u32ArrayTyped
@ -13650,17 +13658,16 @@
i32.const 3 i32.const 3
i32.store offset=12 i32.store offset=12
local.get $0 local.get $0
i32.const 0 i32.load offset=4
local.tee $1
call $std/array/Ref#constructor call $std/array/Ref#constructor
call $~lib/array/Array<i32>#__set i32.store
local.get $0 local.get $1
i32.const 1
i32.const 0 i32.const 0
call $~lib/array/Array<i32>#__set i32.store offset=4
local.get $0 local.get $1
i32.const 2
call $std/array/Ref#constructor call $std/array/Ref#constructor
call $~lib/array/Array<i32>#__set i32.store offset=8
local.get $0 local.get $0
global.set $std/array/refArr global.set $std/array/refArr
global.get $std/array/refArr global.get $std/array/refArr
@ -13823,25 +13830,25 @@
end end
i32.const 2 i32.const 2
call $~lib/array/Array<Array<i32>>#constructor call $~lib/array/Array<Array<i32>>#constructor
local.tee $1
i32.load offset=4
local.tee $0 local.tee $0
i32.const 0
i32.const 6352
i32.const 4
i32.const 2
call $~lib/runtime/doWrapArray
call $~lib/array/Array<i32>#__set
local.get $0
i32.const 1
i32.const 6368 i32.const 6368
i32.const 4 i32.const 4
i32.const 2 i32.const 2
call $~lib/runtime/doWrapArray call $~lib/runtime/doWrapArray
call $~lib/array/Array<i32>#__set i32.store
local.get $0 local.get $0
i32.const 6384
i32.const 4
i32.const 2
call $~lib/runtime/doWrapArray
i32.store offset=4
local.get $1
global.set $std/array/subarr32 global.set $std/array/subarr32
global.get $std/array/subarr32 global.get $std/array/subarr32
call $~lib/array/Array<Array<i32>>#join_arr call $~lib/array/Array<Array<i32>>#join_arr
i32.const 6384 i32.const 6400
call $~lib/string/String.__eq call $~lib/string/String.__eq
i32.eqz i32.eqz
if if
@ -13866,24 +13873,24 @@
i32.const 2 i32.const 2
i32.store offset=12 i32.store offset=12
local.get $0 local.get $0
i32.const 0 i32.load offset=4
i32.const 6408 local.tee $1
i32.const 6440
i32.const 7 i32.const 7
i32.const 0 i32.const 0
call $~lib/runtime/doWrapArray call $~lib/runtime/doWrapArray
call $~lib/array/Array<i32>#__set i32.store
local.get $0 local.get $1
i32.const 1 i32.const 6456
i32.const 6424
i32.const 7 i32.const 7
i32.const 0 i32.const 0
call $~lib/runtime/doWrapArray call $~lib/runtime/doWrapArray
call $~lib/array/Array<i32>#__set i32.store offset=4
local.get $0 local.get $0
global.set $std/array/subarr8 global.set $std/array/subarr8
global.get $std/array/subarr8 global.get $std/array/subarr8
call $~lib/array/Array<Array<u8>>#join_arr call $~lib/array/Array<Array<u8>>#join_arr
i32.const 6384 i32.const 6400
call $~lib/string/String.__eq call $~lib/string/String.__eq
i32.eqz i32.eqz
if if
@ -13907,6 +13914,9 @@
local.get $0 local.get $0
i32.const 1 i32.const 1
i32.store offset=12 i32.store offset=12
local.get $0
i32.load offset=4
local.set $1
i32.const 16 i32.const 16
call $~lib/runtime/doAllocate call $~lib/runtime/doAllocate
i32.const 24 i32.const 24
@ -13914,23 +13924,22 @@
i32.const 1 i32.const 1
i32.const 2 i32.const 2
call $~lib/runtime/ArrayBufferView#constructor call $~lib/runtime/ArrayBufferView#constructor
local.tee $1 local.tee $2
i32.const 0 i32.const 0
i32.store offset=12 i32.store offset=12
local.get $1 local.get $2
i32.const 1 i32.const 1
i32.store offset=12 i32.store offset=12
local.get $1 local.get $2
i32.const 0 i32.load offset=4
i32.const 6440 i32.const 6520
i32.const 8 i32.const 8
i32.const 2 i32.const 2
call $~lib/runtime/doWrapArray call $~lib/runtime/doWrapArray
call $~lib/array/Array<i32>#__set i32.store
local.get $0
i32.const 0
local.get $1 local.get $1
call $~lib/array/Array<i32>#__set local.get $2
i32.store
local.get $0 local.get $0
global.set $std/array/subarrU32 global.set $std/array/subarrU32
global.get $std/array/subarrU32 global.get $std/array/subarrU32

@ -210,11 +210,16 @@
(data (i32.const 6296) "\02\00\00\00\10\00\00\00\c8\15\00\00h\18\00\00\00\00\00\00x\18\00\00") (data (i32.const 6296) "\02\00\00\00\10\00\00\00\c8\15\00\00h\18\00\00\00\00\00\00x\18\00\00")
(data (i32.const 6320) "\01\00\00\00\0c\00\00\001\00,\002\00,\00,\004\00") (data (i32.const 6320) "\01\00\00\00\0c\00\00\001\00,\002\00,\00,\004\00")
(data (i32.const 6344) "\02\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00") (data (i32.const 6344) "\02\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00")
(data (i32.const 6360) "\02\00\00\00\08\00\00\00\03\00\00\00\04\00\00\00") (data (i32.const 6360) "\02\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00")
(data (i32.const 6376) "\01\00\00\00\0e\00\00\001\00,\002\00,\003\00,\004\00") (data (i32.const 6376) "\02\00\00\00\08\00\00\00\03\00\00\00\04\00\00\00")
(data (i32.const 6400) "\02\00\00\00\02\00\00\00\01\02") (data (i32.const 6392) "\01\00\00\00\0e\00\00\001\00,\002\00,\003\00,\004\00")
(data (i32.const 6416) "\02\00\00\00\02\00\00\00\03\04") (data (i32.const 6416) "\02\00\00\00\02\00\00\00\01\02")
(data (i32.const 6432) "\02\00\00\00\04\00\00\00\01\00\00\00") (data (i32.const 6432) "\02\00\00\00\02\00\00\00\01\02")
(data (i32.const 6448) "\02\00\00\00\02\00\00\00\03\04")
(data (i32.const 6464) "\02\00\00\00\04\00\00\00\01\00\00\00")
(data (i32.const 6480) "\02\00\00\00\04\00\00\00\01\00\00\00")
(data (i32.const 6496) "\02\00\00\00\04\00\00\00\01\00\00\00")
(data (i32.const 6512) "\02\00\00\00\04\00\00\00\01\00\00\00")
(table $0 56 funcref) (table $0 56 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<f32>~anonymous|0 $~lib/util/sort/COMPARATOR<f64>~anonymous|0 $~lib/util/sort/COMPARATOR<i32>~anonymous|0 $~lib/util/sort/COMPARATOR<u32>~anonymous|0 $~lib/util/sort/COMPARATOR<i32>~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<String>~anonymous|0) (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<f32>~anonymous|0 $~lib/util/sort/COMPARATOR<f64>~anonymous|0 $~lib/util/sort/COMPARATOR<i32>~anonymous|0 $~lib/util/sort/COMPARATOR<u32>~anonymous|0 $~lib/util/sort/COMPARATOR<i32>~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<String>~anonymous|0)
(global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0)) (global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0))
@ -285,7 +290,7 @@
(global $std/array/subarr32 (mut i32) (i32.const 0)) (global $std/array/subarr32 (mut i32) (i32.const 0))
(global $std/array/subarr8 (mut i32) (i32.const 0)) (global $std/array/subarr8 (mut i32) (i32.const 0))
(global $std/array/subarrU32 (mut i32) (i32.const 0)) (global $std/array/subarrU32 (mut i32) (i32.const 0))
(global $~lib/memory/HEAP_BASE i32 (i32.const 6444)) (global $~lib/memory/HEAP_BASE i32 (i32.const 6524))
(export "memory" (memory $0)) (export "memory" (memory $0))
(export "table" (table $0)) (export "table" (table $0))
(start $start) (start $start)
@ -666,7 +671,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -681,7 +686,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -745,7 +750,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 226 i32.const 227
i32.const 57 i32.const 57
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -2947,7 +2952,7 @@
if if
i32.const 0 i32.const 0
i32.const 208 i32.const 208
i32.const 195 i32.const 199
i32.const 20 i32.const 20
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -3306,7 +3311,7 @@
if if
i32.const 0 i32.const 0
i32.const 208 i32.const 208
i32.const 253 i32.const 260
i32.const 20 i32.const 20
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -5278,7 +5283,7 @@
if if
i32.const 0 i32.const 0
i32.const 208 i32.const 208
i32.const 357 i32.const 373
i32.const 4 i32.const 4
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -5888,7 +5893,7 @@
if if
i32.const 0 i32.const 0
i32.const 208 i32.const 208
i32.const 357 i32.const 373
i32.const 4 i32.const 4
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -6523,7 +6528,7 @@
if if
i32.const 0 i32.const 0
i32.const 208 i32.const 208
i32.const 357 i32.const 373
i32.const 4 i32.const 4
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -7027,7 +7032,7 @@
if if
i32.const 0 i32.const 0
i32.const 208 i32.const 208
i32.const 357 i32.const 373
i32.const 4 i32.const 4
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -7598,7 +7603,7 @@
if if
i32.const 0 i32.const 0
i32.const 208 i32.const 208
i32.const 357 i32.const 373
i32.const 4 i32.const 4
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -7954,7 +7959,7 @@
if if
i32.const 0 i32.const 0
i32.const 208 i32.const 208
i32.const 357 i32.const 373
i32.const 4 i32.const 4
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -8211,7 +8216,7 @@
if if
i32.const 0 i32.const 0
i32.const 208 i32.const 208
i32.const 357 i32.const 373
i32.const 4 i32.const 4
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -11808,34 +11813,7 @@
i32.store offset=12 i32.store offset=12
local.get $0 local.get $0
) )
(func $~lib/array/Array<Ref | null>#__set (; 216 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/array/Array<Ref | null>#join_ref (; 216 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0
local.get $1
i32.const 1
i32.add
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
local.get $1
local.get $0
i32.load offset=12
i32.ge_s
if
local.get $0
local.get $1
i32.const 1
i32.add
i32.store offset=12
end
)
(func $~lib/array/Array<Ref | null>#join_ref (; 217 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -11997,18 +11975,18 @@
call $~lib/runtime/doRegister call $~lib/runtime/doRegister
end end
) )
(func $~lib/array/Array<Ref | null>#join (; 218 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/array/Array<Ref | null>#join (; 217 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
local.get $1 local.get $1
call $~lib/array/Array<Ref | null>#join_ref call $~lib/array/Array<Ref | null>#join_ref
return return
) )
(func $~lib/array/Array<i32>#toString (; 219 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/array/Array<i32>#toString (; 218 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.const 3512 i32.const 3512
call $~lib/array/Array<i32>#join call $~lib/array/Array<i32>#join
) )
(func $~lib/util/number/itoa<i8> (; 220 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/util/number/itoa<i8> (; 219 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.const 24 i32.const 24
i32.shl i32.shl
@ -12017,7 +11995,7 @@
call $~lib/util/number/itoa32 call $~lib/util/number/itoa32
return return
) )
(func $~lib/util/number/itoa_stream<i8> (; 221 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/util/number/itoa_stream<i8> (; 220 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
(local $5 i32) (local $5 i32)
@ -12092,7 +12070,7 @@
end end
local.get $3 local.get $3
) )
(func $~lib/array/Array<i8>#join_int (; 222 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/array/Array<i8>#join_int (; 221 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -12238,25 +12216,25 @@
call $~lib/runtime/doRegister call $~lib/runtime/doRegister
end end
) )
(func $~lib/array/Array<i8>#join (; 223 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/array/Array<i8>#join (; 222 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
local.get $1 local.get $1
call $~lib/array/Array<i8>#join_int call $~lib/array/Array<i8>#join_int
return return
) )
(func $~lib/array/Array<i8>#toString (; 224 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/array/Array<i8>#toString (; 223 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.const 3512 i32.const 3512
call $~lib/array/Array<i8>#join call $~lib/array/Array<i8>#join
) )
(func $~lib/util/number/itoa<u16> (; 225 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/util/number/itoa<u16> (; 224 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.const 65535 i32.const 65535
i32.and i32.and
call $~lib/util/number/utoa32 call $~lib/util/number/utoa32
return return
) )
(func $~lib/util/number/itoa_stream<u16> (; 226 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/util/number/itoa_stream<u16> (; 225 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
(local $5 i32) (local $5 i32)
@ -12301,7 +12279,7 @@
end end
local.get $3 local.get $3
) )
(func $~lib/array/Array<u16>#join_int (; 227 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/array/Array<u16>#join_int (; 226 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -12447,18 +12425,18 @@
call $~lib/runtime/doRegister call $~lib/runtime/doRegister
end end
) )
(func $~lib/array/Array<u16>#join (; 228 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/array/Array<u16>#join (; 227 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
local.get $1 local.get $1
call $~lib/array/Array<u16>#join_int call $~lib/array/Array<u16>#join_int
return return
) )
(func $~lib/array/Array<u16>#toString (; 229 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/array/Array<u16>#toString (; 228 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.const 3512 i32.const 3512
call $~lib/array/Array<u16>#join call $~lib/array/Array<u16>#join
) )
(func $~lib/util/number/decimalCount64 (; 230 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (func $~lib/util/number/decimalCount64 (; 229 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32)
(local $1 i32) (local $1 i32)
local.get $0 local.get $0
i64.const 1000000000000000 i64.const 1000000000000000
@ -12527,7 +12505,7 @@
unreachable unreachable
unreachable unreachable
) )
(func $~lib/util/number/utoa64_lut (; 231 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (func $~lib/util/number/utoa64_lut (; 230 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i64) (local $4 i64)
(local $5 i32) (local $5 i32)
@ -12655,7 +12633,7 @@
local.get $2 local.get $2
call $~lib/util/number/utoa32_lut call $~lib/util/number/utoa32_lut
) )
(func $~lib/util/number/utoa64 (; 232 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (func $~lib/util/number/utoa64 (; 231 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
@ -12735,12 +12713,12 @@
call $~lib/runtime/doRegister call $~lib/runtime/doRegister
end end
) )
(func $~lib/util/number/itoa<u64> (; 233 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (func $~lib/util/number/itoa<u64> (; 232 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32)
local.get $0 local.get $0
call $~lib/util/number/utoa64 call $~lib/util/number/utoa64
return return
) )
(func $~lib/util/number/itoa_stream<u64> (; 234 ;) (type $FUNCSIG$iiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) (func $~lib/util/number/itoa_stream<u64> (; 233 ;) (type $FUNCSIG$iiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
(local $5 i32) (local $5 i32)
@ -12806,7 +12784,7 @@
end end
local.get $3 local.get $3
) )
(func $~lib/array/Array<u64>#join_int (; 235 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/array/Array<u64>#join_int (; 234 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -12952,18 +12930,18 @@
call $~lib/runtime/doRegister call $~lib/runtime/doRegister
end end
) )
(func $~lib/array/Array<u64>#join (; 236 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/array/Array<u64>#join (; 235 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
local.get $1 local.get $1
call $~lib/array/Array<u64>#join_int call $~lib/array/Array<u64>#join_int
return return
) )
(func $~lib/array/Array<u64>#toString (; 237 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/array/Array<u64>#toString (; 236 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.const 3512 i32.const 3512
call $~lib/array/Array<u64>#join call $~lib/array/Array<u64>#join
) )
(func $~lib/util/number/itoa64 (; 238 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (func $~lib/util/number/itoa64 (; 237 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
@ -13065,12 +13043,12 @@
call $~lib/runtime/doRegister call $~lib/runtime/doRegister
end end
) )
(func $~lib/util/number/itoa<i64> (; 239 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (func $~lib/util/number/itoa<i64> (; 238 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32)
local.get $0 local.get $0
call $~lib/util/number/itoa64 call $~lib/util/number/itoa64
return return
) )
(func $~lib/util/number/itoa_stream<i64> (; 240 ;) (type $FUNCSIG$iiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) (func $~lib/util/number/itoa_stream<i64> (; 239 ;) (type $FUNCSIG$iiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
(local $5 i32) (local $5 i32)
@ -13158,7 +13136,7 @@
end end
local.get $3 local.get $3
) )
(func $~lib/array/Array<i64>#join_int (; 241 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/array/Array<i64>#join_int (; 240 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -13304,23 +13282,23 @@
call $~lib/runtime/doRegister call $~lib/runtime/doRegister
end end
) )
(func $~lib/array/Array<i64>#join (; 242 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/array/Array<i64>#join (; 241 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
local.get $1 local.get $1
call $~lib/array/Array<i64>#join_int call $~lib/array/Array<i64>#join_int
return return
) )
(func $~lib/array/Array<i64>#toString (; 243 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/array/Array<i64>#toString (; 242 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.const 3512 i32.const 3512
call $~lib/array/Array<i64>#join call $~lib/array/Array<i64>#join
) )
(func $~lib/array/Array<String>#toString (; 244 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/array/Array<String>#toString (; 243 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.const 3512 i32.const 3512
call $~lib/array/Array<String>#join call $~lib/array/Array<String>#join
) )
(func $~lib/array/Array<Array<i32>>#join_arr (; 245 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/array/Array<Array<i32>>#join_arr (; 244 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -13424,18 +13402,18 @@
end end
local.get $3 local.get $3
) )
(func $~lib/array/Array<Array<i32>>#join (; 246 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/array/Array<Array<i32>>#join (; 245 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
local.get $1 local.get $1
call $~lib/array/Array<Array<i32>>#join_arr call $~lib/array/Array<Array<i32>>#join_arr
return return
) )
(func $~lib/array/Array<Array<i32>>#toString (; 247 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/array/Array<Array<i32>>#toString (; 246 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.const 3512 i32.const 3512
call $~lib/array/Array<Array<i32>>#join call $~lib/array/Array<Array<i32>>#join
) )
(func $~lib/array/Array<Array<u8>>#constructor (; 248 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/array/Array<Array<u8>>#constructor (; 247 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
local.get $0 local.get $0
if (result i32) if (result i32)
@ -13460,41 +13438,14 @@
i32.store offset=12 i32.store offset=12
local.get $0 local.get $0
) )
(func $~lib/array/Array<Array<u8>>#__set (; 249 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/util/number/itoa<u8> (; 248 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
local.get $1
i32.const 1
i32.add
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
local.get $1
local.get $0
i32.load offset=12
i32.ge_s
if
local.get $0
local.get $1
i32.const 1
i32.add
i32.store offset=12
end
)
(func $~lib/util/number/itoa<u8> (; 250 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.const 255 i32.const 255
i32.and i32.and
call $~lib/util/number/utoa32 call $~lib/util/number/utoa32
return return
) )
(func $~lib/util/number/itoa_stream<u8> (; 251 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/util/number/itoa_stream<u8> (; 249 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
(local $5 i32) (local $5 i32)
@ -13539,7 +13490,7 @@
end end
local.get $3 local.get $3
) )
(func $~lib/array/Array<u8>#join_int (; 252 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/array/Array<u8>#join_int (; 250 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -13685,13 +13636,13 @@
call $~lib/runtime/doRegister call $~lib/runtime/doRegister
end end
) )
(func $~lib/array/Array<u8>#join (; 253 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/array/Array<u8>#join (; 251 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
local.get $1 local.get $1
call $~lib/array/Array<u8>#join_int call $~lib/array/Array<u8>#join_int
return return
) )
(func $~lib/array/Array<Array<u8>>#join_arr (; 254 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/array/Array<Array<u8>>#join_arr (; 252 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -13795,18 +13746,18 @@
end end
local.get $3 local.get $3
) )
(func $~lib/array/Array<Array<u8>>#join (; 255 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/array/Array<Array<u8>>#join (; 253 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
local.get $1 local.get $1
call $~lib/array/Array<Array<u8>>#join_arr call $~lib/array/Array<Array<u8>>#join_arr
return return
) )
(func $~lib/array/Array<Array<u8>>#toString (; 256 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/array/Array<Array<u8>>#toString (; 254 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.const 3512 i32.const 3512
call $~lib/array/Array<Array<u8>>#join call $~lib/array/Array<Array<u8>>#join
) )
(func $~lib/array/Array<Array<u32>>#constructor (; 257 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/array/Array<Array<u32>>#constructor (; 255 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
local.get $0 local.get $0
if (result i32) if (result i32)
@ -13831,34 +13782,7 @@
i32.store offset=12 i32.store offset=12
local.get $0 local.get $0
) )
(func $~lib/array/Array<Array<u32>>#__set (; 258 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/array/Array<Array<Array<u32>>>#constructor (; 256 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0
local.get $1
i32.const 1
i32.add
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
local.get $1
local.get $0
i32.load offset=12
i32.ge_s
if
local.get $0
local.get $1
i32.const 1
i32.add
i32.store offset=12
end
)
(func $~lib/array/Array<Array<Array<u32>>>#constructor (; 259 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
local.get $0 local.get $0
if (result i32) if (result i32)
@ -13883,34 +13807,7 @@
i32.store offset=12 i32.store offset=12
local.get $0 local.get $0
) )
(func $~lib/array/Array<Array<Array<u32>>>#__set (; 260 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/array/Array<Array<u32>>#join_arr (; 257 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0
local.get $1
i32.const 1
i32.add
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
local.get $1
local.get $0
i32.load offset=12
i32.ge_s
if
local.get $0
local.get $1
i32.const 1
i32.add
i32.store offset=12
end
)
(func $~lib/array/Array<Array<u32>>#join_arr (; 261 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -14014,13 +13911,13 @@
end end
local.get $3 local.get $3
) )
(func $~lib/array/Array<Array<u32>>#join (; 262 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/array/Array<Array<u32>>#join (; 258 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
local.get $1 local.get $1
call $~lib/array/Array<Array<u32>>#join_arr call $~lib/array/Array<Array<u32>>#join_arr
return return
) )
(func $~lib/array/Array<Array<Array<u32>>>#join_arr (; 263 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/array/Array<Array<Array<u32>>>#join_arr (; 259 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -14124,24 +14021,23 @@
end end
local.get $3 local.get $3
) )
(func $~lib/array/Array<Array<Array<u32>>>#join (; 264 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/array/Array<Array<Array<u32>>>#join (; 260 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
local.get $1 local.get $1
call $~lib/array/Array<Array<Array<u32>>>#join_arr call $~lib/array/Array<Array<Array<u32>>>#join_arr
return return
) )
(func $~lib/array/Array<Array<Array<u32>>>#toString (; 265 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/array/Array<Array<Array<u32>>>#toString (; 261 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.const 3512 i32.const 3512
call $~lib/array/Array<Array<Array<u32>>>#join call $~lib/array/Array<Array<Array<u32>>>#join
) )
(func $start:std/array (; 266 ;) (type $FUNCSIG$v) (func $start:std/array (; 262 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
(local $5 i32)
global.get $~lib/memory/HEAP_BASE global.get $~lib/memory/HEAP_BASE
i32.const 7 i32.const 7
i32.add i32.add
@ -18630,22 +18526,22 @@
i32.const 0 i32.const 0
i32.const 3 i32.const 3
call $~lib/array/Array<Ref | null>#constructor call $~lib/array/Array<Ref | null>#constructor
local.set $0
local.get $0
i32.load offset=4
local.set $1 local.set $1
local.get $1 local.get $1
i32.const 0 i32.const 0
call $std/array/Ref#constructor
i32.store
local.get $1
i32.const 0
i32.store offset=4
local.get $1
i32.const 0 i32.const 0
call $std/array/Ref#constructor call $std/array/Ref#constructor
call $~lib/array/Array<Ref | null>#__set i32.store offset=8
local.get $1 local.get $0
i32.const 1
i32.const 0
call $~lib/array/Array<Ref | null>#__set
local.get $1
i32.const 2
i32.const 0
call $std/array/Ref#constructor
call $~lib/array/Array<Ref | null>#__set
local.get $1
end end
global.set $std/array/refArr global.set $std/array/refArr
global.get $std/array/refArr global.get $std/array/refArr
@ -18831,35 +18727,36 @@
i32.const 0 i32.const 0
i32.const 2 i32.const 2
call $~lib/array/Array<Array<i32>>#constructor call $~lib/array/Array<Array<i32>>#constructor
local.set $2 local.set $1
local.get $2 local.get $1
i32.const 0 i32.load offset=4
block $~lib/runtime/WRAPARRAY<i32>|inlined.70 (result i32) local.set $0
i32.const 6352 local.get $0
local.set $1
local.get $1
i32.const 4
i32.const 2
call $~lib/runtime/doWrapArray
end
call $~lib/array/Array<Array<i32>>#__set
local.get $2
i32.const 1
block $~lib/runtime/WRAPARRAY<i32>|inlined.71 (result i32) block $~lib/runtime/WRAPARRAY<i32>|inlined.71 (result i32)
i32.const 6368 i32.const 6368
local.set $1 local.set $2
local.get $1 local.get $2
i32.const 4 i32.const 4
i32.const 2 i32.const 2
call $~lib/runtime/doWrapArray call $~lib/runtime/doWrapArray
end end
call $~lib/array/Array<Array<i32>>#__set i32.store
local.get $2 local.get $0
block $~lib/runtime/WRAPARRAY<i32>|inlined.72 (result i32)
i32.const 6384
local.set $2
local.get $2
i32.const 4
i32.const 2
call $~lib/runtime/doWrapArray
end
i32.store offset=4
local.get $1
end end
global.set $std/array/subarr32 global.set $std/array/subarr32
global.get $std/array/subarr32 global.get $std/array/subarr32
call $~lib/array/Array<Array<i32>>#toString call $~lib/array/Array<Array<i32>>#toString
i32.const 6384 i32.const 6400
call $~lib/string/String.__eq call $~lib/string/String.__eq
i32.eqz i32.eqz
if if
@ -18874,35 +18771,36 @@
i32.const 0 i32.const 0
i32.const 2 i32.const 2
call $~lib/array/Array<Array<u8>>#constructor call $~lib/array/Array<Array<u8>>#constructor
local.set $3 local.set $0
local.get $3 local.get $0
i32.const 0 i32.load offset=4
block $~lib/runtime/WRAPARRAY<u8>|inlined.5 (result i32) local.set $1
i32.const 6408 local.get $1
local.set $2
local.get $2
i32.const 7
i32.const 0
call $~lib/runtime/doWrapArray
end
call $~lib/array/Array<Array<u8>>#__set
local.get $3
i32.const 1
block $~lib/runtime/WRAPARRAY<u8>|inlined.6 (result i32) block $~lib/runtime/WRAPARRAY<u8>|inlined.6 (result i32)
i32.const 6424 i32.const 6440
local.set $2 local.set $2
local.get $2 local.get $2
i32.const 7 i32.const 7
i32.const 0 i32.const 0
call $~lib/runtime/doWrapArray call $~lib/runtime/doWrapArray
end end
call $~lib/array/Array<Array<u8>>#__set i32.store
local.get $3 local.get $1
block $~lib/runtime/WRAPARRAY<u8>|inlined.7 (result i32)
i32.const 6456
local.set $2
local.get $2
i32.const 7
i32.const 0
call $~lib/runtime/doWrapArray
end
i32.store offset=4
local.get $0
end end
global.set $std/array/subarr8 global.set $std/array/subarr8
global.get $std/array/subarr8 global.get $std/array/subarr8
call $~lib/array/Array<Array<u8>>#toString call $~lib/array/Array<Array<u8>>#toString
i32.const 6384 i32.const 6400
call $~lib/string/String.__eq call $~lib/string/String.__eq
i32.eqz i32.eqz
if if
@ -18917,29 +18815,33 @@
i32.const 0 i32.const 0
i32.const 1 i32.const 1
call $~lib/array/Array<Array<Array<u32>>>#constructor call $~lib/array/Array<Array<Array<u32>>>#constructor
local.set $5 local.set $0
local.get $5 local.get $0
i32.const 0 i32.load offset=4
local.set $1
local.get $1
block (result i32) block (result i32)
i32.const 0 i32.const 0
i32.const 1 i32.const 1
call $~lib/array/Array<Array<u32>>#constructor call $~lib/array/Array<Array<u32>>#constructor
local.set $4 local.set $2
local.get $4 local.get $2
i32.const 0 i32.load offset=4
block $~lib/runtime/WRAPARRAY<u32>|inlined.8 (result i32) local.set $3
i32.const 6440 local.get $3
local.set $3 block $~lib/runtime/WRAPARRAY<u32>|inlined.11 (result i32)
local.get $3 i32.const 6520
local.set $4
local.get $4
i32.const 8 i32.const 8
i32.const 2 i32.const 2
call $~lib/runtime/doWrapArray call $~lib/runtime/doWrapArray
end end
call $~lib/array/Array<Array<u32>>#__set i32.store
local.get $4 local.get $2
end end
call $~lib/array/Array<Array<Array<u32>>>#__set i32.store
local.get $5 local.get $0
end end
global.set $std/array/subarrU32 global.set $std/array/subarrU32
global.get $std/array/subarrU32 global.get $std/array/subarrU32
@ -18956,9 +18858,9 @@
unreachable unreachable
end end
) )
(func $start (; 267 ;) (type $FUNCSIG$v) (func $start (; 263 ;) (type $FUNCSIG$v)
call $start:std/array call $start:std/array
) )
(func $null (; 268 ;) (type $FUNCSIG$v) (func $null (; 264 ;) (type $FUNCSIG$v)
) )
) )

@ -326,7 +326,7 @@
if if
i32.const 0 i32.const 0
i32.const 64 i32.const 64
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -340,7 +340,7 @@
if if
i32.const 0 i32.const 0
i32.const 64 i32.const 64
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1552,7 +1552,7 @@
if if
i32.const 0 i32.const 0
i32.const 64 i32.const 64
i32.const 226 i32.const 227
i32.const 57 i32.const 57
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable

@ -408,7 +408,7 @@
if if
i32.const 0 i32.const 0
i32.const 64 i32.const 64
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -423,7 +423,7 @@
if if
i32.const 0 i32.const 0
i32.const 64 i32.const 64
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -2052,7 +2052,7 @@
if if
i32.const 0 i32.const 0
i32.const 64 i32.const 64
i32.const 226 i32.const 227
i32.const 57 i32.const 57
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable

@ -163,7 +163,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -177,7 +177,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable

@ -414,7 +414,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -429,7 +429,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -493,7 +493,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 226 i32.const 227
i32.const 57 i32.const 57
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable

@ -90,7 +90,7 @@
if if
i32.const 0 i32.const 0
i32.const 48 i32.const 48
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -104,7 +104,7 @@
if if
i32.const 0 i32.const 0
i32.const 48 i32.const 48
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable

@ -154,7 +154,7 @@
if if
i32.const 0 i32.const 0
i32.const 48 i32.const 48
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -169,7 +169,7 @@
if if
i32.const 0 i32.const 0
i32.const 48 i32.const 48
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable

@ -123,7 +123,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -137,7 +137,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable

@ -160,7 +160,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -175,7 +175,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable

@ -6281,35 +6281,37 @@
i64.const 63 i64.const 63
i64.shr_u i64.shr_u
local.set $8 local.set $8
local.get $3 block (result i32)
i64.const 1 local.get $3
i64.shl i64.const 1
local.tee $7 i64.shl
i64.const 0 local.tee $7
i64.eq i64.const 0
local.tee $6
i32.eqz
if
local.get $4
i64.const 2047
i64.eq i64.eq
local.set $6 local.tee $6
i32.eqz
if
local.get $4
i64.const 2047
i64.eq
local.set $6
end
local.get $6
i32.eqz
end end
local.get $6 if (result i32)
i32.eqz
if
local.get $1 local.get $1
local.get $1 local.get $1
f64.ne f64.ne
local.set $6 else
local.get $6
end end
local.get $6
if if
local.get $0 local.get $0
local.get $1 local.get $1
f64.mul f64.mul
local.tee $1 local.tee $0
local.get $1 local.get $0
f64.div f64.div
return return
end end
@ -6384,7 +6386,7 @@
local.get $2 local.get $2
local.get $3 local.get $3
i64.ge_u i64.ge_u
if (result i64) if
local.get $2 local.get $2
local.get $3 local.get $3
i64.eq i64.eq
@ -6392,9 +6394,9 @@
local.get $2 local.get $2
local.get $3 local.get $3
i64.sub i64.sub
else local.set $2
local.get $2
end end
local.get $2
i64.const 1 i64.const 1
i64.shl i64.shl
local.set $2 local.set $2
@ -6508,34 +6510,36 @@
i32.const -2147483648 i32.const -2147483648
i32.and i32.and
local.set $8 local.set $8
local.get $4 block (result i32)
i32.const 1 local.get $4
i32.shl i32.const 1
local.tee $7 i32.shl
i32.eqz local.tee $7
local.tee $5 i32.eqz
i32.eqz local.tee $5
if i32.eqz
local.get $3 if
i32.const 255 local.get $3
i32.eq i32.const 255
local.set $5 i32.eq
local.set $5
end
local.get $5
i32.eqz
end end
local.get $5 if (result i32)
i32.eqz
if
local.get $1 local.get $1
local.get $1 local.get $1
f32.ne f32.ne
local.set $5 else
local.get $5
end end
local.get $5
if if
local.get $0 local.get $0
local.get $1 local.get $1
f32.mul f32.mul
local.tee $1 local.tee $0
local.get $1 local.get $0
f32.div f32.div
return return
end end
@ -6604,7 +6608,7 @@
local.get $2 local.get $2
local.get $4 local.get $4
i32.ge_u i32.ge_u
if (result i32) if
local.get $2 local.get $2
local.get $4 local.get $4
i32.eq i32.eq
@ -6612,9 +6616,9 @@
local.get $2 local.get $2
local.get $4 local.get $4
i32.sub i32.sub
else local.set $2
local.get $2
end end
local.get $2
i32.const 1 i32.const 1
i32.shl i32.shl
local.set $2 local.set $2

@ -7798,13 +7798,8 @@
local.get $8 local.get $8
else else
local.get $1 local.get $1
local.set $9 call $~lib/builtins/isNaN<f64>
local.get $9
local.get $9
f64.ne
end end
i32.const 0
i32.ne
if if
local.get $0 local.get $0
local.get $1 local.get $1
@ -8085,13 +8080,8 @@
local.get $8 local.get $8
else else
local.get $1 local.get $1
local.set $9 call $~lib/builtins/isNaN<f32>
local.get $9
local.get $9
f32.ne
end end
i32.const 0
i32.ne
if if
local.get $0 local.get $0
local.get $1 local.get $1
@ -47424,17 +47414,10 @@
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
end end
block $~lib/builtins/isNaN<f32>|inlined.2 (result i32) f32.const nan:0x400000
f32.const nan:0x400000 i32.const 1
i32.const 1 call $~lib/math/ipow32f
call $~lib/math/ipow32f call $~lib/builtins/isNaN<f32>
local.set $4
local.get $4
local.get $4
f32.ne
end
i32.const 0
i32.ne
i32.eqz i32.eqz
if if
i32.const 0 i32.const 0
@ -47444,17 +47427,10 @@
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
end end
block $~lib/builtins/isNaN<f32>|inlined.3 (result i32) f32.const nan:0x400000
f32.const nan:0x400000 i32.const -1
i32.const -1 call $~lib/math/ipow32f
call $~lib/math/ipow32f call $~lib/builtins/isNaN<f32>
local.set $4
local.get $4
local.get $4
f32.ne
end
i32.const 0
i32.ne
i32.eqz i32.eqz
if if
i32.const 0 i32.const 0
@ -47464,17 +47440,10 @@
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
end end
block $~lib/builtins/isNaN<f32>|inlined.4 (result i32) f32.const nan:0x400000
f32.const nan:0x400000 i32.const 2
i32.const 2 call $~lib/math/ipow32f
call $~lib/math/ipow32f call $~lib/builtins/isNaN<f32>
local.set $4
local.get $4
local.get $4
f32.ne
end
i32.const 0
i32.ne
i32.eqz i32.eqz
if if
i32.const 0 i32.const 0

@ -46,35 +46,37 @@
i64.const 63 i64.const 63
i64.shr_u i64.shr_u
local.set $8 local.set $8
local.get $3 block (result i32)
i64.const 1 local.get $3
i64.shl i64.const 1
local.tee $7 i64.shl
i64.const 0 local.tee $7
i64.eq i64.const 0
local.tee $6
i32.eqz
if
local.get $4
i64.const 2047
i64.eq i64.eq
local.set $6 local.tee $6
i32.eqz
if
local.get $4
i64.const 2047
i64.eq
local.set $6
end
local.get $6
i32.eqz
end end
local.get $6 if (result i32)
i32.eqz
if
local.get $1 local.get $1
local.get $1 local.get $1
f64.ne f64.ne
local.set $6 else
local.get $6
end end
local.get $6
if if
local.get $0 local.get $0
local.get $1 local.get $1
f64.mul f64.mul
local.tee $1 local.tee $0
local.get $1 local.get $0
f64.div f64.div
return return
end end
@ -149,7 +151,7 @@
local.get $2 local.get $2
local.get $3 local.get $3
i64.ge_u i64.ge_u
if (result i64) if
local.get $2 local.get $2
local.get $3 local.get $3
i64.eq i64.eq
@ -157,9 +159,9 @@
local.get $2 local.get $2
local.get $3 local.get $3
i64.sub i64.sub
else local.set $2
local.get $2
end end
local.get $2
i64.const 1 i64.const 1
i64.shl i64.shl
local.set $2 local.set $2
@ -298,34 +300,36 @@
i32.const -2147483648 i32.const -2147483648
i32.and i32.and
local.set $8 local.set $8
local.get $4 block (result i32)
i32.const 1 local.get $4
i32.shl i32.const 1
local.tee $7 i32.shl
i32.eqz local.tee $7
local.tee $5 i32.eqz
i32.eqz local.tee $5
if i32.eqz
local.get $3 if
i32.const 255 local.get $3
i32.eq i32.const 255
local.set $5 i32.eq
local.set $5
end
local.get $5
i32.eqz
end end
local.get $5 if (result i32)
i32.eqz
if
local.get $1 local.get $1
local.get $1 local.get $1
f32.ne f32.ne
local.set $5 else
local.get $5
end end
local.get $5
if if
local.get $0 local.get $0
local.get $1 local.get $1
f32.mul f32.mul
local.tee $1 local.tee $0
local.get $1 local.get $0
f32.div f32.div
return return
end end
@ -394,7 +398,7 @@
local.get $2 local.get $2
local.get $4 local.get $4
i32.ge_u i32.ge_u
if (result i32) if
local.get $2 local.get $2
local.get $4 local.get $4
i32.eq i32.eq
@ -402,9 +406,9 @@
local.get $2 local.get $2
local.get $4 local.get $4
i32.sub i32.sub
else local.set $2
local.get $2
end end
local.get $2
i32.const 1 i32.const 1
i32.shl i32.shl
local.set $2 local.set $2

@ -1,13 +1,13 @@
(module (module
(type $FUNCSIG$iddd (func (param f64 f64 f64) (result i32))) (type $FUNCSIG$iddd (func (param f64 f64 f64) (result i32)))
(type $FUNCSIG$ddd (func (param f64 f64) (result f64))) (type $FUNCSIG$ddd (func (param f64 f64) (result f64)))
(type $FUNCSIG$idd (func (param f64 f64) (result i32)))
(type $FUNCSIG$id (func (param f64) (result i32))) (type $FUNCSIG$id (func (param f64) (result i32)))
(type $FUNCSIG$idd (func (param f64 f64) (result i32)))
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(type $FUNCSIG$ifff (func (param f32 f32 f32) (result i32))) (type $FUNCSIG$ifff (func (param f32 f32 f32) (result i32)))
(type $FUNCSIG$fff (func (param f32 f32) (result f32))) (type $FUNCSIG$fff (func (param f32 f32) (result f32)))
(type $FUNCSIG$iff (func (param f32 f32) (result i32)))
(type $FUNCSIG$if (func (param f32) (result i32))) (type $FUNCSIG$if (func (param f32) (result i32)))
(type $FUNCSIG$iff (func (param f32 f32) (result i32)))
(type $FUNCSIG$v (func)) (type $FUNCSIG$v (func))
(import "math" "mod" (func $std/mod/mod (param f64 f64) (result f64))) (import "math" "mod" (func $std/mod/mod (param f64 f64) (result f64)))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
@ -21,7 +21,12 @@
(export "table" (table $0)) (export "table" (table $0))
(export "mod" (func $std/mod/mod)) (export "mod" (func $std/mod/mod))
(start $start) (start $start)
(func $~lib/math/NativeMath.mod (; 2 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) (func $~lib/builtins/isNaN<f64> (; 2 ;) (type $FUNCSIG$id) (param $0 f64) (result i32)
local.get $0
local.get $0
f64.ne
)
(func $~lib/math/NativeMath.mod (; 3 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64)
(local $2 i64) (local $2 i64)
(local $3 i64) (local $3 i64)
(local $4 i64) (local $4 i64)
@ -74,13 +79,8 @@
local.get $8 local.get $8
else else
local.get $1 local.get $1
local.set $9 call $~lib/builtins/isNaN<f64>
local.get $9
local.get $9
f64.ne
end end
i32.const 0
i32.ne
if if
local.get $0 local.get $0
local.get $1 local.get $1
@ -279,11 +279,6 @@
local.get $2 local.get $2
f64.reinterpret_i64 f64.reinterpret_i64
) )
(func $~lib/builtins/isNaN<f64> (; 3 ;) (type $FUNCSIG$id) (param $0 f64) (result i32)
local.get $0
local.get $0
f64.ne
)
(func $std/mod/check<f64> (; 4 ;) (type $FUNCSIG$idd) (param $0 f64) (param $1 f64) (result i32) (func $std/mod/check<f64> (; 4 ;) (type $FUNCSIG$idd) (param $0 f64) (param $1 f64) (result i32)
local.get $1 local.get $1
call $~lib/builtins/isNaN<f64> call $~lib/builtins/isNaN<f64>
@ -335,7 +330,12 @@
local.get $3 local.get $3
end end
) )
(func $~lib/math/NativeMathf.mod (; 6 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) (func $~lib/builtins/isNaN<f32> (; 6 ;) (type $FUNCSIG$if) (param $0 f32) (result i32)
local.get $0
local.get $0
f32.ne
)
(func $~lib/math/NativeMathf.mod (; 7 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -388,13 +388,8 @@
local.get $8 local.get $8
else else
local.get $1 local.get $1
local.set $9 call $~lib/builtins/isNaN<f32>
local.get $9
local.get $9
f32.ne
end end
i32.const 0
i32.ne
if if
local.get $0 local.get $0
local.get $1 local.get $1
@ -591,11 +586,6 @@
local.get $2 local.get $2
f32.reinterpret_i32 f32.reinterpret_i32
) )
(func $~lib/builtins/isNaN<f32> (; 7 ;) (type $FUNCSIG$if) (param $0 f32) (result i32)
local.get $0
local.get $0
f32.ne
)
(func $std/mod/check<f32> (; 8 ;) (type $FUNCSIG$iff) (param $0 f32) (param $1 f32) (result i32) (func $std/mod/check<f32> (; 8 ;) (type $FUNCSIG$iff) (param $0 f32) (param $1 f32) (result i32)
local.get $1 local.get $1
call $~lib/builtins/isNaN<f32> call $~lib/builtins/isNaN<f32>

@ -84,7 +84,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -98,7 +98,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable

@ -147,7 +147,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -162,7 +162,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable

@ -167,7 +167,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -181,7 +181,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable

@ -215,7 +215,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -230,7 +230,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable

@ -1119,7 +1119,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 79 i32.const 78
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1130,7 +1130,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 80 i32.const 79
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1149,7 +1149,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 84 i32.const 83
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1161,7 +1161,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 85 i32.const 84
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1176,7 +1176,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 88 i32.const 87
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1191,7 +1191,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 91 i32.const 90
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1202,7 +1202,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 93 i32.const 92
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1220,7 +1220,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 95 i32.const 94
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1231,7 +1231,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 96 i32.const 95
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1242,7 +1242,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 98 i32.const 97
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1261,7 +1261,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 101 i32.const 100
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1273,7 +1273,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 102 i32.const 101
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1285,7 +1285,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 103 i32.const 102
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1308,7 +1308,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 106 i32.const 105
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1320,7 +1320,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 107 i32.const 106
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1332,7 +1332,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 108 i32.const 107
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1354,7 +1354,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 114 i32.const 113
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1368,7 +1368,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 115 i32.const 114
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1380,7 +1380,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 117 i32.const 116
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1394,7 +1394,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 118 i32.const 117
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1406,7 +1406,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 120 i32.const 119
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1418,7 +1418,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 121 i32.const 120
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1436,7 +1436,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 124 i32.const 123
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1450,7 +1450,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 125 i32.const 124
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1462,7 +1462,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 126 i32.const 125
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1477,7 +1477,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 129 i32.const 128
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1489,7 +1489,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 130 i32.const 129
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable

@ -2,7 +2,6 @@
class Pointer<T> { class Pointer<T> {
// FIXME: does not inline, always yields a trampoline
@inline constructor(offset: usize = 0) { @inline constructor(offset: usize = 0) {
return changetype<Pointer<T>>(offset); return changetype<Pointer<T>>(offset);
} }

@ -1767,7 +1767,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 79 i32.const 78
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1783,7 +1783,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 80 i32.const 79
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1817,7 +1817,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 84 i32.const 83
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1835,7 +1835,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 85 i32.const 84
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1861,7 +1861,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 88 i32.const 87
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1887,7 +1887,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 91 i32.const 90
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1903,7 +1903,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 93 i32.const 92
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1927,7 +1927,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 95 i32.const 94
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1943,7 +1943,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 96 i32.const 95
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1959,7 +1959,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 98 i32.const 97
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1991,7 +1991,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 101 i32.const 100
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -2009,7 +2009,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 102 i32.const 101
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -2027,7 +2027,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 103 i32.const 102
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -2055,7 +2055,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 106 i32.const 105
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -2073,7 +2073,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 107 i32.const 106
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -2091,7 +2091,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 108 i32.const 107
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -2130,7 +2130,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 114 i32.const 113
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -2153,7 +2153,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 115 i32.const 114
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -2176,7 +2176,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 117 i32.const 116
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -2199,7 +2199,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 118 i32.const 117
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -2212,7 +2212,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 120 i32.const 119
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -2225,7 +2225,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 121 i32.const 120
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -2263,7 +2263,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 124 i32.const 123
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -2286,7 +2286,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 125 i32.const 124
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -2299,7 +2299,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 126 i32.const 125
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -2320,7 +2320,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 129 i32.const 128
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -2333,7 +2333,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 130 i32.const 129
i32.const 0 i32.const 0
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable

@ -2653,7 +2653,7 @@
if if
i32.const 0 i32.const 0
i32.const 232 i32.const 232
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -2667,7 +2667,7 @@
if if
i32.const 0 i32.const 0
i32.const 232 i32.const 232
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable

@ -3342,7 +3342,7 @@
if if
i32.const 0 i32.const 0
i32.const 232 i32.const 232
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -3357,7 +3357,7 @@
if if
i32.const 0 i32.const 0
i32.const 232 i32.const 232
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable

@ -11,11 +11,9 @@
(type $FUNCSIG$iiji (func (param i32 i64 i32) (result i32))) (type $FUNCSIG$iiji (func (param i32 i64 i32) (result i32)))
(type $FUNCSIG$vij (func (param i32 i64))) (type $FUNCSIG$vij (func (param i32 i64)))
(type $FUNCSIG$iif (func (param i32 f32) (result i32))) (type $FUNCSIG$iif (func (param i32 f32) (result i32)))
(type $FUNCSIG$if (func (param f32) (result i32)))
(type $FUNCSIG$iifi (func (param i32 f32 i32) (result i32))) (type $FUNCSIG$iifi (func (param i32 f32 i32) (result i32)))
(type $FUNCSIG$vif (func (param i32 f32))) (type $FUNCSIG$vif (func (param i32 f32)))
(type $FUNCSIG$iid (func (param i32 f64) (result i32))) (type $FUNCSIG$iid (func (param i32 f64) (result i32)))
(type $FUNCSIG$id (func (param f64) (result i32)))
(type $FUNCSIG$iidi (func (param i32 f64 i32) (result i32))) (type $FUNCSIG$iidi (func (param i32 f64 i32) (result i32)))
(type $FUNCSIG$vid (func (param i32 f64))) (type $FUNCSIG$vid (func (param i32 f64)))
(type $FUNCSIG$i (func (result i32))) (type $FUNCSIG$i (func (result i32)))
@ -121,7 +119,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -135,7 +133,7 @@
if if
i32.const 0 i32.const 0
i32.const 16 i32.const 16
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -2960,13 +2958,11 @@
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
local.get $1
call $~lib/util/hash/hash32
local.tee $2
local.set $4
local.get $0 local.get $0
local.get $1 local.get $1
local.get $2 local.get $1
call $~lib/util/hash/hash32
local.tee $4
call $~lib/set/Set<i32>#find call $~lib/set/Set<i32>#find
i32.eqz i32.eqz
if if
@ -3888,13 +3884,11 @@
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
local.get $1
call $~lib/util/hash/hash64
local.tee $2
local.set $4
local.get $0 local.get $0
local.get $1 local.get $1
local.get $2 local.get $1
call $~lib/util/hash/hash64
local.tee $4
call $~lib/set/Set<i64>#find call $~lib/set/Set<i64>#find
i32.eqz i32.eqz
if if
@ -4576,12 +4570,7 @@
call $~lib/set/Set<i8>#clear call $~lib/set/Set<i8>#clear
local.get $0 local.get $0
) )
(func $~lib/util/hash/HASH<f32> (; 56 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) (func $~lib/set/Set<f32>#find (; 56 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32)
local.get $0
i32.reinterpret_f32
call $~lib/util/hash/hash32
)
(func $~lib/set/Set<f32>#find (; 57 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32)
local.get $0 local.get $0
i32.load i32.load
local.get $0 local.get $0
@ -4624,16 +4613,17 @@
end end
i32.const 0 i32.const 0
) )
(func $~lib/set/Set<f32>#has (; 58 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) (func $~lib/set/Set<f32>#has (; 57 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32)
local.get $0 local.get $0
local.get $1 local.get $1
local.get $1 local.get $1
call $~lib/util/hash/HASH<f32> i32.reinterpret_f32
call $~lib/util/hash/hash32
call $~lib/set/Set<f32>#find call $~lib/set/Set<f32>#find
i32.const 0 i32.const 0
i32.ne i32.ne
) )
(func $~lib/set/Set<f32>#rehash (; 59 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/set/Set<f32>#rehash (; 58 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -4731,14 +4721,15 @@
i32.load offset=20 i32.load offset=20
i32.store offset=16 i32.store offset=16
) )
(func $~lib/set/Set<f32>#add (; 60 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32) (func $~lib/set/Set<f32>#add (; 59 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
local.get $0 local.get $0
local.get $1 local.get $1
local.get $1 local.get $1
call $~lib/util/hash/HASH<f32> i32.reinterpret_f32
call $~lib/util/hash/hash32
local.tee $4 local.tee $4
call $~lib/set/Set<f32>#find call $~lib/set/Set<f32>#find
i32.eqz i32.eqz
@ -4814,7 +4805,7 @@
i32.store i32.store
end end
) )
(func $~lib/set/Set<f32>#delete (; 61 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32) (func $~lib/set/Set<f32>#delete (; 60 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
local.get $0 local.get $0
@ -4876,7 +4867,7 @@
call $~lib/set/Set<f32>#rehash call $~lib/set/Set<f32>#rehash
end end
) )
(func $std/set/test<f32> (; 62 ;) (type $FUNCSIG$v) (func $std/set/test<f32> (; 61 ;) (type $FUNCSIG$v)
(local $0 f32) (local $0 f32)
(local $1 i32) (local $1 i32)
call $~lib/set/Set<f32>#constructor call $~lib/set/Set<f32>#constructor
@ -5121,7 +5112,7 @@
unreachable unreachable
end end
) )
(func $~lib/set/Set<f64>#constructor (; 63 ;) (type $FUNCSIG$i) (result i32) (func $~lib/set/Set<f64>#constructor (; 62 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32) (local $0 i32)
i32.const 24 i32.const 24
call $~lib/runtime/doAllocate call $~lib/runtime/doAllocate
@ -5149,12 +5140,7 @@
call $~lib/set/Set<i64>#clear call $~lib/set/Set<i64>#clear
local.get $0 local.get $0
) )
(func $~lib/util/hash/HASH<f64> (; 64 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) (func $~lib/set/Set<f64>#find (; 63 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32)
local.get $0
i64.reinterpret_f64
call $~lib/util/hash/hash64
)
(func $~lib/set/Set<f64>#find (; 65 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32)
local.get $0 local.get $0
i32.load i32.load
local.get $0 local.get $0
@ -5197,16 +5183,17 @@
end end
i32.const 0 i32.const 0
) )
(func $~lib/set/Set<f64>#has (; 66 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (func $~lib/set/Set<f64>#has (; 64 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32)
local.get $0 local.get $0
local.get $1 local.get $1
local.get $1 local.get $1
call $~lib/util/hash/HASH<f64> i64.reinterpret_f64
call $~lib/util/hash/hash64
call $~lib/set/Set<f64>#find call $~lib/set/Set<f64>#find
i32.const 0 i32.const 0
i32.ne i32.ne
) )
(func $~lib/set/Set<f64>#rehash (; 67 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/set/Set<f64>#rehash (; 65 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -5304,14 +5291,15 @@
i32.load offset=20 i32.load offset=20
i32.store offset=16 i32.store offset=16
) )
(func $~lib/set/Set<f64>#add (; 68 ;) (type $FUNCSIG$vid) (param $0 i32) (param $1 f64) (func $~lib/set/Set<f64>#add (; 66 ;) (type $FUNCSIG$vid) (param $0 i32) (param $1 f64)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
local.get $0 local.get $0
local.get $1 local.get $1
local.get $1 local.get $1
call $~lib/util/hash/HASH<f64> i64.reinterpret_f64
call $~lib/util/hash/hash64
local.tee $4 local.tee $4
call $~lib/set/Set<f64>#find call $~lib/set/Set<f64>#find
i32.eqz i32.eqz
@ -5387,7 +5375,7 @@
i32.store i32.store
end end
) )
(func $~lib/set/Set<f64>#delete (; 69 ;) (type $FUNCSIG$vid) (param $0 i32) (param $1 f64) (func $~lib/set/Set<f64>#delete (; 67 ;) (type $FUNCSIG$vid) (param $0 i32) (param $1 f64)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
local.get $0 local.get $0
@ -5449,7 +5437,7 @@
call $~lib/set/Set<f64>#rehash call $~lib/set/Set<f64>#rehash
end end
) )
(func $std/set/test<f64> (; 70 ;) (type $FUNCSIG$v) (func $std/set/test<f64> (; 68 ;) (type $FUNCSIG$v)
(local $0 f64) (local $0 f64)
(local $1 i32) (local $1 i32)
call $~lib/set/Set<f64>#constructor call $~lib/set/Set<f64>#constructor
@ -5694,7 +5682,7 @@
unreachable unreachable
end end
) )
(func $start (; 71 ;) (type $FUNCSIG$v) (func $start (; 69 ;) (type $FUNCSIG$v)
i32.const 128 i32.const 128
global.set $~lib/allocator/arena/startOffset global.set $~lib/allocator/arena/startOffset
global.get $~lib/allocator/arena/startOffset global.get $~lib/allocator/arena/startOffset
@ -5710,7 +5698,7 @@
call $std/set/test<f32> call $std/set/test<f32>
call $std/set/test<f64> call $std/set/test<f64>
) )
(func $null (; 72 ;) (type $FUNCSIG$v) (func $null (; 70 ;) (type $FUNCSIG$v)
nop nop
) )
) )

File diff suppressed because it is too large Load Diff

@ -1514,7 +1514,7 @@
if if
i32.const 0 i32.const 0
i32.const 136 i32.const 136
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1528,7 +1528,7 @@
if if
i32.const 0 i32.const 0
i32.const 136 i32.const 136
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1596,7 +1596,7 @@
if if
i32.const 0 i32.const 0
i32.const 96 i32.const 96
i32.const 443 i32.const 447
i32.const 8 i32.const 8
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1643,7 +1643,7 @@
if if
i32.const 0 i32.const 0
i32.const 96 i32.const 96
i32.const 447 i32.const 451
i32.const 8 i32.const 8
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1716,7 +1716,7 @@
if if
i32.const 0 i32.const 0
i32.const 96 i32.const 96
i32.const 459 i32.const 463
i32.const 8 i32.const 8
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1769,7 +1769,7 @@
if if
i32.const 0 i32.const 0
i32.const 96 i32.const 96
i32.const 468 i32.const 472
i32.const 4 i32.const 4
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable

@ -1926,7 +1926,7 @@
if if
i32.const 0 i32.const 0
i32.const 136 i32.const 136
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -1941,7 +1941,7 @@
if if
i32.const 0 i32.const 0
i32.const 136 i32.const 136
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -2034,7 +2034,7 @@
if if
i32.const 0 i32.const 0
i32.const 96 i32.const 96
i32.const 443 i32.const 447
i32.const 8 i32.const 8
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -2088,7 +2088,7 @@
if if
i32.const 0 i32.const 0
i32.const 96 i32.const 96
i32.const 447 i32.const 451
i32.const 8 i32.const 8
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -2183,7 +2183,7 @@
if if
i32.const 0 i32.const 0
i32.const 96 i32.const 96
i32.const 459 i32.const 463
i32.const 8 i32.const 8
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -2246,7 +2246,7 @@
if if
i32.const 0 i32.const 0
i32.const 96 i32.const 96
i32.const 468 i32.const 472
i32.const 4 i32.const 4
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable

@ -283,7 +283,7 @@
if if
i32.const 0 i32.const 0
i32.const 96 i32.const 96
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -297,7 +297,7 @@
if if
i32.const 0 i32.const 0
i32.const 96 i32.const 96
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -2387,7 +2387,7 @@
if if
i32.const 0 i32.const 0
i32.const 168 i32.const 168
i32.const 565 i32.const 569
i32.const 10 i32.const 10
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -3052,7 +3052,7 @@
if if
i32.const 0 i32.const 0
i32.const 96 i32.const 96
i32.const 226 i32.const 227
i32.const 57 i32.const 57
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -3247,25 +3247,7 @@
i32.store offset=8 i32.store offset=8
end end
) )
(func $~lib/array/Array<String>#__set (; 35 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/array/Array<String>#push (; 35 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
local.get $0
i32.const 1
call $~lib/array/ensureCapacity
local.get $0
i32.load offset=4
local.get $1
i32.store
i32.const 0
local.get $0
i32.load offset=12
i32.ge_s
if
local.get $0
i32.const 1
i32.store offset=12
end
)
(func $~lib/array/Array<String>#push (; 36 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
local.get $0 local.get $0
local.get $0 local.get $0
@ -3288,23 +3270,7 @@
local.get $1 local.get $1
i32.store i32.store
) )
(func $~lib/runtime/assertRegistered (; 37 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/string/String#split (; 36 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
local.get $0
i32.const 8
i32.sub
i32.load
i32.const -1520547049
i32.eq
if
i32.const 0
i32.const 96
i32.const 199
i32.const 2
call $~lib/env/abort
unreachable
end
)
(func $~lib/string/String#split (; 38 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
(local $5 i32) (local $5 i32)
@ -3330,217 +3296,205 @@
call $~lib/array/Array<String>#constructor call $~lib/array/Array<String>#constructor
return return
end end
local.get $1 block $folding-inner0
i32.eqz local.get $1
if i32.eqz
i32.const 1 br_if $folding-inner0
call $~lib/array/Array<String>#constructor
local.tee $3
local.get $0 local.get $0
call $~lib/array/Array<String>#__set i32.const 8
local.get $3 i32.sub
return i32.load offset=4
end i32.const 1
local.get $0 i32.shr_u
i32.const 8 local.set $4
i32.sub i32.const 2147483647
i32.load offset=4
i32.const 1
i32.shr_u
local.set $6
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
local.tee $3
local.set $9
local.get $3
if
local.get $6
i32.eqz
if
i32.const 1
call $~lib/array/Array<String>#constructor
local.tee $5
i32.load offset=4
i32.const 312
i32.store
local.get $5
return
end
else
local.get $6
i32.eqz
if
i32.const 0
call $~lib/array/Array<String>#constructor
return
end
local.get $6
local.tee $3
local.get $2 local.get $2
local.get $3
local.get $2 local.get $2
i32.const 0
i32.lt_s i32.lt_s
select select
local.tee $6 local.set $2
call $~lib/array/Array<String>#constructor
local.tee $3
i32.load offset=4
local.set $5
loop $repeat|0
local.get $4
local.get $6
i32.lt_s
if
i32.const 2
call $~lib/runtime/doAllocate
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 $5
i32.add
local.get $1
i32.const 1
call $~lib/runtime/doRegister
i32.store
local.get $4
i32.const 1
i32.add
local.set $4
br $repeat|0
end
end
local.get $3
return
end
i32.const 0
call $~lib/array/Array<String>#constructor
local.set $7
loop $continue|1
local.get $0
local.get $1 local.get $1
local.get $4 i32.const 8
call $~lib/string/String#indexOf i32.sub
local.tee $8 i32.load offset=4
i32.const -1 i32.const 1
i32.ne i32.shr_u
local.tee $3
local.set $9
local.get $3
if if
local.get $8
local.get $4 local.get $4
i32.sub i32.eqz
local.tee $5
i32.const 0
i32.gt_s
if if
local.get $5
i32.const 1 i32.const 1
i32.shl call $~lib/array/Array<String>#constructor
local.tee $5
call $~lib/runtime/doAllocate
local.tee $3 local.tee $3
local.get $4 i32.load offset=4
i32.const 1
i32.shl
local.get $0
i32.add
local.get $5
call $~lib/memory/memory.copy
local.get $7
local.get $3
i32.const 1
call $~lib/runtime/doRegister
call $~lib/array/Array<String>#push
else
local.get $7
i32.const 312 i32.const 312
call $~lib/array/Array<String>#push i32.store
end local.get $3
local.get $10
i32.const 1
i32.add
local.tee $10
local.get $2
i32.eq
if
local.get $7
return return
end end
local.get $8 else
local.get $9 local.get $4
i32.add i32.eqz
local.set $4 if
br $continue|1 i32.const 0
call $~lib/array/Array<String>#constructor
return
end
local.get $4
local.get $2
local.get $4
local.get $2
i32.lt_s
select
local.tee $4
call $~lib/array/Array<String>#constructor
local.tee $7
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
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.const 1
call $~lib/runtime/doRegister
i32.store
local.get $1
i32.const 1
i32.add
local.set $1
br $repeat|0
end
end
local.get $7
return
end end
end i32.const 0
local.get $4
i32.eqz
if
i32.const 1
call $~lib/array/Array<String>#constructor call $~lib/array/Array<String>#constructor
local.tee $3 local.set $5
i32.load offset=4 loop $continue|1
local.set $1 local.get $0
local.get $0 local.get $1
call $~lib/runtime/assertRegistered local.get $6
local.get $3 call $~lib/string/String#indexOf
call $~lib/runtime/assertRegistered local.tee $8
local.get $1 i32.const -1
local.get $0 i32.ne
i32.store if
local.get $3 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<String>#push
else
local.get $5
i32.const 312
call $~lib/array/Array<String>#push
end
local.get $10
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
end
end
local.get $6
i32.eqz
br_if $folding-inner0
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<String>#push
else
local.get $5
i32.const 312
call $~lib/array/Array<String>#push
end
local.get $5
return return
end end
local.get $6 i32.const 1
local.get $4 call $~lib/array/Array<String>#constructor
i32.sub local.tee $3
local.tee $1 i32.load offset=4
i32.const 0 local.get $0
i32.gt_s i32.store
if local.get $3
local.get $1
i32.const 1
i32.shl
local.tee $1
call $~lib/runtime/doAllocate
local.tee $5
local.get $4
i32.const 1
i32.shl
local.get $0
i32.add
local.get $1
call $~lib/memory/memory.copy
local.get $7
local.get $5
i32.const 1
call $~lib/runtime/doRegister
call $~lib/array/Array<String>#push
else
local.get $7
i32.const 312
call $~lib/array/Array<String>#push
end
local.get $7
) )
(func $~lib/array/Array<String>#__get (; 39 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/array/Array<String>#__get (; 37 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $1 local.get $1
local.get $0 local.get $0
i32.load offset=8 i32.load offset=8
@ -3563,7 +3517,7 @@
i32.add i32.add
i32.load i32.load
) )
(func $~lib/util/number/decimalCount32 (; 40 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/util/number/decimalCount32 (; 38 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.const 100000 i32.const 100000
i32.lt_u i32.lt_u
@ -3617,7 +3571,7 @@
end end
end end
) )
(func $~lib/util/number/utoa32_lut (; 41 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/util/number/utoa32_lut (; 39 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
i32.const 2060 i32.const 2060
@ -3727,7 +3681,7 @@
i32.store16 i32.store16
end end
) )
(func $~lib/util/number/itoa32 (; 42 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/util/number/itoa32 (; 40 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
@ -3769,7 +3723,7 @@
i32.const 1 i32.const 1
call $~lib/runtime/doRegister call $~lib/runtime/doRegister
) )
(func $~lib/util/number/utoa32 (; 43 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/util/number/utoa32 (; 41 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
local.get $0 local.get $0
@ -3792,7 +3746,7 @@
i32.const 1 i32.const 1
call $~lib/runtime/doRegister call $~lib/runtime/doRegister
) )
(func $~lib/util/number/decimalCount64 (; 44 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (func $~lib/util/number/decimalCount64 (; 42 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32)
local.get $0 local.get $0
i64.const 1000000000000000 i64.const 1000000000000000
i64.lt_u i64.lt_u
@ -3846,7 +3800,7 @@
end end
end end
) )
(func $~lib/util/number/utoa64_lut (; 45 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (func $~lib/util/number/utoa64_lut (; 43 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
(local $5 i32) (local $5 i32)
@ -3943,7 +3897,7 @@
local.get $2 local.get $2
call $~lib/util/number/utoa32_lut call $~lib/util/number/utoa32_lut
) )
(func $~lib/util/number/utoa64 (; 46 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (func $~lib/util/number/utoa64 (; 44 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
@ -3985,7 +3939,7 @@
i32.const 1 i32.const 1
call $~lib/runtime/doRegister call $~lib/runtime/doRegister
) )
(func $~lib/util/number/itoa64 (; 47 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (func $~lib/util/number/itoa64 (; 45 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
@ -4050,7 +4004,7 @@
i32.const 1 i32.const 1
call $~lib/runtime/doRegister call $~lib/runtime/doRegister
) )
(func $~lib/util/number/genDigits (; 48 ;) (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 (; 46 ;) (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 $7 i32)
(local $8 i32) (local $8 i32)
(local $9 i64) (local $9 i64)
@ -4468,7 +4422,7 @@
local.get $7 local.get $7
end end
) )
(func $~lib/util/number/prettify (; 49 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/util/number/prettify (; 47 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
local.get $2 local.get $2
@ -4729,7 +4683,7 @@
end end
end end
) )
(func $~lib/util/number/dtoa_core (; 50 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (func $~lib/util/number/dtoa_core (; 48 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32)
(local $2 i32) (local $2 i32)
(local $3 i64) (local $3 i64)
(local $4 i64) (local $4 i64)
@ -5041,7 +4995,7 @@
local.get $12 local.get $12
i32.add i32.add
) )
(func $~lib/string/String#substring (; 51 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/string/String#substring (; 49 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -5139,7 +5093,7 @@
i32.const 1 i32.const 1
call $~lib/runtime/doRegister call $~lib/runtime/doRegister
) )
(func $~lib/util/number/dtoa (; 52 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) (func $~lib/util/number/dtoa (; 50 ;) (type $FUNCSIG$id) (param $0 f64) (result i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
local.get $0 local.get $0
@ -5184,7 +5138,7 @@
call $~lib/runtime/assertUnregistered call $~lib/runtime/assertUnregistered
local.get $1 local.get $1
) )
(func $start:std/string (; 53 ;) (type $FUNCSIG$v) (func $start:std/string (; 51 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
global.get $std/string/str global.get $std/string/str
i32.const 16 i32.const 16
@ -8511,13 +8465,13 @@
unreachable unreachable
end end
) )
(func $std/string/getString (; 54 ;) (type $FUNCSIG$i) (result i32) (func $std/string/getString (; 52 ;) (type $FUNCSIG$i) (result i32)
global.get $std/string/str global.get $std/string/str
) )
(func $start (; 55 ;) (type $FUNCSIG$v) (func $start (; 53 ;) (type $FUNCSIG$v)
call $start:std/string call $start:std/string
) )
(func $null (; 56 ;) (type $FUNCSIG$v) (func $null (; 54 ;) (type $FUNCSIG$v)
nop nop
) )
) )

@ -8,7 +8,6 @@
(type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$viii (func (param i32 i32 i32)))
(type $FUNCSIG$dii (func (param i32 i32) (result f64))) (type $FUNCSIG$dii (func (param i32 i32) (result f64)))
(type $FUNCSIG$di (func (param i32) (result f64))) (type $FUNCSIG$di (func (param i32) (result f64)))
(type $FUNCSIG$vii (func (param i32 i32)))
(type $FUNCSIG$ij (func (param i64) (result i32))) (type $FUNCSIG$ij (func (param i64) (result i32)))
(type $FUNCSIG$viji (func (param i32 i64 i32))) (type $FUNCSIG$viji (func (param i32 i64 i32)))
(type $FUNCSIG$id (func (param f64) (result i32))) (type $FUNCSIG$id (func (param f64) (result i32)))
@ -354,7 +353,7 @@
if if
i32.const 0 i32.const 0
i32.const 96 i32.const 96
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -369,7 +368,7 @@
if if
i32.const 0 i32.const 0
i32.const 96 i32.const 96
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -3010,7 +3009,7 @@
if if
i32.const 0 i32.const 0
i32.const 168 i32.const 168
i32.const 565 i32.const 569
i32.const 10 i32.const 10
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -3782,7 +3781,7 @@
if if
i32.const 0 i32.const 0
i32.const 96 i32.const 96
i32.const 226 i32.const 227
i32.const 57 i32.const 57
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -4014,34 +4013,7 @@
i32.store offset=8 i32.store offset=8
end end
) )
(func $~lib/array/Array<String>#__set (; 41 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/array/Array<String>#push (; 41 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0
local.get $1
i32.const 1
i32.add
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
local.get $1
local.get $0
i32.load offset=12
i32.ge_s
if
local.get $0
local.get $1
i32.const 1
i32.add
i32.store offset=12
end
)
(func $~lib/array/Array<String>#push (; 42 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
local.get $0 local.get $0
i32.load offset=12 i32.load offset=12
@ -4067,30 +4039,7 @@
i32.store i32.store
local.get $2 local.get $2
) )
(func $~lib/runtime/assertRegistered (; 43 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/string/String#split (; 42 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
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 96
i32.const 199
i32.const 2
call $~lib/env/abort
unreachable
end
)
(func $~lib/runtime/doLink (; 44 ;) (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/string/String#split (; 45 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
(local $5 i32) (local $5 i32)
@ -4133,19 +4082,21 @@
call $~lib/array/Array<String>#constructor call $~lib/array/Array<String>#constructor
local.set $3 local.set $3
local.get $3 local.get $3
i32.const 0 i32.load offset=4
local.set $4
local.get $4
local.get $0 local.get $0
call $~lib/array/Array<String>#__set i32.store
local.get $3 local.get $3
end end
return return
end end
local.get $0 local.get $0
call $~lib/string/String#get:length call $~lib/string/String#get:length
local.set $4 local.set $5
local.get $1 local.get $1
call $~lib/string/String#get:length call $~lib/string/String#get:length
local.set $5 local.set $6
local.get $2 local.get $2
i32.const 0 i32.const 0
i32.lt_s i32.lt_s
@ -4153,10 +4104,10 @@
global.get $~lib/builtins/i32.MAX_VALUE global.get $~lib/builtins/i32.MAX_VALUE
local.set $2 local.set $2
end end
local.get $5 local.get $6
i32.eqz i32.eqz
if if
local.get $4 local.get $5
i32.eqz i32.eqz
if if
i32.const 0 i32.const 0
@ -4164,28 +4115,28 @@
call $~lib/array/Array<String>#constructor call $~lib/array/Array<String>#constructor
return return
end end
local.get $4 local.get $5
local.tee $3 local.tee $4
local.get $2 local.get $2
local.tee $6 local.tee $3
local.get $4
local.get $3 local.get $3
local.get $6
i32.lt_s i32.lt_s
select select
local.set $4 local.set $5
i32.const 0 i32.const 0
local.get $4 local.get $5
call $~lib/array/Array<String>#constructor call $~lib/array/Array<String>#constructor
local.set $3 local.set $4
local.get $3 local.get $4
i32.load offset=4 i32.load offset=4
local.set $6 local.set $3
block $break|0 block $break|0
i32.const 0 i32.const 0
local.set $7 local.set $7
loop $repeat|0 loop $repeat|0
local.get $7 local.get $7
local.get $4 local.get $5
i32.lt_s i32.lt_s
i32.eqz i32.eqz
br_if $break|0 br_if $break|0
@ -4205,7 +4156,7 @@
i32.add i32.add
i32.load16_u i32.load16_u
i32.store16 i32.store16
local.get $6 local.get $3
local.get $7 local.get $7
i32.const 2 i32.const 2
i32.shl i32.shl
@ -4228,21 +4179,21 @@
end end
unreachable unreachable
end end
local.get $3 local.get $4
return return
else else
local.get $4 local.get $5
i32.eqz i32.eqz
if if
i32.const 0 i32.const 0
i32.const 1 i32.const 1
call $~lib/array/Array<String>#constructor call $~lib/array/Array<String>#constructor
local.set $6 local.set $3
local.get $6 local.get $3
i32.load offset=4 i32.load offset=4
i32.const 312 i32.const 312
i32.store i32.store
local.get $6 local.get $3
return return
end end
end end
@ -4270,33 +4221,33 @@
local.get $11 local.get $11
local.get $12 local.get $12
i32.sub i32.sub
local.set $6 local.set $3
local.get $6 local.get $3
i32.const 0 i32.const 0
i32.gt_s i32.gt_s
if if
block $~lib/runtime/ALLOCATE|inlined.9 (result i32) block $~lib/runtime/ALLOCATE|inlined.9 (result i32)
local.get $6 local.get $3
i32.const 1 i32.const 1
i32.shl i32.shl
local.set $3 local.set $4
local.get $3 local.get $4
call $~lib/runtime/doAllocate call $~lib/runtime/doAllocate
end end
local.set $3 local.set $4
local.get $3 local.get $4
local.get $0 local.get $0
local.get $12 local.get $12
i32.const 1 i32.const 1
i32.shl i32.shl
i32.add i32.add
local.get $6 local.get $3
i32.const 1 i32.const 1
i32.shl i32.shl
call $~lib/memory/memory.copy call $~lib/memory/memory.copy
local.get $10 local.get $10
block $~lib/runtime/REGISTER<String>|inlined.8 (result i32) block $~lib/runtime/REGISTER<String>|inlined.8 (result i32)
local.get $3 local.get $4
local.set $7 local.set $7
local.get $7 local.get $7
i32.const 1 i32.const 1
@ -4321,7 +4272,7 @@
return return
end end
local.get $11 local.get $11
local.get $5 local.get $6
i32.add i32.add
local.set $12 local.set $12
end end
@ -4335,23 +4286,15 @@
i32.const 0 i32.const 0
i32.const 1 i32.const 1
call $~lib/array/Array<String>#constructor call $~lib/array/Array<String>#constructor
local.set $6 local.set $3
local.get $6 local.get $3
local.tee $3
i32.load offset=4 i32.load offset=4
block $~lib/runtime/LINK<String,Array<String>>|inlined.0 (result i32) local.get $0
local.get $0
local.set $7
local.get $7
local.get $3
call $~lib/runtime/doLink
local.get $7
end
i32.store i32.store
local.get $6 local.get $3
return return
end end
local.get $4 local.get $5
local.get $12 local.get $12
i32.sub i32.sub
local.set $14 local.set $14
@ -4363,12 +4306,12 @@
local.get $14 local.get $14
i32.const 1 i32.const 1
i32.shl i32.shl
local.set $6 local.set $3
local.get $6 local.get $3
call $~lib/runtime/doAllocate call $~lib/runtime/doAllocate
end end
local.set $6 local.set $3
local.get $6 local.get $3
local.get $0 local.get $0
local.get $12 local.get $12
i32.const 1 i32.const 1
@ -4380,9 +4323,9 @@
call $~lib/memory/memory.copy call $~lib/memory/memory.copy
local.get $10 local.get $10
block $~lib/runtime/REGISTER<String>|inlined.9 (result i32) block $~lib/runtime/REGISTER<String>|inlined.9 (result i32)
local.get $6
local.set $3
local.get $3 local.get $3
local.set $4
local.get $4
i32.const 1 i32.const 1
call $~lib/runtime/doRegister call $~lib/runtime/doRegister
end end
@ -4396,11 +4339,11 @@
end end
local.get $10 local.get $10
) )
(func $~lib/array/Array<String>#get:length (; 46 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/array/Array<String>#get:length (; 43 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.load offset=12 i32.load offset=12
) )
(func $~lib/array/Array<String>#__get (; 47 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/array/Array<String>#__get (; 44 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $1 local.get $1
local.get $0 local.get $0
i32.load offset=8 i32.load offset=8
@ -4423,7 +4366,7 @@
i32.add i32.add
i32.load i32.load
) )
(func $~lib/util/number/decimalCount32 (; 48 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/util/number/decimalCount32 (; 45 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
local.get $0 local.get $0
i32.const 100000 i32.const 100000
@ -4492,7 +4435,7 @@
unreachable unreachable
unreachable unreachable
) )
(func $~lib/util/number/utoa32_lut (; 49 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/util/number/utoa32_lut (; 46 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
(local $5 i32) (local $5 i32)
@ -4635,7 +4578,7 @@
i32.store16 i32.store16
end end
) )
(func $~lib/util/number/itoa32 (; 50 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/util/number/itoa32 (; 47 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
@ -4699,7 +4642,7 @@
call $~lib/runtime/doRegister call $~lib/runtime/doRegister
end end
) )
(func $~lib/util/number/utoa32 (; 51 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/util/number/utoa32 (; 48 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
@ -4743,7 +4686,7 @@
call $~lib/runtime/doRegister call $~lib/runtime/doRegister
end end
) )
(func $~lib/util/number/decimalCount64 (; 52 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (func $~lib/util/number/decimalCount64 (; 49 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32)
(local $1 i32) (local $1 i32)
local.get $0 local.get $0
i64.const 1000000000000000 i64.const 1000000000000000
@ -4812,7 +4755,7 @@
unreachable unreachable
unreachable unreachable
) )
(func $~lib/util/number/utoa64_lut (; 53 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (func $~lib/util/number/utoa64_lut (; 50 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i64) (local $4 i64)
(local $5 i32) (local $5 i32)
@ -4940,7 +4883,7 @@
local.get $2 local.get $2
call $~lib/util/number/utoa32_lut call $~lib/util/number/utoa32_lut
) )
(func $~lib/util/number/utoa64 (; 54 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (func $~lib/util/number/utoa64 (; 51 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
@ -5020,7 +4963,7 @@
call $~lib/runtime/doRegister call $~lib/runtime/doRegister
end end
) )
(func $~lib/util/number/itoa64 (; 55 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (func $~lib/util/number/itoa64 (; 52 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
@ -5122,19 +5065,19 @@
call $~lib/runtime/doRegister call $~lib/runtime/doRegister
end end
) )
(func $~lib/builtins/isFinite<f64> (; 56 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) (func $~lib/builtins/isFinite<f64> (; 53 ;) (type $FUNCSIG$id) (param $0 f64) (result i32)
local.get $0 local.get $0
local.get $0 local.get $0
f64.sub f64.sub
f64.const 0 f64.const 0
f64.eq f64.eq
) )
(func $~lib/builtins/isNaN<f64> (; 57 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) (func $~lib/builtins/isNaN<f64> (; 54 ;) (type $FUNCSIG$id) (param $0 f64) (result i32)
local.get $0 local.get $0
local.get $0 local.get $0
f64.ne f64.ne
) )
(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) (func $~lib/util/number/genDigits (; 55 ;) (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 $7 i32)
(local $8 i64) (local $8 i64)
(local $9 i64) (local $9 i64)
@ -5705,7 +5648,7 @@
end end
local.get $15 local.get $15
) )
(func $~lib/util/number/prettify (; 59 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/util/number/prettify (; 56 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
(local $5 i32) (local $5 i32)
@ -6038,7 +5981,7 @@
unreachable unreachable
unreachable unreachable
) )
(func $~lib/util/number/dtoa_core (; 60 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (func $~lib/util/number/dtoa_core (; 57 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32)
(local $2 i32) (local $2 i32)
(local $3 f64) (local $3 f64)
(local $4 i32) (local $4 i32)
@ -6484,7 +6427,7 @@
local.get $2 local.get $2
i32.add i32.add
) )
(func $~lib/string/String#substring (; 61 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/string/String#substring (; 58 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
(local $5 i32) (local $5 i32)
@ -6610,7 +6553,7 @@
call $~lib/runtime/doRegister call $~lib/runtime/doRegister
end end
) )
(func $~lib/runtime/doDiscard (; 62 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/runtime/doDiscard (; 59 ;) (type $FUNCSIG$vi) (param $0 i32)
local.get $0 local.get $0
call $~lib/runtime/assertUnregistered call $~lib/runtime/assertUnregistered
local.get $0 local.get $0
@ -6618,7 +6561,7 @@
i32.sub i32.sub
call $~lib/memory/memory.free call $~lib/memory/memory.free
) )
(func $~lib/util/number/dtoa (; 63 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) (func $~lib/util/number/dtoa (; 60 ;) (type $FUNCSIG$id) (param $0 f64) (result i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
@ -6674,7 +6617,7 @@
end end
local.get $4 local.get $4
) )
(func $start:std/string (; 64 ;) (type $FUNCSIG$v) (func $start:std/string (; 61 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
@ -10066,12 +10009,12 @@
unreachable unreachable
end end
) )
(func $std/string/getString (; 65 ;) (type $FUNCSIG$i) (result i32) (func $std/string/getString (; 62 ;) (type $FUNCSIG$i) (result i32)
global.get $std/string/str global.get $std/string/str
) )
(func $start (; 66 ;) (type $FUNCSIG$v) (func $start (; 63 ;) (type $FUNCSIG$v)
call $start:std/string call $start:std/string
) )
(func $null (; 67 ;) (type $FUNCSIG$v) (func $null (; 64 ;) (type $FUNCSIG$v)
) )
) )

@ -143,7 +143,7 @@
if if
i32.const 0 i32.const 0
i32.const 72 i32.const 72
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -157,7 +157,7 @@
if if
i32.const 0 i32.const 0
i32.const 72 i32.const 72
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable

@ -205,7 +205,7 @@
if if
i32.const 0 i32.const 0
i32.const 72 i32.const 72
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -220,7 +220,7 @@
if if
i32.const 0 i32.const 0
i32.const 72 i32.const 72
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable

@ -403,7 +403,7 @@
if if
i32.const 0 i32.const 0
i32.const 64 i32.const 64
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -417,7 +417,7 @@
if if
i32.const 0 i32.const 0
i32.const 64 i32.const 64
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -465,7 +465,7 @@
if if
i32.const 0 i32.const 0
i32.const 64 i32.const 64
i32.const 226 i32.const 227
i32.const 57 i32.const 57
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -8606,24 +8606,24 @@
local.get $0 local.get $0
i32.reinterpret_f32 i32.reinterpret_f32
local.tee $1 local.tee $1
i32.const -2147483648
i32.and
local.set $4
local.get $1
i32.const 23 i32.const 23
i32.shr_u i32.shr_u
i32.const 255 i32.const 255
i32.and i32.and
local.set $2 local.tee $2
local.get $1
i32.const -2147483648
i32.and
local.set $4
local.get $2
i32.const 255 i32.const 255
i32.eq i32.eq
local.tee $3 local.tee $3
if (result i32) i32.eqz
local.get $3 if
else
i32.const 0 i32.const 0
local.set $3
end end
local.get $3
if if
local.get $0 local.get $0
f32.const 2 f32.const 2
@ -8677,7 +8677,7 @@
local.get $1 local.get $1
i32.const 8388608 i32.const 8388608
i32.ge_u i32.ge_u
if if (result i32)
local.get $1 local.get $1
i32.const 8388608 i32.const 8388608
i32.eq i32.eq
@ -8685,9 +8685,9 @@
local.get $1 local.get $1
i32.const 8388608 i32.const 8388608
i32.sub i32.sub
local.set $1 else
local.get $1
end end
local.get $1
i32.const 1 i32.const 1
i32.shl i32.shl
local.set $1 local.set $1
@ -8843,29 +8843,29 @@
(local $1 i64) (local $1 i64)
(local $2 i64) (local $2 i64)
(local $3 i64) (local $3 i64)
(local $4 i64) (local $4 i32)
(local $5 i32) (local $5 i64)
local.get $0 local.get $0
i64.reinterpret_f64 i64.reinterpret_f64
local.tee $1 local.tee $1
i64.const 63
i64.shr_u
local.set $5
local.get $1
i64.const 52 i64.const 52
i64.shr_u i64.shr_u
i64.const 2047 i64.const 2047
i64.and i64.and
local.set $2 local.tee $2
local.get $1
i64.const 63
i64.shr_u
local.set $4
local.get $2
i64.const 2047 i64.const 2047
i64.eq i64.eq
local.tee $5 local.tee $4
if (result i32) i32.eqz
local.get $5 if
else
i32.const 0 i32.const 0
local.set $4
end end
local.get $4
if if
local.get $0 local.get $0
f64.const 2 f64.const 2
@ -8922,7 +8922,7 @@
local.get $1 local.get $1
i64.const 4503599627370496 i64.const 4503599627370496
i64.ge_u i64.ge_u
if if (result i64)
local.get $1 local.get $1
i64.const 4503599627370496 i64.const 4503599627370496
i64.eq i64.eq
@ -8930,9 +8930,9 @@
local.get $1 local.get $1
i64.const 4503599627370496 i64.const 4503599627370496
i64.sub i64.sub
local.set $1 else
local.get $1
end end
local.get $1
i64.const 1 i64.const 1
i64.shl i64.shl
local.set $1 local.set $1
@ -8987,7 +8987,7 @@
i64.add i64.add
i64.shr_u i64.shr_u
end end
local.get $4 local.get $5
i64.const 63 i64.const 63
i64.shl i64.shl
i64.or i64.or

@ -27,7 +27,9 @@
(type $FUNCSIG$ifii (func (param f32 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$idii (func (param f64 i32 i32) (result i32)))
(type $FUNCSIG$fff (func (param f32 f32) (result f32))) (type $FUNCSIG$fff (func (param f32 f32) (result f32)))
(type $FUNCSIG$if (func (param f32) (result i32)))
(type $FUNCSIG$ddd (func (param f64 f64) (result f64))) (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$vii (func (param i32 i32)))
(type $FUNCSIG$vjii (func (param i64 i32 i32))) (type $FUNCSIG$vjii (func (param i64 i32 i32)))
(type $FUNCSIG$vfii (func (param f32 i32 i32))) (type $FUNCSIG$vfii (func (param f32 i32 i32)))
@ -484,7 +486,7 @@
if if
i32.const 0 i32.const 0
i32.const 64 i32.const 64
i32.const 191 i32.const 192
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -499,7 +501,7 @@
if if
i32.const 0 i32.const 0
i32.const 64 i32.const 64
i32.const 192 i32.const 193
i32.const 2 i32.const 2
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -563,7 +565,7 @@
if if
i32.const 0 i32.const 0
i32.const 64 i32.const 64
i32.const 226 i32.const 227
i32.const 57 i32.const 57
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
@ -12258,7 +12260,12 @@
unreachable unreachable
end end
) )
(func $~lib/math/NativeMathf.mod (; 301 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) (func $~lib/builtins/isNaN<f32> (; 301 ;) (type $FUNCSIG$if) (param $0 f32) (result i32)
local.get $0
local.get $0
f32.ne
)
(func $~lib/math/NativeMathf.mod (; 302 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -12311,13 +12318,8 @@
local.get $8 local.get $8
else else
local.get $1 local.get $1
local.set $9 call $~lib/builtins/isNaN<f32>
local.get $9
local.get $9
f32.ne
end end
i32.const 0
i32.ne
if if
local.get $0 local.get $0
local.get $1 local.get $1
@ -12514,14 +12516,14 @@
local.get $2 local.get $2
f32.reinterpret_i32 f32.reinterpret_i32
) )
(func $std/typedarray/testArrayEvery<Float32Array,f32>~anonymous|0 (; 302 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) (func $std/typedarray/testArrayEvery<Float32Array,f32>~anonymous|0 (; 303 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32)
local.get $0 local.get $0
f32.const 2 f32.const 2
call $~lib/math/NativeMathf.mod call $~lib/math/NativeMathf.mod
f32.const 0 f32.const 0
f32.eq f32.eq
) )
(func $~lib/typedarray/Float32Array#every (; 303 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/typedarray/Float32Array#every (; 304 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -12588,12 +12590,12 @@
i32.const 1 i32.const 1
end end
) )
(func $std/typedarray/testArrayEvery<Float32Array,f32>~anonymous|1 (; 304 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) (func $std/typedarray/testArrayEvery<Float32Array,f32>~anonymous|1 (; 305 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32)
local.get $0 local.get $0
f32.const 2 f32.const 2
f32.eq f32.eq
) )
(func $std/typedarray/testArrayEvery<Float32Array,f32> (; 305 ;) (type $FUNCSIG$v) (func $std/typedarray/testArrayEvery<Float32Array,f32> (; 306 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
@ -12647,7 +12649,12 @@
unreachable unreachable
end end
) )
(func $~lib/math/NativeMath.mod (; 306 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) (func $~lib/builtins/isNaN<f64> (; 307 ;) (type $FUNCSIG$id) (param $0 f64) (result i32)
local.get $0
local.get $0
f64.ne
)
(func $~lib/math/NativeMath.mod (; 308 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64)
(local $2 i64) (local $2 i64)
(local $3 i64) (local $3 i64)
(local $4 i64) (local $4 i64)
@ -12700,13 +12707,8 @@
local.get $8 local.get $8
else else
local.get $1 local.get $1
local.set $9 call $~lib/builtins/isNaN<f64>
local.get $9
local.get $9
f64.ne
end end
i32.const 0
i32.ne
if if
local.get $0 local.get $0
local.get $1 local.get $1
@ -12905,14 +12907,14 @@
local.get $2 local.get $2
f64.reinterpret_i64 f64.reinterpret_i64
) )
(func $std/typedarray/testArrayEvery<Float64Array,f64>~anonymous|0 (; 307 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) (func $std/typedarray/testArrayEvery<Float64Array,f64>~anonymous|0 (; 309 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32)
local.get $0 local.get $0
f64.const 2 f64.const 2
call $~lib/math/NativeMath.mod call $~lib/math/NativeMath.mod
f64.const 0 f64.const 0
f64.eq f64.eq
) )
(func $~lib/typedarray/Float64Array#every (; 308 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/typedarray/Float64Array#every (; 310 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -12979,12 +12981,12 @@
i32.const 1 i32.const 1
end end
) )
(func $std/typedarray/testArrayEvery<Float64Array,f64>~anonymous|1 (; 309 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) (func $std/typedarray/testArrayEvery<Float64Array,f64>~anonymous|1 (; 311 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32)
local.get $0 local.get $0
f64.const 2 f64.const 2
f64.eq f64.eq
) )
(func $std/typedarray/testArrayEvery<Float64Array,f64> (; 310 ;) (type $FUNCSIG$v) (func $std/typedarray/testArrayEvery<Float64Array,f64> (; 312 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
@ -13038,7 +13040,7 @@
unreachable unreachable
end end
) )
(func $std/typedarray/testArrayForEach<Int8Array,i8>~anonymous|0 (; 311 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $std/typedarray/testArrayForEach<Int8Array,i8>~anonymous|0 (; 313 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32) (local $3 i32)
global.get $std/typedarray/forEachValues global.get $std/typedarray/forEachValues
local.get $1 local.get $1
@ -13093,7 +13095,7 @@
i32.add i32.add
global.set $std/typedarray/forEachCallCount 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 (; 314 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -13138,7 +13140,7 @@
unreachable unreachable
end end
) )
(func $std/typedarray/testArrayForEach<Int8Array,i8> (; 313 ;) (type $FUNCSIG$v) (func $std/typedarray/testArrayForEach<Int8Array,i8> (; 315 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
i32.const 0 i32.const 0
global.set $std/typedarray/forEachCallCount global.set $std/typedarray/forEachCallCount
@ -13194,7 +13196,7 @@
unreachable unreachable
end end
) )
(func $std/typedarray/testArrayForEach<Uint8Array,u8>~anonymous|0 (; 314 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $std/typedarray/testArrayForEach<Uint8Array,u8>~anonymous|0 (; 316 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32) (local $3 i32)
global.get $std/typedarray/forEachValues global.get $std/typedarray/forEachValues
local.get $1 local.get $1
@ -13245,7 +13247,7 @@
i32.add i32.add
global.set $std/typedarray/forEachCallCount 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 (; 317 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -13290,7 +13292,7 @@
unreachable unreachable
end end
) )
(func $std/typedarray/testArrayForEach<Uint8Array,u8> (; 316 ;) (type $FUNCSIG$v) (func $std/typedarray/testArrayForEach<Uint8Array,u8> (; 318 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
i32.const 0 i32.const 0
global.set $std/typedarray/forEachCallCount global.set $std/typedarray/forEachCallCount
@ -13340,7 +13342,7 @@
unreachable unreachable
end end
) )
(func $std/typedarray/testArrayForEach<Uint8ClampedArray,u8>~anonymous|0 (; 317 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $std/typedarray/testArrayForEach<Uint8ClampedArray,u8>~anonymous|0 (; 319 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32) (local $3 i32)
global.get $std/typedarray/forEachValues global.get $std/typedarray/forEachValues
local.get $1 local.get $1
@ -13391,7 +13393,7 @@
i32.add i32.add
global.set $std/typedarray/forEachCallCount 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 (; 320 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -13436,7 +13438,7 @@
unreachable unreachable
end end
) )
(func $std/typedarray/testArrayForEach<Uint8ClampedArray,u8> (; 319 ;) (type $FUNCSIG$v) (func $std/typedarray/testArrayForEach<Uint8ClampedArray,u8> (; 321 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
i32.const 0 i32.const 0
global.set $std/typedarray/forEachCallCount global.set $std/typedarray/forEachCallCount
@ -13486,7 +13488,7 @@
unreachable unreachable
end end
) )
(func $std/typedarray/testArrayForEach<Int16Array,i16>~anonymous|0 (; 320 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $std/typedarray/testArrayForEach<Int16Array,i16>~anonymous|0 (; 322 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32) (local $3 i32)
global.get $std/typedarray/forEachValues global.get $std/typedarray/forEachValues
local.get $1 local.get $1
@ -13541,7 +13543,7 @@
i32.add i32.add
global.set $std/typedarray/forEachCallCount 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 (; 323 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -13586,7 +13588,7 @@
unreachable unreachable
end end
) )
(func $std/typedarray/testArrayForEach<Int16Array,i16> (; 322 ;) (type $FUNCSIG$v) (func $std/typedarray/testArrayForEach<Int16Array,i16> (; 324 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
i32.const 0 i32.const 0
global.set $std/typedarray/forEachCallCount global.set $std/typedarray/forEachCallCount
@ -13642,7 +13644,7 @@
unreachable unreachable
end end
) )
(func $std/typedarray/testArrayForEach<Uint16Array,u16>~anonymous|0 (; 323 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $std/typedarray/testArrayForEach<Uint16Array,u16>~anonymous|0 (; 325 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32) (local $3 i32)
global.get $std/typedarray/forEachValues global.get $std/typedarray/forEachValues
local.get $1 local.get $1
@ -13693,7 +13695,7 @@
i32.add i32.add
global.set $std/typedarray/forEachCallCount 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 (; 326 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -13738,7 +13740,7 @@
unreachable unreachable
end end
) )
(func $std/typedarray/testArrayForEach<Uint16Array,u16> (; 325 ;) (type $FUNCSIG$v) (func $std/typedarray/testArrayForEach<Uint16Array,u16> (; 327 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
i32.const 0 i32.const 0
global.set $std/typedarray/forEachCallCount global.set $std/typedarray/forEachCallCount
@ -13788,7 +13790,7 @@
unreachable unreachable
end end
) )
(func $std/typedarray/testArrayForEach<Int32Array,i32>~anonymous|0 (; 326 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $std/typedarray/testArrayForEach<Int32Array,i32>~anonymous|0 (; 328 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32) (local $3 i32)
global.get $std/typedarray/forEachValues global.get $std/typedarray/forEachValues
local.get $1 local.get $1
@ -13835,7 +13837,7 @@
i32.add i32.add
global.set $std/typedarray/forEachCallCount 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 (; 329 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -13880,7 +13882,7 @@
unreachable unreachable
end end
) )
(func $std/typedarray/testArrayForEach<Int32Array,i32> (; 328 ;) (type $FUNCSIG$v) (func $std/typedarray/testArrayForEach<Int32Array,i32> (; 330 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
i32.const 0 i32.const 0
global.set $std/typedarray/forEachCallCount global.set $std/typedarray/forEachCallCount
@ -13924,7 +13926,7 @@
unreachable unreachable
end end
) )
(func $std/typedarray/testArrayForEach<Uint32Array,u32>~anonymous|0 (; 329 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $std/typedarray/testArrayForEach<Uint32Array,u32>~anonymous|0 (; 331 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32) (local $3 i32)
global.get $std/typedarray/forEachValues global.get $std/typedarray/forEachValues
local.get $1 local.get $1
@ -13971,7 +13973,7 @@
i32.add i32.add
global.set $std/typedarray/forEachCallCount 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 (; 332 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -14016,7 +14018,7 @@
unreachable unreachable
end end
) )
(func $std/typedarray/testArrayForEach<Uint32Array,u32> (; 331 ;) (type $FUNCSIG$v) (func $std/typedarray/testArrayForEach<Uint32Array,u32> (; 333 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
i32.const 0 i32.const 0
global.set $std/typedarray/forEachCallCount global.set $std/typedarray/forEachCallCount
@ -14060,7 +14062,7 @@
unreachable unreachable
end end
) )
(func $std/typedarray/testArrayForEach<Int64Array,i64>~anonymous|0 (; 332 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) (func $std/typedarray/testArrayForEach<Int64Array,i64>~anonymous|0 (; 334 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32)
(local $3 i32) (local $3 i32)
global.get $std/typedarray/forEachValues global.get $std/typedarray/forEachValues
local.get $1 local.get $1
@ -14108,7 +14110,7 @@
i32.add i32.add
global.set $std/typedarray/forEachCallCount 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 (; 335 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -14153,7 +14155,7 @@
unreachable unreachable
end end
) )
(func $std/typedarray/testArrayForEach<Int64Array,i64> (; 334 ;) (type $FUNCSIG$v) (func $std/typedarray/testArrayForEach<Int64Array,i64> (; 336 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
i32.const 0 i32.const 0
global.set $std/typedarray/forEachCallCount global.set $std/typedarray/forEachCallCount
@ -14200,7 +14202,7 @@
unreachable unreachable
end end
) )
(func $std/typedarray/testArrayForEach<Uint64Array,u64>~anonymous|0 (; 335 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) (func $std/typedarray/testArrayForEach<Uint64Array,u64>~anonymous|0 (; 337 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32)
(local $3 i32) (local $3 i32)
global.get $std/typedarray/forEachValues global.get $std/typedarray/forEachValues
local.get $1 local.get $1
@ -14248,7 +14250,7 @@
i32.add i32.add
global.set $std/typedarray/forEachCallCount 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 (; 338 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -14293,7 +14295,7 @@
unreachable unreachable
end end
) )
(func $std/typedarray/testArrayForEach<Uint64Array,u64> (; 337 ;) (type $FUNCSIG$v) (func $std/typedarray/testArrayForEach<Uint64Array,u64> (; 339 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
i32.const 0 i32.const 0
global.set $std/typedarray/forEachCallCount global.set $std/typedarray/forEachCallCount
@ -14340,7 +14342,7 @@
unreachable unreachable
end end
) )
(func $std/typedarray/testArrayForEach<Float32Array,f32>~anonymous|0 (; 338 ;) (type $FUNCSIG$vfii) (param $0 f32) (param $1 i32) (param $2 i32) (func $std/typedarray/testArrayForEach<Float32Array,f32>~anonymous|0 (; 340 ;) (type $FUNCSIG$vfii) (param $0 f32) (param $1 i32) (param $2 i32)
(local $3 i32) (local $3 i32)
global.get $std/typedarray/forEachValues global.get $std/typedarray/forEachValues
local.get $1 local.get $1
@ -14388,7 +14390,7 @@
i32.add i32.add
global.set $std/typedarray/forEachCallCount 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 (; 341 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -14433,7 +14435,7 @@
unreachable unreachable
end end
) )
(func $std/typedarray/testArrayForEach<Float32Array,f32> (; 340 ;) (type $FUNCSIG$v) (func $std/typedarray/testArrayForEach<Float32Array,f32> (; 342 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
i32.const 0 i32.const 0
global.set $std/typedarray/forEachCallCount global.set $std/typedarray/forEachCallCount
@ -14480,7 +14482,7 @@
unreachable unreachable
end end
) )
(func $std/typedarray/testArrayForEach<Float64Array,f64>~anonymous|0 (; 341 ;) (type $FUNCSIG$vdii) (param $0 f64) (param $1 i32) (param $2 i32) (func $std/typedarray/testArrayForEach<Float64Array,f64>~anonymous|0 (; 343 ;) (type $FUNCSIG$vdii) (param $0 f64) (param $1 i32) (param $2 i32)
(local $3 i32) (local $3 i32)
global.get $std/typedarray/forEachValues global.get $std/typedarray/forEachValues
local.get $1 local.get $1
@ -14528,7 +14530,7 @@
i32.add i32.add
global.set $std/typedarray/forEachCallCount 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 (; 344 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -14573,7 +14575,7 @@
unreachable unreachable
end end
) )
(func $std/typedarray/testArrayForEach<Float64Array,f64> (; 343 ;) (type $FUNCSIG$v) (func $std/typedarray/testArrayForEach<Float64Array,f64> (; 345 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
i32.const 0 i32.const 0
global.set $std/typedarray/forEachCallCount global.set $std/typedarray/forEachCallCount
@ -14620,7 +14622,7 @@
unreachable unreachable
end end
) )
(func $~lib/typedarray/Int8Array#reverse (; 344 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/typedarray/Int8Array#reverse (; 346 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
@ -14690,7 +14692,7 @@
end end
local.get $1 local.get $1
) )
(func $std/typedarray/testArrayReverse<Int8Array,i8> (; 345 ;) (type $FUNCSIG$v) (func $std/typedarray/testArrayReverse<Int8Array,i8> (; 347 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
@ -14854,7 +14856,7 @@
unreachable unreachable
end end
) )
(func $~lib/typedarray/Uint8Array#reverse (; 346 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/typedarray/Uint8Array#reverse (; 348 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
@ -14924,7 +14926,7 @@
end end
local.get $1 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 (; 349 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
(local $5 i32) (local $5 i32)
@ -15038,7 +15040,7 @@
i32.store offset=8 i32.store offset=8
local.get $7 local.get $7
) )
(func $std/typedarray/testArrayReverse<Uint8Array,u8> (; 348 ;) (type $FUNCSIG$v) (func $std/typedarray/testArrayReverse<Uint8Array,u8> (; 350 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
@ -15196,7 +15198,7 @@
unreachable unreachable
end end
) )
(func $~lib/typedarray/Uint8ClampedArray#reverse (; 349 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/typedarray/Uint8ClampedArray#reverse (; 351 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
@ -15266,7 +15268,7 @@
end end
local.get $1 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 (; 352 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
(local $5 i32) (local $5 i32)
@ -15380,7 +15382,7 @@
i32.store offset=8 i32.store offset=8
local.get $7 local.get $7
) )
(func $std/typedarray/testArrayReverse<Uint8ClampedArray,u8> (; 351 ;) (type $FUNCSIG$v) (func $std/typedarray/testArrayReverse<Uint8ClampedArray,u8> (; 353 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
@ -15538,7 +15540,7 @@
unreachable unreachable
end end
) )
(func $~lib/typedarray/Int16Array#reverse (; 352 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/typedarray/Int16Array#reverse (; 354 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
@ -15608,7 +15610,7 @@
end end
local.get $1 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 (; 355 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
(local $5 i32) (local $5 i32)
@ -15722,7 +15724,7 @@
i32.store offset=8 i32.store offset=8
local.get $7 local.get $7
) )
(func $std/typedarray/testArrayReverse<Int16Array,i16> (; 354 ;) (type $FUNCSIG$v) (func $std/typedarray/testArrayReverse<Int16Array,i16> (; 356 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
@ -15886,7 +15888,7 @@
unreachable unreachable
end end
) )
(func $~lib/typedarray/Uint16Array#reverse (; 355 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/typedarray/Uint16Array#reverse (; 357 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
@ -15956,7 +15958,7 @@
end end
local.get $1 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 (; 358 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
(local $5 i32) (local $5 i32)
@ -16070,7 +16072,7 @@
i32.store offset=8 i32.store offset=8
local.get $7 local.get $7
) )
(func $std/typedarray/testArrayReverse<Uint16Array,u16> (; 357 ;) (type $FUNCSIG$v) (func $std/typedarray/testArrayReverse<Uint16Array,u16> (; 359 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
@ -16228,7 +16230,7 @@
unreachable unreachable
end end
) )
(func $~lib/typedarray/Int32Array#reverse (; 358 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/typedarray/Int32Array#reverse (; 360 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
@ -16298,7 +16300,7 @@
end end
local.get $1 local.get $1
) )
(func $std/typedarray/testArrayReverse<Int32Array,i32> (; 359 ;) (type $FUNCSIG$v) (func $std/typedarray/testArrayReverse<Int32Array,i32> (; 361 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
@ -16450,7 +16452,7 @@
unreachable unreachable
end end
) )
(func $~lib/typedarray/Uint32Array#reverse (; 360 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/typedarray/Uint32Array#reverse (; 362 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
@ -16520,7 +16522,7 @@
end end
local.get $1 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 (; 363 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
(local $5 i32) (local $5 i32)
@ -16634,7 +16636,7 @@
i32.store offset=8 i32.store offset=8
local.get $7 local.get $7
) )
(func $std/typedarray/testArrayReverse<Uint32Array,u32> (; 362 ;) (type $FUNCSIG$v) (func $std/typedarray/testArrayReverse<Uint32Array,u32> (; 364 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
@ -16786,7 +16788,7 @@
unreachable unreachable
end end
) )
(func $~lib/typedarray/Int64Array#reverse (; 363 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/typedarray/Int64Array#reverse (; 365 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
@ -16856,7 +16858,7 @@
end end
local.get $1 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 (; 366 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
(local $5 i32) (local $5 i32)
@ -16970,7 +16972,7 @@
i32.store offset=8 i32.store offset=8
local.get $7 local.get $7
) )
(func $std/typedarray/testArrayReverse<Int64Array,i64> (; 365 ;) (type $FUNCSIG$v) (func $std/typedarray/testArrayReverse<Int64Array,i64> (; 367 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
@ -17125,7 +17127,7 @@
unreachable unreachable
end end
) )
(func $~lib/typedarray/Uint64Array#reverse (; 366 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/typedarray/Uint64Array#reverse (; 368 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
@ -17195,7 +17197,7 @@
end end
local.get $1 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 (; 369 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
(local $5 i32) (local $5 i32)
@ -17309,7 +17311,7 @@
i32.store offset=8 i32.store offset=8
local.get $7 local.get $7
) )
(func $std/typedarray/testArrayReverse<Uint64Array,u64> (; 368 ;) (type $FUNCSIG$v) (func $std/typedarray/testArrayReverse<Uint64Array,u64> (; 370 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
@ -17464,7 +17466,7 @@
unreachable unreachable
end end
) )
(func $~lib/typedarray/Float32Array#reverse (; 369 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/typedarray/Float32Array#reverse (; 371 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
@ -17534,7 +17536,7 @@
end end
local.get $1 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 (; 372 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
(local $5 i32) (local $5 i32)
@ -17648,7 +17650,7 @@
i32.store offset=8 i32.store offset=8
local.get $7 local.get $7
) )
(func $std/typedarray/testArrayReverse<Float32Array,f32> (; 371 ;) (type $FUNCSIG$v) (func $std/typedarray/testArrayReverse<Float32Array,f32> (; 373 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
@ -17803,7 +17805,7 @@
unreachable unreachable
end end
) )
(func $~lib/typedarray/Float64Array#reverse (; 372 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/typedarray/Float64Array#reverse (; 374 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
@ -17873,7 +17875,7 @@
end end
local.get $1 local.get $1
) )
(func $std/typedarray/testArrayReverse<Float64Array,f64> (; 373 ;) (type $FUNCSIG$v) (func $std/typedarray/testArrayReverse<Float64Array,f64> (; 375 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
@ -18028,7 +18030,7 @@
unreachable unreachable
end end
) )
(func $start:std/typedarray (; 374 ;) (type $FUNCSIG$v) (func $start:std/typedarray (; 376 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
global.get $~lib/typedarray/Int8Array.BYTES_PER_ELEMENT global.get $~lib/typedarray/Int8Array.BYTES_PER_ELEMENT
i32.const 1 i32.const 1
@ -19304,9 +19306,9 @@
call $std/typedarray/testArrayReverse<Float32Array,f32> call $std/typedarray/testArrayReverse<Float32Array,f32>
call $std/typedarray/testArrayReverse<Float64Array,f64> call $std/typedarray/testArrayReverse<Float64Array,f64>
) )
(func $start (; 375 ;) (type $FUNCSIG$v) (func $start (; 377 ;) (type $FUNCSIG$v)
call $start:std/typedarray call $start:std/typedarray
) )
(func $null (; 376 ;) (type $FUNCSIG$v) (func $null (; 378 ;) (type $FUNCSIG$v)
) )
) )