finalize GC wiring

This commit is contained in:
dcode 2019-03-30 13:58:20 +01:00
parent 6a790321aa
commit 3e3c393856
33 changed files with 4605 additions and 2723 deletions

View File

@ -2370,6 +2370,15 @@ export function compileCall(
let typeRef = module.getFunctionTypeBySignature(nativeReturnType, nativeParamTypes); let typeRef = module.getFunctionTypeBySignature(nativeReturnType, nativeParamTypes);
if (!typeRef) typeRef = module.addFunctionType(typeName, nativeReturnType, nativeParamTypes); if (!typeRef) typeRef = module.addFunctionType(typeName, nativeReturnType, nativeParamTypes);
compiler.currentType = returnType; compiler.currentType = returnType;
// if the index expression is precomputable to a constant value, emit a direct call
if (getExpressionId(arg0 = module.precomputeExpression(arg0)) == ExpressionId.Const) {
assert(getExpressionType(arg0) == NativeType.I32);
let index = getConstValueI32(arg0);
let functionTable = compiler.functionTable;
if (index >= 0 && index < functionTable.length) {
return module.createCall(functionTable[index], operandExprs, nativeReturnType);
}
}
// of course this can easily result in a 'RuntimeError: function signature mismatch' trap and // of course this can easily result in a 'RuntimeError: function signature mismatch' trap and
// thus must be used with care. it exists because it *might* be useful in specific scenarios. // thus must be used with care. it exists because it *might* be useful in specific scenarios.
return module.createCallIndirect(arg0, operandExprs, typeName); return module.createCallIndirect(arg0, operandExprs, typeName);
@ -3620,8 +3629,16 @@ export function compileCall(
compiler.currentType = Type.u32; compiler.currentType = Type.u32;
if (!type) return module.createUnreachable(); if (!type) return module.createUnreachable();
let classReference = type.classReference; let classReference = type.classReference;
if (!classReference) return module.createUnreachable(); if (!classReference || classReference.hasDecorator(DecoratorFlags.UNMANAGED)) {
return module.createI32(classReference.id); compiler.error(
DiagnosticCode.Operation_not_supported,
reportNode.range
);
return module.createUnreachable();
}
let classId = classReference.ensureClassId(compiler); // involves compile steps
compiler.currentType = Type.u32;
return module.createI32(classId);
} }
case BuiltinSymbols.iterateRoots: { case BuiltinSymbols.iterateRoots: {
if ( if (
@ -4093,127 +4110,6 @@ export function compileIterateRoots(compiler: Compiler): void {
); );
} }
/** Ensures that the specified class's GC hook exists and returns its function table index. */
export function ensureGCHook(
compiler: Compiler,
classInstance: Class
): u32 {
var program = compiler.program;
assert(classInstance.type.isManaged(program));
// check if the GC hook has already been created
{
let existingIndex = classInstance.gcHookIndex;
if (existingIndex != <u32>-1) return existingIndex;
}
// check if the class implements a custom GC function (only valid for library elements)
var members = classInstance.members;
if (classInstance.isDeclaredInLibrary) {
if (members !== null && members.has("__iter")) {
let iterPrototype = assert(members.get("__iter"));
assert(iterPrototype.kind == ElementKind.FUNCTION_PROTOTYPE);
let iterInstance = assert(program.resolver.resolveFunction(<FunctionPrototype>iterPrototype, null));
assert(iterInstance.is(CommonFlags.PRIVATE | CommonFlags.INSTANCE));
assert(!iterInstance.isAny(CommonFlags.AMBIENT | CommonFlags.VIRTUAL));
let signature = iterInstance.signature;
let parameterTypes = signature.parameterTypes;
assert(parameterTypes.length == 1);
assert(parameterTypes[0].signatureReference);
assert(signature.returnType == Type.void);
iterInstance.internalName = classInstance.internalName + "~iter";
assert(compiler.compileFunction(iterInstance));
let index = compiler.ensureFunctionTableEntry(iterInstance);
classInstance.gcHookIndex = index;
return index;
}
}
var module = compiler.module;
var options = compiler.options;
var nativeSizeType = options.nativeSizeType;
var nativeSizeSize = options.usizeType.byteSize;
var body = new Array<ExpressionRef>();
// nothing to mark if 'this' is null
body.push(
module.createIf(
module.createUnary(
options.isWasm64
? UnaryOp.EqzI64
: UnaryOp.EqzI32,
module.createGetLocal(0, nativeSizeType)
),
module.createReturn()
)
);
// remember the function index so we don't recurse infinitely
var functionTable = compiler.functionTable;
var gcHookIndex = functionTable.length;
functionTable.push("<placeholder>");
classInstance.gcHookIndex = gcHookIndex;
// if the class extends a base class, call its hook first
var baseInstance = classInstance.base;
if (baseInstance) {
assert(baseInstance.type.isManaged(program));
body.push(
module.createCallIndirect(
module.createI32(
ensureGCHook(compiler, <Class>baseInstance.type.classReference)
),
[
module.createGetLocal(0, nativeSizeType), // this
module.createGetLocal(1, NativeType.I32) // fn
],
"FUNCSIG$" + (nativeSizeType == NativeType.I64 ? "vji" : "vii")
)
);
}
// mark instances assigned to own fields that are again references
if (members) {
for (let member of members.values()) {
if (member.kind == ElementKind.FIELD) {
if ((<Field>member).parent === classInstance) {
let type = (<Field>member).type;
if (type.isManaged(program)) {
let offset = (<Field>member).memoryOffset;
assert(offset >= 0);
body.push( // fn(fieldValue)
module.createCallIndirect(
module.createGetLocal(1, NativeType.I32),
[
module.createLoad(
nativeSizeSize,
false,
module.createGetLocal(0, nativeSizeType),
nativeSizeType,
offset
),
],
"FUNCSIG$vi"
)
);
}
}
}
}
}
// add the function to the module and return its table index
var funcName = classInstance.internalName + "~iter";
module.addFunction(
funcName,
compiler.ensureFunctionType(null, Type.void, options.usizeType),
null,
module.createBlock(null, body)
);
functionTable[gcHookIndex] = funcName;
return gcHookIndex;
}
// Helpers // Helpers
/** Evaluates the constant type of a type argument *or* expression. */ /** Evaluates the constant type of a type argument *or* expression. */

View File

@ -71,7 +71,8 @@ import {
DecoratorFlags, DecoratorFlags,
PropertyPrototype, PropertyPrototype,
File, File,
mangleInternalName mangleInternalName,
CollectorKind
} from "./program"; } from "./program";
import { import {
@ -448,7 +449,7 @@ export class Compiler extends DiagnosticEmitter {
// expose module capabilities // expose module capabilities
var capabilities = Capability.NONE; var capabilities = Capability.NONE;
if (program.options.isWasm64) capabilities |= Capability.WASM64; if (program.options.isWasm64) capabilities |= Capability.WASM64;
if (program.gcImplemented) capabilities |= Capability.GC; if (program.collectorKind != CollectorKind.NONE) capabilities |= Capability.GC;
if (capabilities != 0) { if (capabilities != 0) {
module.addGlobal(BuiltinSymbols.capabilities, NativeType.I32, false, module.createI32(capabilities)); module.addGlobal(BuiltinSymbols.capabilities, NativeType.I32, false, module.createI32(capabilities));
module.addGlobalExport(BuiltinSymbols.capabilities, ".capabilities"); module.addGlobalExport(BuiltinSymbols.capabilities, ".capabilities");
@ -1408,7 +1409,7 @@ export class Compiler extends DiagnosticEmitter {
} else { } else {
let length = stringValue.length; let length = stringValue.length;
let buffer = new Uint8Array(rtHeaderSize + (length << 1)); let buffer = new Uint8Array(rtHeaderSize + (length << 1));
program.writeRuntimeHeader(buffer, 0, stringInstance, length << 1); program.writeRuntimeHeader(buffer, 0, stringInstance.ensureClassId(this), length << 1);
for (let i = 0; i < length; ++i) { for (let i = 0; i < length; ++i) {
writeI16(stringValue.charCodeAt(i), buffer, rtHeaderSize + (i << 1)); writeI16(stringValue.charCodeAt(i), buffer, rtHeaderSize + (i << 1));
} }
@ -1434,7 +1435,7 @@ export class Compiler extends DiagnosticEmitter {
var runtimeHeaderSize = program.runtimeHeaderSize; var runtimeHeaderSize = program.runtimeHeaderSize;
var buf = new Uint8Array(runtimeHeaderSize + byteLength); var buf = new Uint8Array(runtimeHeaderSize + byteLength);
program.writeRuntimeHeader(buf, 0, bufferInstance, byteLength); program.writeRuntimeHeader(buf, 0, bufferInstance.ensureClassId(this), byteLength);
var pos = runtimeHeaderSize; var pos = runtimeHeaderSize;
var nativeType = elementType.toNativeType(); var nativeType = elementType.toNativeType();
switch (nativeType) { switch (nativeType) {
@ -1521,7 +1522,7 @@ export class Compiler extends DiagnosticEmitter {
var arrayLength = i32(bufferLength / elementType.byteSize); var arrayLength = i32(bufferLength / elementType.byteSize);
var buf = new Uint8Array(runtimeHeaderSize + arrayInstanceSize); var buf = new Uint8Array(runtimeHeaderSize + arrayInstanceSize);
program.writeRuntimeHeader(buf, 0, arrayInstance, arrayInstanceSize); program.writeRuntimeHeader(buf, 0, arrayInstance.ensureClassId(this), arrayInstanceSize);
var bufferAddress32 = i64_low(bufferSegment.offset) + runtimeHeaderSize; var bufferAddress32 = i64_low(bufferSegment.offset) + runtimeHeaderSize;
assert(!program.options.isWasm64); // TODO assert(!program.options.isWasm64); // TODO
@ -6820,7 +6821,7 @@ export class Compiler extends DiagnosticEmitter {
// makeArray(length, classId, alignLog2, staticBuffer) // makeArray(length, classId, alignLog2, staticBuffer)
let expr = this.makeCallDirect(assert(program.makeArrayInstance), [ let expr = this.makeCallDirect(assert(program.makeArrayInstance), [
module.createI32(length), module.createI32(length),
module.createI32(arrayInstance.id), module.createI32(arrayInstance.ensureClassId(this)),
program.options.isWasm64 program.options.isWasm64
? module.createI64(elementType.alignLog2) ? module.createI64(elementType.alignLog2)
: module.createI32(elementType.alignLog2), : module.createI32(elementType.alignLog2),
@ -6854,7 +6855,7 @@ export class Compiler extends DiagnosticEmitter {
module.createSetLocal(tempThis.index, module.createSetLocal(tempThis.index,
this.makeCallDirect(makeArrayInstance, [ this.makeCallDirect(makeArrayInstance, [
module.createI32(length), module.createI32(length),
module.createI32(arrayInstance.id), module.createI32(arrayInstance.ensureClassId(this)),
program.options.isWasm64 program.options.isWasm64
? module.createI64(elementType.alignLog2) ? module.createI64(elementType.alignLog2)
: module.createI32(elementType.alignLog2), : module.createI32(elementType.alignLog2),
@ -8115,7 +8116,7 @@ export class Compiler extends DiagnosticEmitter {
? module.createI64(classInstance.currentMemoryOffset) ? module.createI64(classInstance.currentMemoryOffset)
: module.createI32(classInstance.currentMemoryOffset) : module.createI32(classInstance.currentMemoryOffset)
], reportNode), ], reportNode),
module.createI32(classInstance.id) module.createI32(classInstance.ensureClassId(this))
], reportNode); ], reportNode);
} }
} }
@ -8320,7 +8321,7 @@ export class Compiler extends DiagnosticEmitter {
module.createBreak(label, module.createBreak(label,
module.createBinary(BinaryOp.EqI32, // classId == class.id module.createBinary(BinaryOp.EqI32, // classId == class.id
module.createTeeLocal(idTemp.index, idExpr), module.createTeeLocal(idTemp.index, idExpr),
module.createI32(classInstance.id) module.createI32(classInstance.ensureClassId(this))
), ),
module.createI32(1) // ? true module.createI32(1) // ? true
) )
@ -8335,6 +8336,134 @@ export class Compiler extends DiagnosticEmitter {
flow.popBreakLabel(); flow.popBreakLabel();
return module.createBlock(label, conditions, NativeType.I32); return module.createBlock(label, conditions, NativeType.I32);
} }
/** Reserves the function index / class id for the following `makeIterate` operation. */
makeIterateReserve(classInstance: Class): u32 {
var functionTable = this.functionTable;
var functionIndex = functionTable.length;
functionTable.push(classInstance.iterateName);
return functionIndex;
}
/** Makes the managed iteration function of the specified class. */
makeIterate(classInstance: Class, functionIndex: i32): void {
var program = this.program;
assert(classInstance.type.isManaged(program));
// check if the class implements a custom iteration function (only valid for library elements)
var members = classInstance.members;
if (classInstance.isDeclaredInLibrary) {
if (members !== null && members.has("__iterate")) {
let iterPrototype = members.get("__iterate")!;
assert(iterPrototype.kind == ElementKind.FUNCTION_PROTOTYPE);
let iterInstance = assert(program.resolver.resolveFunction(<FunctionPrototype>iterPrototype, null));
assert(iterInstance.is(CommonFlags.PRIVATE | CommonFlags.INSTANCE));
assert(iterInstance.hasDecorator(DecoratorFlags.UNSAFE));
assert(!iterInstance.isAny(CommonFlags.AMBIENT | CommonFlags.VIRTUAL));
let signature = iterInstance.signature;
let parameterTypes = signature.parameterTypes;
assert(parameterTypes.length == 1);
assert(parameterTypes[0].signatureReference);
assert(signature.returnType == Type.void);
iterInstance.internalName = classInstance.iterateName;
assert(this.compileFunction(iterInstance));
this.ensureFunctionTableEntry(iterInstance);
return;
}
}
var module = this.module;
var options = this.options;
var nativeSizeType = options.nativeSizeType;
var nativeSizeSize = options.usizeType.byteSize;
// var signatureStr = Signature.makeSignatureString([ Type.u32 ], Type.void, options.usizeType);
var body = new Array<ExpressionRef>();
// nothing to mark if 'this' is null (should not happen)
// body.push(
// module.createIf(
// module.createUnary(
// options.isWasm64
// ? UnaryOp.EqzI64
// : UnaryOp.EqzI32,
// module.createGetLocal(0, nativeSizeType)
// ),
// module.createReturn()
// )
// );
// remember the function index so we don't recurse infinitely
var functionTable = this.functionTable;
var functionName = classInstance.iterateName;
assert(functionIndex < functionTable.length);
assert(functionTable[functionIndex] == functionName);
// if the class extends a base class, call its hook first
var baseInstance = classInstance.base;
if (baseInstance) {
let baseType = baseInstance.type;
let baseClassId = baseInstance.ensureClassId(this);
assert(baseType.isManaged(program));
body.push(
// BASECLASS~iterate.call(this, fn)
module.createCall(functionTable[baseClassId], [
module.createGetLocal(0, nativeSizeType),
module.createGetLocal(1, NativeType.I32)
], NativeType.None)
);
}
// iterate references assigned to own fields
if (members) {
for (let member of members.values()) {
if (member.kind == ElementKind.FIELD) {
if ((<Field>member).parent === classInstance) {
let fieldType = (<Field>member).type;
if (fieldType.isManaged(program)) {
let fieldClass = fieldType.classReference!;
let fieldClassId = fieldClass.ensureClassId(this);
let fieldOffset = (<Field>member).memoryOffset;
assert(fieldOffset >= 0);
body.push(
// if ($2 = value) { fn($2); FIELDCLASS~iterate($2, fn); }
module.createIf(
module.createTeeLocal(2,
module.createLoad(
nativeSizeSize,
false,
module.createGetLocal(0, nativeSizeType),
nativeSizeType,
fieldOffset
)
),
module.createBlock(null, [
module.createCallIndirect(
module.createGetLocal(1, NativeType.I32),
[
module.createGetLocal(2, nativeSizeType)
], "FUNCSIG$vi"
),
module.createCall(functionTable[fieldClassId], [
module.createGetLocal(2, nativeSizeType),
module.createGetLocal(1, NativeType.I32)
], NativeType.None)
])
)
);
}
}
}
}
}
// add the function to the module and return its table index
module.addFunction(
functionName,
this.ensureFunctionType([ Type.u32 ], Type.void, options.usizeType),
members ? [ nativeSizeType ] : null,
module.createBlock(null, body)
);
}
} }
// helpers // helpers

View File

@ -18,7 +18,8 @@ import {
import { import {
Options, Options,
Feature Feature,
Compiler
} from "./compiler"; } from "./compiler";
import { import {
@ -308,6 +309,13 @@ function operatorKindFromDecorator(decoratorKind: DecoratorKind, arg: string): O
return OperatorKind.INVALID; return OperatorKind.INVALID;
} }
/** Garbage collector kind present. */
export enum CollectorKind {
NONE,
TRACING,
COUNTING
}
/** Represents an AssemblyScript program. */ /** Represents an AssemblyScript program. */
export class Program extends DiagnosticEmitter { export class Program extends DiagnosticEmitter {
@ -367,25 +375,24 @@ export class Program extends DiagnosticEmitter {
/** Runtime make array function. `makeArray(capacity: i32, source: usize = 0, cid: u32): usize` */ /** Runtime make array function. `makeArray(capacity: i32, source: usize = 0, cid: u32): usize` */
makeArrayInstance: Function | null = null; makeArrayInstance: Function | null = null;
/** The kind of garbage collector being present. */
collectorKind: CollectorKind = CollectorKind.NONE;
/** Memory allocation implementation, if present: `__mem_allocate(size: usize): usize` */
allocateMem: Function | null = null; allocateMem: Function | null = null;
/** Memory free implementation, if present: `__mem_free(ref: usize): void` */
freeMem: Function | null = null; freeMem: Function | null = null;
/** Reference link implementation, if present: `__ref_link(ref: usize, parentRef: usize): void` */
linkRef: Function | null = null; linkRef: Function | null = null;
/** Reference unlink implementation, if present: `__ref_unlink(ref: usize, parentRef: usize): void` */
unlinkRef: Function | null = null; unlinkRef: Function | null = null;
/** Reference retain implementation, if present: `__ref_retain(ref: usize): void` */
retainRef: Function | null = null; retainRef: Function | null = null;
/** Reference release implementation, if present: `__ref_release(ref: usize): void` */
releaseRef: Function | null = null; releaseRef: Function | null = null;
/** Next class id. */ /** Next class id. */
nextClassId: u32 = 1; nextClassId: u32 = 1;
// gc integration
/** Whether a garbage collector is present or not. */
get gcImplemented(): bool {
return this.lookupGlobal("__ref_collect") !== null;
}
/** Garbage collector mark function called to on reachable managed objects. */
gcMarkInstance: Function | null = null; // FIXME
/** Constructs a new program, optionally inheriting parser diagnostics. */ /** Constructs a new program, optionally inheriting parser diagnostics. */
constructor( constructor(
/** Shared array of diagnostic messages (emitted so far). */ /** Shared array of diagnostic messages (emitted so far). */
@ -402,12 +409,12 @@ export class Program extends DiagnosticEmitter {
/** Gets the size of a common runtime header. */ /** Gets the size of a common runtime header. */
get runtimeHeaderSize(): i32 { get runtimeHeaderSize(): i32 {
return this.gcImplemented ? 16 : 8; return this.collectorKind ? 16 : 8;
} }
/** Writes a common runtime header to the specified buffer. */ /** Writes a common runtime header to the specified buffer. */
writeRuntimeHeader(buffer: Uint8Array, offset: i32, classInstance: Class, payloadSize: u32): void { writeRuntimeHeader(buffer: Uint8Array, offset: i32, classId: i32, payloadSize: u32): void {
writeI32(classInstance.id, buffer, offset); writeI32(classId, buffer, offset);
writeI32(payloadSize, buffer, offset + 4); writeI32(payloadSize, buffer, offset + 4);
} }
@ -854,12 +861,14 @@ export class Program extends DiagnosticEmitter {
assert(element.kind == ElementKind.FUNCTION_PROTOTYPE); assert(element.kind == ElementKind.FUNCTION_PROTOTYPE);
this.unlinkRef = this.resolver.resolveFunction(<FunctionPrototype>element, null); this.unlinkRef = this.resolver.resolveFunction(<FunctionPrototype>element, null);
} }
this.collectorKind = CollectorKind.TRACING;
} else if (element = this.lookupGlobal("__ref_retain")) { } else if (element = this.lookupGlobal("__ref_retain")) {
assert(element.kind == ElementKind.FUNCTION_PROTOTYPE); assert(element.kind == ElementKind.FUNCTION_PROTOTYPE);
this.retainRef = this.resolver.resolveFunction(<FunctionPrototype>element, null); this.retainRef = this.resolver.resolveFunction(<FunctionPrototype>element, null);
element = assert(this.lookupGlobal("__ref_release")); element = assert(this.lookupGlobal("__ref_release"));
assert(element.kind == ElementKind.FUNCTION_PROTOTYPE); assert(element.kind == ElementKind.FUNCTION_PROTOTYPE);
this.releaseRef = this.resolver.resolveFunction(<FunctionPrototype>element, null); this.releaseRef = this.resolver.resolveFunction(<FunctionPrototype>element, null);
this.collectorKind = CollectorKind.COUNTING;
} }
} }
} }
@ -2999,14 +3008,27 @@ export class Class extends TypedElement {
constructorInstance: Function | null = null; constructorInstance: Function | null = null;
/** Operator overloads. */ /** Operator overloads. */
overloads: Map<OperatorKind,Function> | null = null; overloads: Map<OperatorKind,Function> | null = null;
/** Function index of the GC hook. */
gcHookIndex: u32 = <u32>-1;
/** Unique class id. */ /** Unique class id. */
private _id: u32 = 0; private _id: u32 = 0;
/** Gets the unique id of this class. */
get id(): u32 { /** Ensures that this class has an id. */
ensureClassId(compiler: Compiler): i32 {
var id = this._id; var id = this._id;
if (!id) this._id = id = this.program.nextClassId++; if (!id) {
assert(!this.hasDecorator(DecoratorFlags.UNMANAGED));
let program = this.program;
if (program.collectorKind == CollectorKind.TRACING) {
// tracing GC uses the function index of the iteration function as the
// class's id so it can call the id directly, which avoids to generate
// a helper function with a big switch mapping ids to function indexes.
// here: might be called recursively in makeIterate, so reserve the id.
this._id = id = compiler.makeIterateReserve(this);
compiler.makeIterate(this, id);
} else {
// counting GC or none just increments without any iterate functions
this._id = id = program.nextClassId++;
}
}
return id; return id;
} }
@ -3031,6 +3053,11 @@ export class Class extends TypedElement {
); );
} }
/** Gets the name of this class's GC iteration function. */
get iterateName(): string {
return this.internalName + "~iterate";
}
/** Constructs a new class. */ /** Constructs a new class. */
constructor( constructor(
/** Name incl. type parameters, i.e. `Foo<i32>`. */ /** Name incl. type parameters, i.e. `Foo<i32>`. */

View File

@ -7,7 +7,8 @@ import {
Class, Class,
FunctionTarget, FunctionTarget,
Program, Program,
DecoratorFlags DecoratorFlags,
CollectorKind
} from "./program"; } from "./program";
import { import {
@ -152,7 +153,7 @@ export class Type {
/** Tests if this is a managed type that needs GC hooks. */ /** Tests if this is a managed type that needs GC hooks. */
isManaged(program: Program): bool { isManaged(program: Program): bool {
if (program.gcImplemented) { if (program.collectorKind != CollectorKind.NONE) {
let classReference = this.classReference; let classReference = this.classReference;
return classReference !== null && !classReference.hasDecorator(DecoratorFlags.UNMANAGED); return classReference !== null && !classReference.hasDecorator(DecoratorFlags.UNMANAGED);
} }

View File

@ -1,6 +1,6 @@
/// <reference path="./collector/index.d.ts" /> /// <reference path="./collector/index.d.ts" />
import { ALLOCATE, REALLOCATE, DISCARD, REGISTER, MAX_BYTELENGTH, MAKEARRAY, ArrayBufferView } from "./runtime"; import { ALLOCATE, REALLOCATE, DISCARD, REGISTER, MAX_BYTELENGTH, MAKEARRAY, ArrayBufferView, classId } from "./runtime";
import { ArrayBuffer } from "./arraybuffer"; import { ArrayBuffer } from "./arraybuffer";
import { COMPARATOR, SORT } from "./util/sort"; import { COMPARATOR, SORT } from "./util/sort";
import { itoa, dtoa, itoa_stream, dtoa_stream, MAX_DOUBLE_LENGTH } from "./util/number"; import { itoa, dtoa, itoa_stream, dtoa_stream, MAX_DOUBLE_LENGTH } from "./util/number";
@ -804,13 +804,22 @@ export class Array<T> extends ArrayBufferView {
// GC integration // GC integration
@unsafe private __iter(fn: (ref: usize) => void): void { @unsafe private __iterate(fn: (ref: usize) => void): void {
fn(changetype<usize>(this.data)); fn(changetype<usize>(this.data));
if (isManaged<T>()) { if (isManaged<T>()) {
let cur = this.dataStart; let cur = this.dataStart;
let end = cur + <usize>this.dataLength; let end = cur + <usize>this.dataLength;
while (cur < end) { while (cur < end) {
fn(load<usize>(cur)); let val = load<usize>(cur);
if (isNullable<T>()) {
if (val) {
fn(val);
call_indirect(classId<T>(), val, fn);
}
} else {
fn(val);
call_indirect(classId<T>(), val, fn);
}
cur += sizeof<usize>(); cur += sizeof<usize>();
} }
} }

View File

@ -159,14 +159,12 @@ function step(): void {
if (TRACE) trace("itcm~step/MARK iterate", 1, objToRef(obj)); if (TRACE) trace("itcm~step/MARK iterate", 1, objToRef(obj));
iter = obj; iter = obj;
obj.color = i32(!white); obj.color = i32(!white);
// if (TRACE) { // CLASS~iterate(ref, fn)
// trace(" next/prev/hook", 3, call_indirect(obj.classId, objToRef(obj), (ref: usize): void => {
// changetype<usize>(obj.next), trace(" iter", 1, ref);
// changetype<usize>(obj.prev), var obj = refToObj(ref);
// changetype<u32>(obj.hookFn) if (obj.color == white) obj.makeGray();
// ); });
// }
obj.hookFn(objToRef(obj));
} else { } else {
if (TRACE) trace("itcm~step/MARK finish"); if (TRACE) trace("itcm~step/MARK finish");
iterateRoots((ref: usize): void => { iterateRoots((ref: usize): void => {
@ -237,7 +235,7 @@ export function __ref_register(ref: usize): void {
step(); // also makes sure it's initialized step(); // also makes sure it's initialized
var obj = refToObj(ref); var obj = refToObj(ref);
obj.color = white; obj.color = white;
fromSpace.push(obj); fromSpace.push(obj); // sets gc-reserved header fields
} }
// @ts-ignore: decorator // @ts-ignore: decorator

View File

@ -1,4 +1,4 @@
import { ALLOCATE, REGISTER, MAX_BYTELENGTH, HEADER, HEADER_SIZE } from "./runtime"; import { ALLOCATE, REGISTER, MAX_BYTELENGTH, HEADER, HEADER_SIZE, classId } from "./runtime";
import { E_INDEXOUTOFRANGE, E_INVALIDLENGTH, E_HOLEYARRAY } from "./util/error"; import { E_INDEXOUTOFRANGE, E_INVALIDLENGTH, E_HOLEYARRAY } from "./util/error";
// NOTE: DO NOT USE YET! // NOTE: DO NOT USE YET!
@ -71,12 +71,21 @@ export class FixedArray<T> {
// GC integration // GC integration
@unsafe private __iter(fn: (ref: usize) => void): void { @unsafe private __iterate(fn: (ref: usize) => void): void {
if (isManaged<T>()) { if (isManaged<T>()) {
let cur = changetype<usize>(this); let cur = changetype<usize>(this);
let end = cur + changetype<HEADER>(changetype<usize>(this) - HEADER_SIZE).payloadSize; let end = cur + changetype<HEADER>(changetype<usize>(this) - HEADER_SIZE).payloadSize;
while (cur < end) { while (cur < end) {
fn(load<usize>(cur)); let val = load<usize>(cur);
if (isNullable<T>()) {
if (val) {
fn(val);
call_indirect(classId<T>(), val, fn);
}
} else {
fn(val);
call_indirect(classId<T>(), val, fn);
}
cur += sizeof<usize>(); cur += sizeof<usize>();
} }
} }

View File

@ -1,6 +1,7 @@
/// <reference path="./collector/index.d.ts" /> /// <reference path="./collector/index.d.ts" />
import { HASH } from "./util/hash"; import { HASH } from "./util/hash";
import { classId } from "./runtime";
// A deterministic hash map based on CloseTable from https://github.com/jorendorff/dht // A deterministic hash map based on CloseTable from https://github.com/jorendorff/dht
@ -267,7 +268,7 @@ export class Map<K,V> {
// GC integration // GC integration
@unsafe private __iter(fn: (ref: usize) => void): void { @unsafe private __iterate(fn: (ref: usize) => void): void {
fn(changetype<usize>(this.buckets)); fn(changetype<usize>(this.buckets));
var entries = this.entries; var entries = this.entries;
fn(changetype<usize>(entries)); fn(changetype<usize>(entries));
@ -277,8 +278,30 @@ export class Map<K,V> {
while (cur < end) { while (cur < end) {
let entry = changetype<MapEntry<K,V>>(cur); let entry = changetype<MapEntry<K,V>>(cur);
if (!(entry.taggedNext & EMPTY)) { if (!(entry.taggedNext & EMPTY)) {
if (isManaged<K>()) fn(changetype<usize>(entry.key)); if (isManaged<K>()) {
if (isManaged<V>()) fn(changetype<usize>(entry.value)); let val = changetype<usize>(entry.key);
if (isNullable<K>()) {
if (val) {
fn(val);
call_indirect(classId<K>(), val, fn);
}
} else {
fn(val);
call_indirect(classId<K>(), val, fn);
}
}
if (isManaged<V>()) {
let val = changetype<usize>(entry.value);
if (isNullable<V>()) {
if (val) {
fn(val);
call_indirect(classId<V>(), val, fn);
}
} else {
fn(val);
call_indirect(classId<V>(), val, fn);
}
}
} }
cur += ENTRY_SIZE<K,V>(); cur += ENTRY_SIZE<K,V>();
} }

View File

@ -1,6 +1,7 @@
/// <reference path="./collector/index.d.ts" /> /// <reference path="./collector/index.d.ts" />
import { HASH } from "./util/hash"; import { HASH } from "./util/hash";
import { classId } from "./runtime";
// A deterministic hash set based on CloseTable from https://github.com/jorendorff/dht // A deterministic hash set based on CloseTable from https://github.com/jorendorff/dht
@ -197,7 +198,7 @@ export class Set<K> {
// GC integration // GC integration
@unsafe private __iter(fn: (ref: usize) => void): void { @unsafe private __iterate(fn: (ref: usize) => void): void {
fn(changetype<usize>(this.buckets)); fn(changetype<usize>(this.buckets));
var entries = this.entries; var entries = this.entries;
fn(changetype<usize>(entries)); fn(changetype<usize>(entries));
@ -206,7 +207,18 @@ export class Set<K> {
let end = cur + <usize>this.entriesOffset * ENTRY_SIZE<K>(); let end = cur + <usize>this.entriesOffset * ENTRY_SIZE<K>();
while (cur < end) { while (cur < end) {
let entry = changetype<SetEntry<K>>(cur); let entry = changetype<SetEntry<K>>(cur);
if (!(entry.taggedNext & EMPTY)) fn(changetype<usize>(entry.key)); if (!(entry.taggedNext & EMPTY)) {
let val = changetype<usize>(entry.key);
if (isNullable<K>()) {
if (val) {
fn(val);
call_indirect(classId<K>(), val, fn);
}
} else {
fn(val);
call_indirect(classId<K>(), val, fn);
}
}
cur += ENTRY_SIZE<K>(); cur += ENTRY_SIZE<K>();
} }
} }

View File

@ -1,11 +1,11 @@
(module (module
(type $FUNCSIG$v (func)) (type $FUNCSIG$v (func))
(type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$vii (func (param i32 i32)))
(type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32)))
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$vi (func (param i32)))
(type $FUNCSIG$viiddddd (func (param i32 i32 f64 f64 f64 f64 f64))) (type $FUNCSIG$viiddddd (func (param i32 i32 f64 f64 f64 f64 f64)))
(type $FUNCSIG$vii (func (param i32 i32)))
(type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32)))
(type $FUNCSIG$i (func (result i32))) (type $FUNCSIG$i (func (result i32)))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
@ -25,8 +25,8 @@
(data (i32.const 232) "g\00c\00.\00u\00n\00l\00i\00n\00k") (data (i32.const 232) "g\00c\00.\00u\00n\00l\00i\00n\00k")
(data (i32.const 256) "\02\00\00\00\14") (data (i32.const 256) "\02\00\00\00\14")
(data (i32.const 272) "g\00c\00.\00c\00o\00l\00l\00e\00c\00t") (data (i32.const 272) "g\00c\00.\00c\00o\00l\00l\00e\00c\00t")
(table $0 1 funcref) (table $0 6 funcref)
(elem (i32.const 0) $null) (elem (i32.const 0) $null $gc/Ref~iterate $gc/Ref~iterate $~lib/set/Set<usize>~iterate $~lib/set/Set<usize>~iterate $gc/Ref~iterate)
(global $gc/_dummy/collect_count (mut i32) (i32.const 0)) (global $gc/_dummy/collect_count (mut i32) (i32.const 0))
(global $gc/_dummy/register_count (mut i32) (i32.const 0)) (global $gc/_dummy/register_count (mut i32) (i32.const 0))
(global $gc/_dummy/register_ref (mut i32) (i32.const 0)) (global $gc/_dummy/register_ref (mut i32) (i32.const 0))
@ -39,6 +39,7 @@
(global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0))
(global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) (global $~lib/allocator/arena/offset (mut i32) (i32.const 0))
(global $~lib/gc/gc.implemented i32 (i32.const 1)) (global $~lib/gc/gc.implemented i32 (i32.const 1))
(global $~lib/argc (mut i32) (i32.const 0))
(global $~lib/gc/GC_ROOT (mut i32) (i32.const 0)) (global $~lib/gc/GC_ROOT (mut i32) (i32.const 0))
(global $~lib/started (mut i32) (i32.const 0)) (global $~lib/started (mut i32) (i32.const 0))
(global $~lib/capabilities i32 (i32.const 2)) (global $~lib/capabilities i32 (i32.const 2))
@ -139,7 +140,10 @@
i32.const 16 i32.const 16
i32.add i32.add
) )
(func $gc/_dummy/__ref_register (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) (func $gc/Ref~iterate (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
nop
)
(func $gc/_dummy/__ref_register (; 5 ;) (type $FUNCSIG$vi) (param $0 i32)
i32.const 72 i32.const 72
i32.const 1 i32.const 1
local.get $0 local.get $0
@ -156,7 +160,7 @@
local.get $0 local.get $0
global.set $gc/_dummy/register_ref global.set $gc/_dummy/register_ref
) )
(func $~lib/runtime/register (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/runtime/register (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
local.get $0 local.get $0
i32.const 292 i32.const 292
@ -191,7 +195,23 @@
call $gc/_dummy/__ref_register call $gc/_dummy/__ref_register
local.get $0 local.get $0
) )
(func $~lib/memory/memory.fill (; 6 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/set/Set<usize>~iterate (; 7 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
i32.const 1
global.set $~lib/argc
local.get $0
i32.load
local.get $1
call_indirect (type $FUNCSIG$vi)
local.get $0
i32.load offset=8
local.set $0
i32.const 1
global.set $~lib/argc
local.get $0
local.get $1
call_indirect (type $FUNCSIG$vi)
)
(func $~lib/memory/memory.fill (; 8 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
block $~lib/util/memory/memset|inlined.0 block $~lib/util/memory/memset|inlined.0
local.get $1 local.get $1
@ -402,7 +422,7 @@
end end
end end
) )
(func $~lib/arraybuffer/ArrayBuffer#constructor (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/arraybuffer/ArrayBuffer#constructor (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
local.get $0 local.get $0
i32.const 1073741808 i32.const 1073741808
@ -421,10 +441,10 @@
local.get $0 local.get $0
call $~lib/memory/memory.fill call $~lib/memory/memory.fill
local.get $1 local.get $1
i32.const 4 i32.const 5
call $~lib/runtime/register call $~lib/runtime/register
) )
(func $gc/_dummy/__ref_link (; 8 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $gc/_dummy/__ref_link (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
i32.const 200 i32.const 200
i32.const 2 i32.const 2
local.get $0 local.get $0
@ -444,7 +464,7 @@
local.get $0 local.get $0
global.set $gc/_dummy/link_parentRef global.set $gc/_dummy/link_parentRef
) )
(func $gc/_dummy/__ref_unlink (; 9 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $gc/_dummy/__ref_unlink (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
i32.const 232 i32.const 232
i32.const 2 i32.const 2
local.get $0 local.get $0
@ -464,7 +484,7 @@
local.get $1 local.get $1
global.set $gc/_dummy/unlink_parentRef global.set $gc/_dummy/unlink_parentRef
) )
(func $~lib/set/Set<usize>#clear (; 10 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/set/Set<usize>#clear (; 12 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
@ -527,7 +547,7 @@
i32.const 0 i32.const 0
i32.store offset=20 i32.store offset=20
) )
(func $~lib/set/Set<usize>#constructor (; 11 ;) (type $FUNCSIG$i) (result i32) (func $~lib/set/Set<usize>#constructor (; 13 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32) (local $0 i32)
i32.const 24 i32.const 24
call $~lib/runtime/allocate call $~lib/runtime/allocate
@ -555,7 +575,7 @@
call $~lib/set/Set<usize>#clear call $~lib/set/Set<usize>#clear
local.get $0 local.get $0
) )
(func $~lib/util/hash/hash32 (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/util/hash/hash32 (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.const 255 i32.const 255
i32.and i32.and
@ -586,7 +606,7 @@
i32.const 16777619 i32.const 16777619
i32.mul i32.mul
) )
(func $~lib/set/Set<usize>#find (; 13 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/set/Set<usize>#find (; 15 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
local.get $0 local.get $0
i32.load i32.load
local.get $0 local.get $0
@ -629,7 +649,7 @@
end end
i32.const 0 i32.const 0
) )
(func $~lib/set/Set<usize>#has (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/set/Set<usize>#has (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
local.get $1 local.get $1
local.get $1 local.get $1
@ -638,7 +658,7 @@
i32.const 0 i32.const 0
i32.ne i32.ne
) )
(func $~lib/set/Set<usize>#rehash (; 15 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/set/Set<usize>#rehash (; 17 ;) (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)
@ -773,7 +793,7 @@
i32.load offset=20 i32.load offset=20
i32.store offset=16 i32.store offset=16
) )
(func $~lib/set/Set<usize>#add (; 16 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/set/Set<usize>#add (; 18 ;) (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)
@ -856,7 +876,7 @@
i32.store i32.store
end end
) )
(func $~lib/gc/gc.retain (; 17 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/gc/gc.retain (; 19 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32) (local $1 i32)
global.get $~lib/gc/GC_ROOT global.get $~lib/gc/GC_ROOT
local.tee $1 local.tee $1
@ -872,7 +892,7 @@
call $gc/_dummy/__ref_link call $gc/_dummy/__ref_link
end end
) )
(func $~lib/set/Set<usize>#delete (; 18 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/set/Set<usize>#delete (; 20 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
local.get $0 local.get $0
local.get $1 local.get $1
@ -932,7 +952,7 @@
call $~lib/set/Set<usize>#rehash call $~lib/set/Set<usize>#rehash
end end
) )
(func $~lib/gc/gc.release (; 19 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/gc/gc.release (; 21 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32) (local $1 i32)
global.get $~lib/gc/GC_ROOT global.get $~lib/gc/GC_ROOT
local.tee $1 local.tee $1
@ -947,7 +967,7 @@
call $gc/_dummy/__ref_unlink call $gc/_dummy/__ref_unlink
end end
) )
(func $~lib/gc/gc.collect (; 20 ;) (type $FUNCSIG$v) (func $~lib/gc/gc.collect (; 22 ;) (type $FUNCSIG$v)
i32.const 272 i32.const 272
i32.const 0 i32.const 0
f64.const 0 f64.const 0
@ -961,7 +981,7 @@
i32.add i32.add
global.set $gc/_dummy/collect_count global.set $gc/_dummy/collect_count
) )
(func $gc/main (; 21 ;) (type $FUNCSIG$v) (func $gc/main (; 23 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
@ -1112,7 +1132,7 @@
unreachable unreachable
end end
) )
(func $null (; 22 ;) (type $FUNCSIG$v) (func $null (; 24 ;) (type $FUNCSIG$v)
nop nop
) )
) )

View File

@ -1,12 +1,12 @@
(module (module
(type $FUNCSIG$v (func)) (type $FUNCSIG$v (func))
(type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$vii (func (param i32 i32)))
(type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32)))
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$vi (func (param i32)))
(type $FUNCSIG$viiddddd (func (param i32 i32 f64 f64 f64 f64 f64))) (type $FUNCSIG$viiddddd (func (param i32 i32 f64 f64 f64 f64 f64)))
(type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$viii (func (param i32 i32 i32)))
(type $FUNCSIG$vii (func (param i32 i32)))
(type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32)))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(import "env" "trace" (func $~lib/env/trace (param i32 i32 f64 f64 f64 f64 f64))) (import "env" "trace" (func $~lib/env/trace (param i32 i32 f64 f64 f64 f64 f64)))
@ -18,8 +18,8 @@
(data (i32.const 184) "\02\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00g\00c\00.\00l\00i\00n\00k\00") (data (i32.const 184) "\02\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00g\00c\00.\00l\00i\00n\00k\00")
(data (i32.const 216) "\02\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00g\00c\00.\00u\00n\00l\00i\00n\00k\00") (data (i32.const 216) "\02\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00g\00c\00.\00u\00n\00l\00i\00n\00k\00")
(data (i32.const 256) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00g\00c\00.\00c\00o\00l\00l\00e\00c\00t\00") (data (i32.const 256) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00g\00c\00.\00c\00o\00l\00l\00e\00c\00t\00")
(table $0 1 funcref) (table $0 6 funcref)
(elem (i32.const 0) $null) (elem (i32.const 0) $null $gc/Ref~iterate $~lib/string/String~iterate $~lib/set/Set<usize>~iterate $~lib/set/Set<usize>~iterate $~lib/arraybuffer/ArrayBuffer~iterate)
(global $gc/_dummy/collect_count (mut i32) (i32.const 0)) (global $gc/_dummy/collect_count (mut i32) (i32.const 0))
(global $gc/_dummy/register_count (mut i32) (i32.const 0)) (global $gc/_dummy/register_count (mut i32) (i32.const 0))
(global $gc/_dummy/register_ref (mut i32) (i32.const 0)) (global $gc/_dummy/register_ref (mut i32) (i32.const 0))
@ -35,6 +35,7 @@
(global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) (global $~lib/allocator/arena/offset (mut i32) (i32.const 0))
(global $~lib/ASC_NO_ASSERT i32 (i32.const 0)) (global $~lib/ASC_NO_ASSERT i32 (i32.const 0))
(global $~lib/gc/gc.implemented i32 (i32.const 1)) (global $~lib/gc/gc.implemented i32 (i32.const 1))
(global $~lib/argc (mut i32) (i32.const 0))
(global $~lib/runtime/MAX_BYTELENGTH i32 (i32.const 1073741808)) (global $~lib/runtime/MAX_BYTELENGTH i32 (i32.const 1073741808))
(global $~lib/gc/GC_ROOT (mut i32) (i32.const 0)) (global $~lib/gc/GC_ROOT (mut i32) (i32.const 0))
(global $~lib/started (mut i32) (i32.const 0)) (global $~lib/started (mut i32) (i32.const 0))
@ -166,7 +167,12 @@
global.get $~lib/runtime/HEADER_SIZE global.get $~lib/runtime/HEADER_SIZE
i32.add i32.add
) )
(func $gc/_dummy/__ref_register (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) (func $gc/Ref~iterate (; 6 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
)
(func $~lib/string/String~iterate (; 7 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32)
)
(func $gc/_dummy/__ref_register (; 8 ;) (type $FUNCSIG$vi) (param $0 i32)
i32.const 72 i32.const 72
i32.const 1 i32.const 1
local.get $0 local.get $0
@ -183,7 +189,7 @@
local.get $0 local.get $0
global.set $gc/_dummy/register_ref global.set $gc/_dummy/register_ref
) )
(func $~lib/runtime/register (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/runtime/register (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
local.get $0 local.get $0
global.get $~lib/memory/HEAP_BASE global.get $~lib/memory/HEAP_BASE
@ -221,7 +227,7 @@
call $gc/_dummy/__ref_register call $gc/_dummy/__ref_register
local.get $0 local.get $0
) )
(func $gc/Ref#constructor (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $gc/Ref#constructor (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.eqz i32.eqz
if if
@ -233,7 +239,24 @@
end end
local.get $0 local.get $0
) )
(func $~lib/memory/memory.fill (; 9 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/set/Set<usize>~iterate (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32)
i32.const 1
global.set $~lib/argc
local.get $0
i32.load
local.get $1
call_indirect (type $FUNCSIG$vi)
local.get $0
i32.load offset=8
local.set $2
i32.const 1
global.set $~lib/argc
local.get $2
local.get $1
call_indirect (type $FUNCSIG$vi)
)
(func $~lib/memory/memory.fill (; 12 ;) (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)
@ -490,7 +513,10 @@
end end
end end
) )
(func $~lib/arraybuffer/ArrayBuffer#constructor (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/arraybuffer/ArrayBuffer~iterate (; 13 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32)
)
(func $~lib/arraybuffer/ArrayBuffer#constructor (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
local.get $1 local.get $1
@ -519,11 +545,11 @@
local.get $3 local.get $3
local.set $2 local.set $2
local.get $2 local.get $2
i32.const 4 i32.const 5
call $~lib/runtime/register call $~lib/runtime/register
end end
) )
(func $gc/_dummy/__ref_link (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $gc/_dummy/__ref_link (; 15 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
i32.const 200 i32.const 200
i32.const 2 i32.const 2
local.get $0 local.get $0
@ -543,7 +569,7 @@
local.get $0 local.get $0
global.set $gc/_dummy/link_parentRef global.set $gc/_dummy/link_parentRef
) )
(func $gc/_dummy/__ref_unlink (; 12 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $gc/_dummy/__ref_unlink (; 16 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
i32.const 232 i32.const 232
i32.const 2 i32.const 2
local.get $0 local.get $0
@ -563,7 +589,7 @@
local.get $1 local.get $1
global.set $gc/_dummy/unlink_parentRef global.set $gc/_dummy/unlink_parentRef
) )
(func $~lib/set/Set<usize>#clear (; 13 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/set/Set<usize>#clear (; 17 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
@ -632,7 +658,7 @@
i32.const 0 i32.const 0
i32.store offset=20 i32.store offset=20
) )
(func $~lib/set/Set<usize>#constructor (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/set/Set<usize>#constructor (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
block (result i32) block (result i32)
local.get $0 local.get $0
i32.eqz i32.eqz
@ -666,7 +692,7 @@
call $~lib/set/Set<usize>#clear call $~lib/set/Set<usize>#clear
local.get $0 local.get $0
) )
(func $~lib/util/hash/hash32 (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/util/hash/hash32 (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
i32.const -2128831035 i32.const -2128831035
local.set $1 local.set $1
@ -708,7 +734,7 @@
local.set $1 local.set $1
local.get $1 local.get $1
) )
(func $~lib/set/Set<usize>#find (; 16 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/set/Set<usize>#find (; 20 ;) (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 $0 local.get $0
@ -759,7 +785,7 @@
end end
i32.const 0 i32.const 0
) )
(func $~lib/set/Set<usize>#has (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/set/Set<usize>#has (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
local.get $0 local.get $0
local.get $1 local.get $1
@ -774,7 +800,7 @@
i32.const 0 i32.const 0
i32.ne i32.ne
) )
(func $~lib/set/Set<usize>#rehash (; 18 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/set/Set<usize>#rehash (; 22 ;) (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)
@ -944,7 +970,7 @@
i32.load offset=20 i32.load offset=20
i32.store offset=16 i32.store offset=16
) )
(func $~lib/set/Set<usize>#add (; 19 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/set/Set<usize>#add (; 23 ;) (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)
@ -1042,7 +1068,7 @@
i32.store i32.store
end end
) )
(func $~lib/gc/gc.retain (; 20 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/gc/gc.retain (; 24 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32) (local $1 i32)
global.get $~lib/gc/GC_ROOT global.get $~lib/gc/GC_ROOT
local.set $1 local.set $1
@ -1059,7 +1085,7 @@
call $gc/_dummy/__ref_link call $gc/_dummy/__ref_link
end end
) )
(func $~lib/set/Set<usize>#delete (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/set/Set<usize>#delete (; 25 ;) (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)
@ -1132,7 +1158,7 @@
end end
i32.const 1 i32.const 1
) )
(func $~lib/gc/gc.release (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/gc/gc.release (; 26 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32) (local $1 i32)
global.get $~lib/gc/GC_ROOT global.get $~lib/gc/GC_ROOT
local.set $1 local.set $1
@ -1149,7 +1175,7 @@
call $gc/_dummy/__ref_unlink call $gc/_dummy/__ref_unlink
end end
) )
(func $gc/_dummy/__ref_collect (; 23 ;) (type $FUNCSIG$v) (func $gc/_dummy/__ref_collect (; 27 ;) (type $FUNCSIG$v)
i32.const 272 i32.const 272
i32.const 0 i32.const 0
f64.const 0 f64.const 0
@ -1163,10 +1189,10 @@
i32.add i32.add
global.set $gc/_dummy/collect_count global.set $gc/_dummy/collect_count
) )
(func $~lib/gc/gc.collect (; 24 ;) (type $FUNCSIG$v) (func $~lib/gc/gc.collect (; 28 ;) (type $FUNCSIG$v)
call $gc/_dummy/__ref_collect call $gc/_dummy/__ref_collect
) )
(func $gc/main (; 25 ;) (type $FUNCSIG$v) (func $gc/main (; 29 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
@ -1329,7 +1355,7 @@
unreachable unreachable
end end
) )
(func $start (; 26 ;) (type $FUNCSIG$v) (func $start (; 30 ;) (type $FUNCSIG$v)
global.get $~lib/memory/HEAP_BASE global.get $~lib/memory/HEAP_BASE
i32.const 7 i32.const 7
i32.add i32.add
@ -1344,6 +1370,6 @@
call $~lib/set/Set<usize>#constructor call $~lib/set/Set<usize>#constructor
global.set $~lib/gc/GC_ROOT global.set $~lib/gc/GC_ROOT
) )
(func $null (; 27 ;) (type $FUNCSIG$v) (func $null (; 31 ;) (type $FUNCSIG$v)
) )
) )

View File

@ -1,5 +1,6 @@
(module (module
(type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$vii (func (param i32 i32)))
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$vi (func (param i32)))
(type $FUNCSIG$viiddddd (func (param i32 i32 f64 f64 f64 f64 f64))) (type $FUNCSIG$viiddddd (func (param i32 i32 f64 f64 f64 f64 f64)))
@ -14,8 +15,8 @@
(data (i32.const 72) "g\00c\00.\00r\00e\00g\00i\00s\00t\00e\00r") (data (i32.const 72) "g\00c\00.\00r\00e\00g\00i\00s\00t\00e\00r")
(data (i32.const 96) "\02\00\00\00&") (data (i32.const 96) "\02\00\00\00&")
(data (i32.const 112) "g\00c\00/\00g\00l\00o\00b\00a\00l\00-\00a\00s\00s\00i\00g\00n\00.\00t\00s") (data (i32.const 112) "g\00c\00/\00g\00l\00o\00b\00a\00l\00-\00a\00s\00s\00i\00g\00n\00.\00t\00s")
(table $0 1 funcref) (table $0 3 funcref)
(elem (i32.const 0) $null) (elem (i32.const 0) $null $gc/global-assign/Ref~iterate $gc/global-assign/Ref~iterate)
(global $gc/_dummy/register_count (mut i32) (i32.const 0)) (global $gc/_dummy/register_count (mut i32) (i32.const 0))
(global $gc/_dummy/register_ref (mut i32) (i32.const 0)) (global $gc/_dummy/register_ref (mut i32) (i32.const 0))
(global $gc/_dummy/link_count (mut i32) (i32.const 0)) (global $gc/_dummy/link_count (mut i32) (i32.const 0))
@ -112,7 +113,10 @@
i32.const 16 i32.const 16
i32.add i32.add
) )
(func $gc/_dummy/__ref_register (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) (func $gc/global-assign/Ref~iterate (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
nop
)
(func $gc/_dummy/__ref_register (; 5 ;) (type $FUNCSIG$vi) (param $0 i32)
i32.const 72 i32.const 72
i32.const 1 i32.const 1
local.get $0 local.get $0
@ -129,7 +133,7 @@
local.get $0 local.get $0
global.set $gc/_dummy/register_ref global.set $gc/_dummy/register_ref
) )
(func $~lib/runtime/register (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/runtime/register (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
local.get $0 local.get $0
i32.const 152 i32.const 152
@ -164,7 +168,7 @@
call $gc/_dummy/__ref_register call $gc/_dummy/__ref_register
local.get $0 local.get $0
) )
(func $start:gc/global-assign (; 6 ;) (type $FUNCSIG$v) (func $start:gc/global-assign (; 7 ;) (type $FUNCSIG$v)
i32.const 152 i32.const 152
global.set $~lib/allocator/arena/startOffset global.set $~lib/allocator/arena/startOffset
global.get $~lib/allocator/arena/startOffset global.get $~lib/allocator/arena/startOffset
@ -236,7 +240,7 @@
unreachable unreachable
end end
) )
(func $gc/global-assign/main (; 7 ;) (type $FUNCSIG$v) (func $gc/global-assign/main (; 8 ;) (type $FUNCSIG$v)
global.get $~lib/started global.get $~lib/started
i32.eqz i32.eqz
if if
@ -245,7 +249,7 @@
global.set $~lib/started global.set $~lib/started
end end
) )
(func $null (; 8 ;) (type $FUNCSIG$v) (func $null (; 9 ;) (type $FUNCSIG$v)
nop nop
) )
) )

View File

@ -1,5 +1,6 @@
(module (module
(type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$vii (func (param i32 i32)))
(type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32)))
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$vi (func (param i32)))
@ -11,8 +12,8 @@
(data (i32.const 8) "\02\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") (data (i32.const 8) "\02\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00")
(data (i32.const 56) "\02\00\00\00\16\00\00\00\00\00\00\00\00\00\00\00g\00c\00.\00r\00e\00g\00i\00s\00t\00e\00r\00") (data (i32.const 56) "\02\00\00\00\16\00\00\00\00\00\00\00\00\00\00\00g\00c\00.\00r\00e\00g\00i\00s\00t\00e\00r\00")
(data (i32.const 96) "\02\00\00\00&\00\00\00\00\00\00\00\00\00\00\00g\00c\00/\00g\00l\00o\00b\00a\00l\00-\00a\00s\00s\00i\00g\00n\00.\00t\00s\00") (data (i32.const 96) "\02\00\00\00&\00\00\00\00\00\00\00\00\00\00\00g\00c\00/\00g\00l\00o\00b\00a\00l\00-\00a\00s\00s\00i\00g\00n\00.\00t\00s\00")
(table $0 1 funcref) (table $0 3 funcref)
(elem (i32.const 0) $null) (elem (i32.const 0) $null $gc/global-assign/Ref~iterate $~lib/string/String~iterate)
(global $gc/_dummy/collect_count (mut i32) (i32.const 0)) (global $gc/_dummy/collect_count (mut i32) (i32.const 0))
(global $gc/_dummy/register_count (mut i32) (i32.const 0)) (global $gc/_dummy/register_count (mut i32) (i32.const 0))
(global $gc/_dummy/register_ref (mut i32) (i32.const 0)) (global $gc/_dummy/register_ref (mut i32) (i32.const 0))
@ -154,7 +155,12 @@
global.get $~lib/runtime/HEADER_SIZE global.get $~lib/runtime/HEADER_SIZE
i32.add i32.add
) )
(func $gc/_dummy/__ref_register (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) (func $gc/global-assign/Ref~iterate (; 6 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
)
(func $~lib/string/String~iterate (; 7 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32)
)
(func $gc/_dummy/__ref_register (; 8 ;) (type $FUNCSIG$vi) (param $0 i32)
i32.const 72 i32.const 72
i32.const 1 i32.const 1
local.get $0 local.get $0
@ -171,7 +177,7 @@
local.get $0 local.get $0
global.set $gc/_dummy/register_ref global.set $gc/_dummy/register_ref
) )
(func $~lib/runtime/register (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/runtime/register (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
local.get $0 local.get $0
global.get $~lib/memory/HEAP_BASE global.get $~lib/memory/HEAP_BASE
@ -209,7 +215,7 @@
call $gc/_dummy/__ref_register call $gc/_dummy/__ref_register
local.get $0 local.get $0
) )
(func $gc/global-assign/Ref#constructor (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $gc/global-assign/Ref#constructor (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.eqz i32.eqz
if if
@ -221,7 +227,7 @@
end end
local.get $0 local.get $0
) )
(func $start:gc/global-assign (; 9 ;) (type $FUNCSIG$v) (func $start:gc/global-assign (; 11 ;) (type $FUNCSIG$v)
global.get $~lib/memory/HEAP_BASE global.get $~lib/memory/HEAP_BASE
i32.const 7 i32.const 7
i32.add i32.add
@ -313,7 +319,7 @@
unreachable unreachable
end end
) )
(func $gc/global-assign/main (; 10 ;) (type $FUNCSIG$v) (func $gc/global-assign/main (; 12 ;) (type $FUNCSIG$v)
global.get $~lib/started global.get $~lib/started
i32.eqz i32.eqz
if if
@ -322,9 +328,9 @@
global.set $~lib/started global.set $~lib/started
end end
) )
(func $start (; 11 ;) (type $FUNCSIG$v) (func $start (; 13 ;) (type $FUNCSIG$v)
call $start:gc/global-assign call $start:gc/global-assign
) )
(func $null (; 12 ;) (type $FUNCSIG$v) (func $null (; 14 ;) (type $FUNCSIG$v)
) )
) )

View File

@ -1,5 +1,6 @@
(module (module
(type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$vii (func (param i32 i32)))
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$vi (func (param i32)))
(type $FUNCSIG$viiddddd (func (param i32 i32 f64 f64 f64 f64 f64))) (type $FUNCSIG$viiddddd (func (param i32 i32 f64 f64 f64 f64 f64)))
@ -14,8 +15,8 @@
(data (i32.const 72) "g\00c\00.\00r\00e\00g\00i\00s\00t\00e\00r") (data (i32.const 72) "g\00c\00.\00r\00e\00g\00i\00s\00t\00e\00r")
(data (i32.const 96) "\02\00\00\00\"") (data (i32.const 96) "\02\00\00\00\"")
(data (i32.const 112) "g\00c\00/\00g\00l\00o\00b\00a\00l\00-\00i\00n\00i\00t\00.\00t\00s") (data (i32.const 112) "g\00c\00/\00g\00l\00o\00b\00a\00l\00-\00i\00n\00i\00t\00.\00t\00s")
(table $0 1 funcref) (table $0 3 funcref)
(elem (i32.const 0) $null) (elem (i32.const 0) $null $gc/global-init/Ref~iterate $gc/global-init/Ref~iterate)
(global $gc/_dummy/register_count (mut i32) (i32.const 0)) (global $gc/_dummy/register_count (mut i32) (i32.const 0))
(global $gc/_dummy/register_ref (mut i32) (i32.const 0)) (global $gc/_dummy/register_ref (mut i32) (i32.const 0))
(global $gc/_dummy/link_count (mut i32) (i32.const 0)) (global $gc/_dummy/link_count (mut i32) (i32.const 0))
@ -111,7 +112,10 @@
i32.const 16 i32.const 16
i32.add i32.add
) )
(func $gc/_dummy/__ref_register (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) (func $gc/global-init/Ref~iterate (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
nop
)
(func $gc/_dummy/__ref_register (; 5 ;) (type $FUNCSIG$vi) (param $0 i32)
i32.const 72 i32.const 72
i32.const 1 i32.const 1
local.get $0 local.get $0
@ -128,7 +132,7 @@
local.get $0 local.get $0
global.set $gc/_dummy/register_ref global.set $gc/_dummy/register_ref
) )
(func $~lib/runtime/register (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/runtime/register (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
local.get $0 local.get $0
i32.const 148 i32.const 148
@ -163,7 +167,7 @@
call $gc/_dummy/__ref_register call $gc/_dummy/__ref_register
local.get $0 local.get $0
) )
(func $start:gc/global-init (; 6 ;) (type $FUNCSIG$v) (func $start:gc/global-init (; 7 ;) (type $FUNCSIG$v)
i32.const 152 i32.const 152
global.set $~lib/allocator/arena/startOffset global.set $~lib/allocator/arena/startOffset
global.get $~lib/allocator/arena/startOffset global.get $~lib/allocator/arena/startOffset
@ -233,7 +237,7 @@
unreachable unreachable
end end
) )
(func $gc/global-init/main (; 7 ;) (type $FUNCSIG$v) (func $gc/global-init/main (; 8 ;) (type $FUNCSIG$v)
global.get $~lib/started global.get $~lib/started
i32.eqz i32.eqz
if if
@ -242,7 +246,7 @@
global.set $~lib/started global.set $~lib/started
end end
) )
(func $null (; 8 ;) (type $FUNCSIG$v) (func $null (; 9 ;) (type $FUNCSIG$v)
nop nop
) )
) )

View File

@ -1,5 +1,6 @@
(module (module
(type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$vii (func (param i32 i32)))
(type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32)))
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$vi (func (param i32)))
@ -11,8 +12,8 @@
(data (i32.const 8) "\02\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") (data (i32.const 8) "\02\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00")
(data (i32.const 56) "\02\00\00\00\16\00\00\00\00\00\00\00\00\00\00\00g\00c\00.\00r\00e\00g\00i\00s\00t\00e\00r\00") (data (i32.const 56) "\02\00\00\00\16\00\00\00\00\00\00\00\00\00\00\00g\00c\00.\00r\00e\00g\00i\00s\00t\00e\00r\00")
(data (i32.const 96) "\02\00\00\00\"\00\00\00\00\00\00\00\00\00\00\00g\00c\00/\00g\00l\00o\00b\00a\00l\00-\00i\00n\00i\00t\00.\00t\00s\00") (data (i32.const 96) "\02\00\00\00\"\00\00\00\00\00\00\00\00\00\00\00g\00c\00/\00g\00l\00o\00b\00a\00l\00-\00i\00n\00i\00t\00.\00t\00s\00")
(table $0 1 funcref) (table $0 3 funcref)
(elem (i32.const 0) $null) (elem (i32.const 0) $null $gc/global-init/Ref~iterate $~lib/string/String~iterate)
(global $gc/_dummy/collect_count (mut i32) (i32.const 0)) (global $gc/_dummy/collect_count (mut i32) (i32.const 0))
(global $gc/_dummy/register_count (mut i32) (i32.const 0)) (global $gc/_dummy/register_count (mut i32) (i32.const 0))
(global $gc/_dummy/register_ref (mut i32) (i32.const 0)) (global $gc/_dummy/register_ref (mut i32) (i32.const 0))
@ -153,7 +154,12 @@
global.get $~lib/runtime/HEADER_SIZE global.get $~lib/runtime/HEADER_SIZE
i32.add i32.add
) )
(func $gc/_dummy/__ref_register (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) (func $gc/global-init/Ref~iterate (; 6 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
)
(func $~lib/string/String~iterate (; 7 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32)
)
(func $gc/_dummy/__ref_register (; 8 ;) (type $FUNCSIG$vi) (param $0 i32)
i32.const 72 i32.const 72
i32.const 1 i32.const 1
local.get $0 local.get $0
@ -170,7 +176,7 @@
local.get $0 local.get $0
global.set $gc/_dummy/register_ref global.set $gc/_dummy/register_ref
) )
(func $~lib/runtime/register (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/runtime/register (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
local.get $0 local.get $0
global.get $~lib/memory/HEAP_BASE global.get $~lib/memory/HEAP_BASE
@ -208,7 +214,7 @@
call $gc/_dummy/__ref_register call $gc/_dummy/__ref_register
local.get $0 local.get $0
) )
(func $gc/global-init/Ref#constructor (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $gc/global-init/Ref#constructor (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.eqz i32.eqz
if if
@ -220,7 +226,7 @@
end end
local.get $0 local.get $0
) )
(func $start:gc/global-init (; 9 ;) (type $FUNCSIG$v) (func $start:gc/global-init (; 11 ;) (type $FUNCSIG$v)
global.get $~lib/memory/HEAP_BASE global.get $~lib/memory/HEAP_BASE
i32.const 7 i32.const 7
i32.add i32.add
@ -310,7 +316,7 @@
unreachable unreachable
end end
) )
(func $gc/global-init/main (; 10 ;) (type $FUNCSIG$v) (func $gc/global-init/main (; 12 ;) (type $FUNCSIG$v)
global.get $~lib/started global.get $~lib/started
i32.eqz i32.eqz
if if
@ -319,9 +325,9 @@
global.set $~lib/started global.set $~lib/started
end end
) )
(func $start (; 11 ;) (type $FUNCSIG$v) (func $start (; 13 ;) (type $FUNCSIG$v)
call $start:gc/global-init call $start:gc/global-init
) )
(func $null (; 12 ;) (type $FUNCSIG$v) (func $null (; 14 ;) (type $FUNCSIG$v)
) )
) )

View File

@ -1,10 +1,10 @@
(module (module
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(type $FUNCSIG$vii (func (param i32 i32)))
(type $FUNCSIG$v (func)) (type $FUNCSIG$v (func))
(type $FUNCSIG$viiddddd (func (param i32 i32 f64 f64 f64 f64 f64))) (type $FUNCSIG$viiddddd (func (param i32 i32 f64 f64 f64 f64 f64)))
(type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$vi (func (param i32)))
(type $FUNCSIG$vii (func (param i32 i32)))
(type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32)))
(type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$viii (func (param i32 i32 i32)))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
@ -36,34 +36,36 @@
(data (i32.const 600) "i\00t\00c\00m\00~\00s\00t\00a\00t\00e\00 \00=\00 \00M\00A\00R\00K") (data (i32.const 600) "i\00t\00c\00m\00~\00s\00t\00a\00t\00e\00 \00=\00 \00M\00A\00R\00K")
(data (i32.const 640) "\01\00\00\00,") (data (i32.const 640) "\01\00\00\00,")
(data (i32.const 656) "i\00t\00c\00m\00~\00s\00t\00e\00p\00/\00M\00A\00R\00K\00 \00i\00t\00e\00r\00a\00t\00e") (data (i32.const 656) "i\00t\00c\00m\00~\00s\00t\00e\00p\00/\00M\00A\00R\00K\00 \00i\00t\00e\00r\00a\00t\00e")
(data (i32.const 704) "\01\00\00\00*") (data (i32.const 704) "\01\00\00\00\12")
(data (i32.const 720) "i\00t\00c\00m\00~\00s\00t\00e\00p\00/\00M\00A\00R\00K\00 \00f\00i\00n\00i\00s\00h") (data (i32.const 720) " \00 \00 \00 \00 \00i\00t\00e\00r")
(data (i32.const 768) "\01\00\00\00$") (data (i32.const 744) "\01\00\00\00*")
(data (i32.const 784) "i\00t\00c\00m\00~\00s\00t\00a\00t\00e\00 \00=\00 \00S\00W\00E\00E\00P") (data (i32.const 760) "i\00t\00c\00m\00~\00s\00t\00e\00p\00/\00M\00A\00R\00K\00 \00f\00i\00n\00i\00s\00h")
(data (i32.const 824) "\01\00\00\00(") (data (i32.const 808) "\01\00\00\00$")
(data (i32.const 840) "i\00t\00c\00m\00~\00s\00t\00e\00p\00/\00S\00W\00E\00E\00P\00 \00f\00r\00e\00e") (data (i32.const 824) "i\00t\00c\00m\00~\00s\00t\00a\00t\00e\00 \00=\00 \00S\00W\00E\00E\00P")
(data (i32.const 880) "\01\00\00\00,") (data (i32.const 864) "\01\00\00\00(")
(data (i32.const 896) "i\00t\00c\00m\00~\00s\00t\00e\00p\00/\00S\00W\00E\00E\00P\00 \00f\00i\00n\00i\00s\00h") (data (i32.const 880) "i\00t\00c\00m\00~\00s\00t\00e\00p\00/\00S\00W\00E\00E\00P\00 \00f\00r\00e\00e")
(data (i32.const 944) "\01\00\00\00\"") (data (i32.const 920) "\01\00\00\00,")
(data (i32.const 960) "#\00 \00r\00e\00f\00 \00=\00 \00n\00e\00w\00 \00R\00e\00f\00(\00)") (data (i32.const 936) "i\00t\00c\00m\00~\00s\00t\00e\00p\00/\00S\00W\00E\00E\00P\00 \00f\00i\00n\00i\00s\00h")
(data (i32.const 1000) "\01\00\00\00\1e") (data (i32.const 984) "\01\00\00\00\"")
(data (i32.const 1016) "~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") (data (i32.const 1000) "#\00 \00r\00e\00f\00 \00=\00 \00n\00e\00w\00 \00R\00e\00f\00(\00)")
(data (i32.const 1048) "\01\00\00\00\1a") (data (i32.const 1040) "\01\00\00\00\1e")
(data (i32.const 1064) "i\00t\00c\00m\00.\00r\00e\00g\00i\00s\00t\00e\00r") (data (i32.const 1056) "~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s")
(data (i32.const 1096) "\01\00\00\00(") (data (i32.const 1088) "\01\00\00\00\1a")
(data (i32.const 1112) "#\00 \00a\00r\00r\00 \00=\00 \00n\00e\00w\00 \00A\00r\00r\00a\00y\00(\001\00)") (data (i32.const 1104) "i\00t\00c\00m\00.\00r\00e\00g\00i\00s\00t\00e\00r")
(data (i32.const 1152) "\01\00\00\00&") (data (i32.const 1136) "\01\00\00\00(")
(data (i32.const 1168) "~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") (data (i32.const 1152) "#\00 \00a\00r\00r\00 \00=\00 \00n\00e\00w\00 \00A\00r\00r\00a\00y\00(\001\00)")
(data (i32.const 1208) "\01\00\00\00\12") (data (i32.const 1192) "\01\00\00\00&")
(data (i32.const 1224) "i\00t\00c\00m\00.\00l\00i\00n\00k") (data (i32.const 1208) "~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s")
(data (i32.const 1248) "\01\00\00\00\1c") (data (i32.const 1248) "\01\00\00\00\12")
(data (i32.const 1264) "#\00 \00a\00r\00r\00[\000\00]\00 \00=\00 \00r\00e\00f") (data (i32.const 1264) "i\00t\00c\00m\00.\00l\00i\00n\00k")
(data (i32.const 1296) "\01\00\00\00\1a") (data (i32.const 1288) "\01\00\00\00\1c")
(data (i32.const 1312) "~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") (data (i32.const 1304) "#\00 \00a\00r\00r\00[\000\00]\00 \00=\00 \00r\00e\00f")
(data (i32.const 1344) "\01\00\00\00\1e") (data (i32.const 1336) "\01\00\00\00\1a")
(data (i32.const 1360) "#\00 \00a\00r\00r\00[\000\00]\00 \00=\00 \00n\00u\00l\00l") (data (i32.const 1352) "~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s")
(table $0 3 funcref) (data (i32.const 1384) "\01\00\00\00\1e")
(elem (i32.const 0) $null $~lib/collector/itcm/step~anonymous|0 $~lib/collector/itcm/step~anonymous|0) (data (i32.const 1400) "#\00 \00a\00r\00r\00[\000\00]\00 \00=\00 \00n\00u\00l\00l")
(table $0 10 funcref)
(elem (i32.const 0) $null $~lib/string/String~iterate $~lib/collector/itcm/step~anonymous|0 $~lib/collector/itcm/step~anonymous|1 $~lib/collector/itcm/step~anonymous|0 $gc/itcm/trace/Ref~iterate $~lib/string/String~iterate $~lib/runtime/ArrayBufferView~iterate $~lib/array/Array<gc/itcm/trace/Ref | null>~iterate $~lib/array/Array<gc/itcm/trace/Ref | null>~iterate)
(global $~lib/collector/itcm/state (mut i32) (i32.const 0)) (global $~lib/collector/itcm/state (mut i32) (i32.const 0))
(global $~lib/collector/itcm/white (mut i32) (i32.const 0)) (global $~lib/collector/itcm/white (mut i32) (i32.const 0))
(global $~lib/collector/itcm/fromSpace (mut i32) (i32.const 0)) (global $~lib/collector/itcm/fromSpace (mut i32) (i32.const 0))
@ -71,8 +73,8 @@
(global $~lib/collector/itcm/iter (mut i32) (i32.const 0)) (global $~lib/collector/itcm/iter (mut i32) (i32.const 0))
(global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0))
(global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) (global $~lib/allocator/arena/offset (mut i32) (i32.const 0))
(global $~lib/argc (mut i32) (i32.const 0))
(global $gc/itcm/trace/ref (mut i32) (i32.const 0)) (global $gc/itcm/trace/ref (mut i32) (i32.const 0))
(global $~lib/argc (mut i32) (i32.const 0))
(global $gc/itcm/trace/arr (mut i32) (i32.const 0)) (global $gc/itcm/trace/arr (mut i32) (i32.const 0))
(global $~lib/started (mut i32) (i32.const 0)) (global $~lib/started (mut i32) (i32.const 0))
(global $~lib/capabilities i32 (i32.const 2)) (global $~lib/capabilities i32 (i32.const 2))
@ -80,7 +82,10 @@
(export "table" (table $0)) (export "table" (table $0))
(export "main" (func $gc/itcm/trace/main)) (export "main" (func $gc/itcm/trace/main))
(export ".capabilities" (global $~lib/capabilities)) (export ".capabilities" (global $~lib/capabilities))
(func $~lib/allocator/arena/__mem_allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/string/String~iterate (; 2 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
nop
)
(func $~lib/allocator/arena/__mem_allocate (; 3 ;) (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)
@ -142,7 +147,7 @@
global.set $~lib/allocator/arena/offset global.set $~lib/allocator/arena/offset
local.get $1 local.get $1
) )
(func $~lib/collector/itcm/ManagedObjectList#clear (; 3 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/collector/itcm/ManagedObjectList#clear (; 4 ;) (type $FUNCSIG$vi) (param $0 i32)
i32.const 208 i32.const 208
i32.const 1 i32.const 1
local.get $0 local.get $0
@ -161,7 +166,7 @@
local.get $0 local.get $0
i32.store offset=12 i32.store offset=12
) )
(func $~lib/collector/itcm/ManagedObject#unlink (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/collector/itcm/ManagedObject#unlink (; 5 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32) (local $1 i32)
i32.const 448 i32.const 448
i32.const 3 i32.const 3
@ -198,7 +203,7 @@
i32.or i32.or
i32.store offset=8 i32.store offset=8
) )
(func $~lib/collector/itcm/ManagedObjectList#push (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/collector/itcm/ManagedObjectList#push (; 6 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
i32.const 528 i32.const 528
i32.const 3 i32.const 3
@ -242,7 +247,7 @@
local.get $1 local.get $1
i32.store offset=12 i32.store offset=12
) )
(func $~lib/collector/itcm/ManagedObject#makeGray (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/collector/itcm/ManagedObject#makeGray (; 7 ;) (type $FUNCSIG$vi) (param $0 i32)
i32.const 400 i32.const 400
i32.const 1 i32.const 1
local.get $0 local.get $0
@ -276,7 +281,7 @@
i32.or i32.or
i32.store offset=8 i32.store offset=8
) )
(func $~lib/collector/itcm/step~anonymous|0 (; 7 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/collector/itcm/step~anonymous|0 (; 8 ;) (type $FUNCSIG$vi) (param $0 i32)
global.get $~lib/collector/itcm/white global.get $~lib/collector/itcm/white
local.get $0 local.get $0
i32.const 16 i32.const 16
@ -291,7 +296,31 @@
call $~lib/collector/itcm/ManagedObject#makeGray call $~lib/collector/itcm/ManagedObject#makeGray
end end
) )
(func $~lib/collector/itcm/step (; 8 ;) (type $FUNCSIG$v) (func $~lib/collector/itcm/step~anonymous|1 (; 9 ;) (type $FUNCSIG$vi) (param $0 i32)
i32.const 720
i32.const 1
local.get $0
f64.convert_i32_u
f64.const 0
f64.const 0
f64.const 0
f64.const 0
call $~lib/env/trace
global.get $~lib/collector/itcm/white
local.get $0
i32.const 16
i32.sub
local.tee $0
i32.load offset=8
i32.const 3
i32.and
i32.eq
if
local.get $0
call $~lib/collector/itcm/ManagedObject#makeGray
end
)
(func $~lib/collector/itcm/step (; 10 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
block $break|0 block $break|0
@ -385,14 +414,14 @@
local.tee $0 local.tee $0
if if
local.get $0 local.get $0
i32.const 1 i32.const 2
call_indirect (type $FUNCSIG$vi) call_indirect (type $FUNCSIG$vi)
end end
global.get $gc/itcm/trace/arr global.get $gc/itcm/trace/arr
local.tee $0 local.tee $0
if if
local.get $0 local.get $0
i32.const 1 i32.const 2
call_indirect (type $FUNCSIG$vi) call_indirect (type $FUNCSIG$vi)
end end
i32.const 2 i32.const 2
@ -438,14 +467,13 @@
i32.and i32.and
i32.or i32.or
i32.store offset=8 i32.store offset=8
i32.const 1
global.set $~lib/argc
local.get $1 local.get $1
i32.const 3
local.get $0 local.get $0
i32.load i32.load
call_indirect (type $FUNCSIG$vi) call_indirect (type $FUNCSIG$vii)
else else
i32.const 720 i32.const 760
i32.const 0 i32.const 0
f64.const 0 f64.const 0
f64.const 0 f64.const 0
@ -457,14 +485,14 @@
local.tee $0 local.tee $0
if if
local.get $0 local.get $0
i32.const 2 i32.const 4
call_indirect (type $FUNCSIG$vi) call_indirect (type $FUNCSIG$vi)
end end
global.get $gc/itcm/trace/arr global.get $gc/itcm/trace/arr
local.tee $0 local.tee $0
if if
local.get $0 local.get $0
i32.const 2 i32.const 4
call_indirect (type $FUNCSIG$vi) call_indirect (type $FUNCSIG$vi)
end end
global.get $~lib/collector/itcm/toSpace global.get $~lib/collector/itcm/toSpace
@ -490,7 +518,7 @@
global.set $~lib/collector/itcm/iter global.set $~lib/collector/itcm/iter
i32.const 3 i32.const 3
global.set $~lib/collector/itcm/state global.set $~lib/collector/itcm/state
i32.const 784 i32.const 824
i32.const 0 i32.const 0
f64.const 0 f64.const 0
f64.const 0 f64.const 0
@ -507,7 +535,7 @@
global.get $~lib/collector/itcm/toSpace global.get $~lib/collector/itcm/toSpace
i32.ne i32.ne
if if
i32.const 840 i32.const 880
i32.const 1 i32.const 1
local.get $0 local.get $0
i32.const 16 i32.const 16
@ -524,7 +552,7 @@
i32.and i32.and
global.set $~lib/collector/itcm/iter global.set $~lib/collector/itcm/iter
else else
i32.const 896 i32.const 936
i32.const 0 i32.const 0
f64.const 0 f64.const 0
f64.const 0 f64.const 0
@ -547,7 +575,7 @@
end end
end end
) )
(func $~lib/collector/itcm/__ref_collect (; 9 ;) (type $FUNCSIG$v) (func $~lib/collector/itcm/__ref_collect (; 11 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
i32.const 72 i32.const 72
i32.const 0 i32.const 0
@ -581,7 +609,7 @@
end end
end end
) )
(func $~lib/runtime/allocate (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/runtime/allocate (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
i32.const 1 i32.const 1
i32.const 32 i32.const 32
@ -608,8 +636,21 @@
i32.const 16 i32.const 16
i32.add i32.add
) )
(func $~lib/collector/itcm/__ref_register (; 11 ;) (type $FUNCSIG$vi) (param $0 i32) (func $gc/itcm/trace/Ref~iterate (; 13 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
i32.const 1064 local.get $0
i32.load
local.tee $0
if
local.get $0
local.get $1
call_indirect (type $FUNCSIG$vi)
local.get $0
local.get $1
call $gc/itcm/trace/Ref~iterate
end
)
(func $~lib/collector/itcm/__ref_register (; 14 ;) (type $FUNCSIG$vi) (param $0 i32)
i32.const 1104
i32.const 1 i32.const 1
local.get $0 local.get $0
f64.convert_i32_u f64.convert_i32_u
@ -634,14 +675,14 @@
local.get $0 local.get $0
call $~lib/collector/itcm/ManagedObjectList#push call $~lib/collector/itcm/ManagedObjectList#push
) )
(func $~lib/runtime/register (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/runtime/register (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
local.get $0 local.get $0
i32.const 1392 i32.const 1432
i32.le_u i32.le_u
if if
i32.const 0 i32.const 0
i32.const 1016 i32.const 1056
i32.const 149 i32.const 149
i32.const 4 i32.const 4
call $~lib/env/abort call $~lib/env/abort
@ -656,7 +697,7 @@
i32.ne i32.ne
if if
i32.const 0 i32.const 0
i32.const 1016 i32.const 1056
i32.const 151 i32.const 151
i32.const 4 i32.const 4
call $~lib/env/abort call $~lib/env/abort
@ -669,7 +710,7 @@
call $~lib/collector/itcm/__ref_register call $~lib/collector/itcm/__ref_register
local.get $0 local.get $0
) )
(func $~lib/memory/memory.fill (; 13 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/memory/memory.fill (; 16 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
block $~lib/util/memory/memset|inlined.0 block $~lib/util/memory/memset|inlined.0
local.get $1 local.get $1
@ -880,9 +921,19 @@
end end
end end
) )
(func $~lib/collector/itcm/__ref_link (; 14 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/runtime/ArrayBufferView~iterate (; 17 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
local.get $0
i32.load
local.tee $0
if
local.get $0
local.get $1
call_indirect (type $FUNCSIG$vi)
end
)
(func $~lib/collector/itcm/__ref_link (; 18 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
i32.const 1224 i32.const 1264
i32.const 2 i32.const 2
local.get $0 local.get $0
f64.convert_i32_u f64.convert_i32_u
@ -920,7 +971,7 @@
call $~lib/collector/itcm/ManagedObject#makeGray call $~lib/collector/itcm/ManagedObject#makeGray
end end
) )
(func $~lib/runtime/ArrayBufferView#constructor (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/runtime/ArrayBufferView#constructor (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
i32.const 4 i32.const 4
call $~lib/runtime/allocate call $~lib/runtime/allocate
@ -928,7 +979,7 @@
i32.const 4 i32.const 4
call $~lib/memory/memory.fill call $~lib/memory/memory.fill
local.get $1 local.get $1
i32.const 3 i32.const 6
call $~lib/runtime/register call $~lib/runtime/register
local.set $1 local.set $1
local.get $0 local.get $0
@ -936,7 +987,7 @@
if if
i32.const 12 i32.const 12
call $~lib/runtime/allocate call $~lib/runtime/allocate
i32.const 4 i32.const 7
call $~lib/runtime/register call $~lib/runtime/register
local.set $0 local.set $0
end end
@ -969,7 +1020,49 @@
i32.store offset=8 i32.store offset=8
local.get $0 local.get $0
) )
(func $~lib/util/memory/memcpy (; 16 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/array/Array<gc/itcm/trace/Ref | null>~iterate (; 20 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
i32.const 1
global.set $~lib/argc
local.get $0
i32.load
local.get $1
call_indirect (type $FUNCSIG$vi)
local.get $0
i32.load offset=4
local.tee $2
local.get $0
i32.load offset=8
i32.add
local.set $3
loop $continue|0
local.get $2
local.get $3
i32.lt_u
if
local.get $2
i32.load
local.tee $0
if
i32.const 1
global.set $~lib/argc
local.get $0
local.get $1
call_indirect (type $FUNCSIG$vi)
local.get $0
local.get $1
call $gc/itcm/trace/Ref~iterate
end
local.get $2
i32.const 4
i32.add
local.set $2
br $continue|0
end
end
)
(func $~lib/util/memory/memcpy (; 21 ;) (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)
@ -1816,7 +1909,7 @@
i32.store8 i32.store8
end end
) )
(func $~lib/memory/memory.copy (; 17 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/memory/memory.copy (; 22 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
block $~lib/util/memory/memmove|inlined.0 block $~lib/util/memory/memmove|inlined.0
@ -2010,7 +2103,7 @@
end end
end end
) )
(func $~lib/runtime/reallocate (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/runtime/reallocate (; 23 ;) (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)
@ -2034,7 +2127,7 @@
i32.shl i32.shl
i32.const 0 i32.const 0
local.get $0 local.get $0
i32.const 1392 i32.const 1432
i32.gt_u i32.gt_u
select select
i32.const 32 i32.const 32
@ -2072,11 +2165,11 @@
i32.eq i32.eq
if if
local.get $0 local.get $0
i32.const 1392 i32.const 1432
i32.le_u i32.le_u
if if
i32.const 0 i32.const 0
i32.const 1016 i32.const 1056
i32.const 113 i32.const 113
i32.const 8 i32.const 8
call $~lib/env/abort call $~lib/env/abort
@ -2105,7 +2198,7 @@
i32.store offset=4 i32.store offset=4
local.get $0 local.get $0
) )
(func $~lib/array/ensureCapacity (; 19 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/array/ensureCapacity (; 24 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
i32.const 1 i32.const 1
@ -2145,7 +2238,7 @@
i32.store offset=8 i32.store offset=8
end end
) )
(func $~lib/array/Array<gc/itcm/trace/Ref | null>#__unchecked_set (; 20 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/array/Array<gc/itcm/trace/Ref | null>#__unchecked_set (; 25 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
local.get $0 local.get $0
i32.load offset=4 i32.load offset=4
@ -2165,7 +2258,7 @@
end end
end end
) )
(func $~lib/array/Array<gc/itcm/trace/Ref | null>#__set (; 21 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/array/Array<gc/itcm/trace/Ref | null>#__set (; 26 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
local.get $0 local.get $0
i32.load offset=12 i32.load offset=12
@ -2184,14 +2277,14 @@
i32.store offset=12 i32.store offset=12
end end
) )
(func $start:gc/itcm/trace (; 22 ;) (type $FUNCSIG$v) (func $start:gc/itcm/trace (; 27 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
i32.const 1392 i32.const 1432
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
call $~lib/collector/itcm/__ref_collect call $~lib/collector/itcm/__ref_collect
i32.const 960 i32.const 1000
i32.const 0 i32.const 0
f64.const 0 f64.const 0
f64.const 0 f64.const 0
@ -2199,12 +2292,16 @@
f64.const 0 f64.const 0
f64.const 0 f64.const 0
call $~lib/env/trace call $~lib/env/trace
i32.const 0 i32.const 4
call $~lib/runtime/allocate call $~lib/runtime/allocate
i32.const 2 i32.const 5
call $~lib/runtime/register call $~lib/runtime/register
local.tee $0
i32.const 0
i32.store
local.get $0
global.set $gc/itcm/trace/ref global.set $gc/itcm/trace/ref
i32.const 1112 i32.const 1152
i32.const 0 i32.const 0
f64.const 0 f64.const 0
f64.const 0 f64.const 0
@ -2214,7 +2311,7 @@
call $~lib/env/trace call $~lib/env/trace
i32.const 16 i32.const 16
call $~lib/runtime/allocate call $~lib/runtime/allocate
i32.const 5 i32.const 8
call $~lib/runtime/register call $~lib/runtime/register
call $~lib/runtime/ArrayBufferView#constructor call $~lib/runtime/ArrayBufferView#constructor
local.tee $0 local.tee $0
@ -2225,7 +2322,7 @@
i32.store offset=12 i32.store offset=12
local.get $0 local.get $0
global.set $gc/itcm/trace/arr global.set $gc/itcm/trace/arr
i32.const 1264 i32.const 1304
i32.const 0 i32.const 0
f64.const 0 f64.const 0
f64.const 0 f64.const 0
@ -2236,7 +2333,7 @@
global.get $gc/itcm/trace/arr global.get $gc/itcm/trace/arr
global.get $gc/itcm/trace/ref global.get $gc/itcm/trace/ref
call $~lib/array/Array<gc/itcm/trace/Ref | null>#__set call $~lib/array/Array<gc/itcm/trace/Ref | null>#__set
i32.const 1360 i32.const 1400
i32.const 0 i32.const 0
f64.const 0 f64.const 0
f64.const 0 f64.const 0
@ -2247,8 +2344,9 @@
global.get $gc/itcm/trace/arr global.get $gc/itcm/trace/arr
i32.const 0 i32.const 0
call $~lib/array/Array<gc/itcm/trace/Ref | null>#__set call $~lib/array/Array<gc/itcm/trace/Ref | null>#__set
call $~lib/collector/itcm/__ref_collect
) )
(func $gc/itcm/trace/main (; 23 ;) (type $FUNCSIG$v) (func $gc/itcm/trace/main (; 28 ;) (type $FUNCSIG$v)
global.get $~lib/started global.get $~lib/started
i32.eqz i32.eqz
if if
@ -2257,7 +2355,7 @@
global.set $~lib/started global.set $~lib/started
end end
) )
(func $null (; 24 ;) (type $FUNCSIG$v) (func $null (; 29 ;) (type $FUNCSIG$v)
nop nop
) )
) )

View File

@ -10,7 +10,9 @@ assert(gc.implemented);
gc.collect(); // trigger init gc.collect(); // trigger init
class Ref {} class Ref {
inner: Ref;
}
trace("# ref = new Ref()"); trace("# ref = new Ref()");
var ref = new Ref(); var ref = new Ref();
@ -21,6 +23,6 @@ arr[0] = ref;
trace("# arr[0] = null"); trace("# arr[0] = null");
arr[0] = null; arr[0] = null;
// TODO... gc.collect(); // FIXME: should do nothing yet, but collects arr.data ?
@start export function main(): void {} @start export function main(): void {}

View File

@ -1,10 +1,10 @@
(module (module
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(type $FUNCSIG$vii (func (param i32 i32)))
(type $FUNCSIG$v (func)) (type $FUNCSIG$v (func))
(type $FUNCSIG$viiddddd (func (param i32 i32 f64 f64 f64 f64 f64))) (type $FUNCSIG$viiddddd (func (param i32 i32 f64 f64 f64 f64 f64)))
(type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$vi (func (param i32)))
(type $FUNCSIG$vii (func (param i32 i32)))
(type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32)))
(type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32)))
(type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$viii (func (param i32 i32 i32)))
@ -24,21 +24,22 @@
(data (i32.const 512) "\01\00\00\006\00\00\00\00\00\00\00\00\00\00\00 \00 \00 \00 \00 \00p\00u\00s\00h\00 \00[\00p\00r\00e\00v\00,\00 \00r\00e\00f\00,\00 \00n\00e\00x\00t\00]\00") (data (i32.const 512) "\01\00\00\006\00\00\00\00\00\00\00\00\00\00\00 \00 \00 \00 \00 \00p\00u\00s\00h\00 \00[\00p\00r\00e\00v\00,\00 \00r\00e\00f\00,\00 \00n\00e\00x\00t\00]\00")
(data (i32.const 584) "\01\00\00\00\"\00\00\00\00\00\00\00\00\00\00\00i\00t\00c\00m\00~\00s\00t\00a\00t\00e\00 \00=\00 \00M\00A\00R\00K\00") (data (i32.const 584) "\01\00\00\00\"\00\00\00\00\00\00\00\00\00\00\00i\00t\00c\00m\00~\00s\00t\00a\00t\00e\00 \00=\00 \00M\00A\00R\00K\00")
(data (i32.const 640) "\01\00\00\00,\00\00\00\00\00\00\00\00\00\00\00i\00t\00c\00m\00~\00s\00t\00e\00p\00/\00M\00A\00R\00K\00 \00i\00t\00e\00r\00a\00t\00e\00") (data (i32.const 640) "\01\00\00\00,\00\00\00\00\00\00\00\00\00\00\00i\00t\00c\00m\00~\00s\00t\00e\00p\00/\00M\00A\00R\00K\00 \00i\00t\00e\00r\00a\00t\00e\00")
(data (i32.const 704) "\01\00\00\00*\00\00\00\00\00\00\00\00\00\00\00i\00t\00c\00m\00~\00s\00t\00e\00p\00/\00M\00A\00R\00K\00 \00f\00i\00n\00i\00s\00h\00") (data (i32.const 704) "\01\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00 \00 \00 \00 \00 \00i\00t\00e\00r\00")
(data (i32.const 768) "\01\00\00\00$\00\00\00\00\00\00\00\00\00\00\00i\00t\00c\00m\00~\00s\00t\00a\00t\00e\00 \00=\00 \00S\00W\00E\00E\00P\00") (data (i32.const 744) "\01\00\00\00*\00\00\00\00\00\00\00\00\00\00\00i\00t\00c\00m\00~\00s\00t\00e\00p\00/\00M\00A\00R\00K\00 \00f\00i\00n\00i\00s\00h\00")
(data (i32.const 824) "\01\00\00\00(\00\00\00\00\00\00\00\00\00\00\00i\00t\00c\00m\00~\00s\00t\00e\00p\00/\00S\00W\00E\00E\00P\00 \00f\00r\00e\00e\00") (data (i32.const 808) "\01\00\00\00$\00\00\00\00\00\00\00\00\00\00\00i\00t\00c\00m\00~\00s\00t\00a\00t\00e\00 \00=\00 \00S\00W\00E\00E\00P\00")
(data (i32.const 880) "\01\00\00\00,\00\00\00\00\00\00\00\00\00\00\00i\00t\00c\00m\00~\00s\00t\00e\00p\00/\00S\00W\00E\00E\00P\00 \00f\00i\00n\00i\00s\00h\00") (data (i32.const 864) "\01\00\00\00(\00\00\00\00\00\00\00\00\00\00\00i\00t\00c\00m\00~\00s\00t\00e\00p\00/\00S\00W\00E\00E\00P\00 \00f\00r\00e\00e\00")
(data (i32.const 944) "\01\00\00\00\"\00\00\00\00\00\00\00\00\00\00\00#\00 \00r\00e\00f\00 \00=\00 \00n\00e\00w\00 \00R\00e\00f\00(\00)\00") (data (i32.const 920) "\01\00\00\00,\00\00\00\00\00\00\00\00\00\00\00i\00t\00c\00m\00~\00s\00t\00e\00p\00/\00S\00W\00E\00E\00P\00 \00f\00i\00n\00i\00s\00h\00")
(data (i32.const 1000) "\01\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") (data (i32.const 984) "\01\00\00\00\"\00\00\00\00\00\00\00\00\00\00\00#\00 \00r\00e\00f\00 \00=\00 \00n\00e\00w\00 \00R\00e\00f\00(\00)\00")
(data (i32.const 1048) "\01\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00i\00t\00c\00m\00.\00r\00e\00g\00i\00s\00t\00e\00r\00") (data (i32.const 1040) "\01\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00")
(data (i32.const 1096) "\01\00\00\00(\00\00\00\00\00\00\00\00\00\00\00#\00 \00a\00r\00r\00 \00=\00 \00n\00e\00w\00 \00A\00r\00r\00a\00y\00(\001\00)\00") (data (i32.const 1088) "\01\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00i\00t\00c\00m\00.\00r\00e\00g\00i\00s\00t\00e\00r\00")
(data (i32.const 1152) "\01\00\00\00&\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") (data (i32.const 1136) "\01\00\00\00(\00\00\00\00\00\00\00\00\00\00\00#\00 \00a\00r\00r\00 \00=\00 \00n\00e\00w\00 \00A\00r\00r\00a\00y\00(\001\00)\00")
(data (i32.const 1208) "\01\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00i\00t\00c\00m\00.\00l\00i\00n\00k\00") (data (i32.const 1192) "\01\00\00\00&\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00")
(data (i32.const 1248) "\01\00\00\00\1c\00\00\00\00\00\00\00\00\00\00\00#\00 \00a\00r\00r\00[\000\00]\00 \00=\00 \00r\00e\00f\00") (data (i32.const 1248) "\01\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00i\00t\00c\00m\00.\00l\00i\00n\00k\00")
(data (i32.const 1296) "\01\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") (data (i32.const 1288) "\01\00\00\00\1c\00\00\00\00\00\00\00\00\00\00\00#\00 \00a\00r\00r\00[\000\00]\00 \00=\00 \00r\00e\00f\00")
(data (i32.const 1344) "\01\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00#\00 \00a\00r\00r\00[\000\00]\00 \00=\00 \00n\00u\00l\00l\00") (data (i32.const 1336) "\01\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00")
(table $0 3 funcref) (data (i32.const 1384) "\01\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00#\00 \00a\00r\00r\00[\000\00]\00 \00=\00 \00n\00u\00l\00l\00")
(elem (i32.const 0) $null $~lib/collector/itcm/step~anonymous|0 $~lib/collector/itcm/step~anonymous|1) (table $0 10 funcref)
(elem (i32.const 0) $null $~lib/string/String~iterate $~lib/collector/itcm/step~anonymous|0 $~lib/collector/itcm/step~anonymous|1 $~lib/collector/itcm/step~anonymous|2 $gc/itcm/trace/Ref~iterate $~lib/arraybuffer/ArrayBuffer~iterate $~lib/runtime/ArrayBufferView~iterate $~lib/array/Array<gc/itcm/trace/Ref | null>~iterate $~lib/array/Array<gc/itcm/trace/Ref | null>~iterate)
(global $gc/itcm/trace/GC_TRACE i32 (i32.const 1)) (global $gc/itcm/trace/GC_TRACE i32 (i32.const 1))
(global $~lib/runtime/HEADER_SIZE i32 (i32.const 16)) (global $~lib/runtime/HEADER_SIZE i32 (i32.const 16))
(global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) (global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049))
@ -50,19 +51,22 @@
(global $~lib/gc/gc.implemented i32 (i32.const 1)) (global $~lib/gc/gc.implemented i32 (i32.const 1))
(global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0))
(global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) (global $~lib/allocator/arena/offset (mut i32) (i32.const 0))
(global $~lib/argc (mut i32) (i32.const 0))
(global $~lib/ASC_NO_ASSERT i32 (i32.const 0)) (global $~lib/ASC_NO_ASSERT i32 (i32.const 0))
(global $gc/itcm/trace/ref (mut i32) (i32.const 0)) (global $gc/itcm/trace/ref (mut i32) (i32.const 0))
(global $~lib/runtime/MAX_BYTELENGTH i32 (i32.const 1073741808)) (global $~lib/runtime/MAX_BYTELENGTH i32 (i32.const 1073741808))
(global $~lib/argc (mut i32) (i32.const 0))
(global $gc/itcm/trace/arr (mut i32) (i32.const 0)) (global $gc/itcm/trace/arr (mut i32) (i32.const 0))
(global $~lib/started (mut i32) (i32.const 0)) (global $~lib/started (mut i32) (i32.const 0))
(global $~lib/memory/HEAP_BASE i32 (i32.const 1392)) (global $~lib/memory/HEAP_BASE i32 (i32.const 1432))
(global $~lib/capabilities i32 (i32.const 2)) (global $~lib/capabilities i32 (i32.const 2))
(export "memory" (memory $0)) (export "memory" (memory $0))
(export "table" (table $0)) (export "table" (table $0))
(export "main" (func $gc/itcm/trace/main)) (export "main" (func $gc/itcm/trace/main))
(export ".capabilities" (global $~lib/capabilities)) (export ".capabilities" (global $~lib/capabilities))
(func $~lib/allocator/arena/__mem_allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/string/String~iterate (; 2 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32)
)
(func $~lib/allocator/arena/__mem_allocate (; 3 ;) (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)
@ -141,12 +145,12 @@
global.set $~lib/allocator/arena/offset global.set $~lib/allocator/arena/offset
local.get $1 local.get $1
) )
(func $~lib/memory/memory.allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/memory/memory.allocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
call $~lib/allocator/arena/__mem_allocate call $~lib/allocator/arena/__mem_allocate
return return
) )
(func $~lib/collector/itcm/ManagedObjectList#clear (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/collector/itcm/ManagedObjectList#clear (; 5 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32) (local $1 i32)
i32.const 208 i32.const 208
i32.const 1 i32.const 1
@ -170,13 +174,13 @@
local.get $0 local.get $0
i32.store offset=12 i32.store offset=12
) )
(func $~lib/collector/itcm/ManagedObject#get:color (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/collector/itcm/ManagedObject#get:color (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.load offset=8 i32.load offset=8
i32.const 3 i32.const 3
i32.and i32.and
) )
(func $~lib/collector/itcm/ManagedObject#get:next (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/collector/itcm/ManagedObject#get:next (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.load offset=8 i32.load offset=8
i32.const 3 i32.const 3
@ -184,7 +188,7 @@
i32.xor i32.xor
i32.and i32.and
) )
(func $~lib/collector/itcm/ManagedObject#set:next (; 7 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/collector/itcm/ManagedObject#set:next (; 8 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
local.get $0 local.get $0
local.get $1 local.get $1
local.get $0 local.get $0
@ -194,7 +198,7 @@
i32.or i32.or
i32.store offset=8 i32.store offset=8
) )
(func $~lib/collector/itcm/ManagedObject#unlink (; 8 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/collector/itcm/ManagedObject#unlink (; 9 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
@ -240,7 +244,7 @@
local.get $1 local.get $1
call $~lib/collector/itcm/ManagedObject#set:next call $~lib/collector/itcm/ManagedObject#set:next
) )
(func $~lib/collector/itcm/ManagedObjectList#push (; 9 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/collector/itcm/ManagedObjectList#push (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
local.get $0 local.get $0
@ -288,7 +292,7 @@
local.get $1 local.get $1
i32.store offset=12 i32.store offset=12
) )
(func $~lib/collector/itcm/ManagedObject#makeGray (; 10 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/collector/itcm/ManagedObject#makeGray (; 11 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32) (local $1 i32)
i32.const 400 i32.const 400
i32.const 1 i32.const 1
@ -329,7 +333,7 @@
i32.or i32.or
i32.store offset=8 i32.store offset=8
) )
(func $~lib/collector/itcm/step~anonymous|0 (; 11 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/collector/itcm/step~anonymous|0 (; 12 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
block $~lib/collector/itcm/refToObj|inlined.0 (result i32) block $~lib/collector/itcm/refToObj|inlined.0 (result i32)
@ -349,7 +353,7 @@
call $~lib/collector/itcm/ManagedObject#makeGray call $~lib/collector/itcm/ManagedObject#makeGray
end end
) )
(func $~lib/collector/itcm/ManagedObject#set:color (; 12 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/collector/itcm/ManagedObject#set:color (; 13 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
local.get $0 local.get $0
local.get $0 local.get $0
i32.load offset=8 i32.load offset=8
@ -361,13 +365,18 @@
i32.or i32.or
i32.store offset=8 i32.store offset=8
) )
(func $~lib/collector/itcm/ManagedObject#get:hookFn (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.load
)
(func $~lib/collector/itcm/step~anonymous|1 (; 14 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/collector/itcm/step~anonymous|1 (; 14 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
i32.const 720
i32.const 1
local.get $0
f64.convert_i32_u
f64.const 0
f64.const 0
f64.const 0
f64.const 0
call $~lib/env/trace
block $~lib/collector/itcm/refToObj|inlined.1 (result i32) block $~lib/collector/itcm/refToObj|inlined.1 (result i32)
local.get $0 local.get $0
local.set $1 local.set $1
@ -385,14 +394,34 @@
call $~lib/collector/itcm/ManagedObject#makeGray call $~lib/collector/itcm/ManagedObject#makeGray
end end
) )
(func $~lib/allocator/arena/__mem_free (; 15 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/collector/itcm/step~anonymous|2 (; 15 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
(local $2 i32)
block $~lib/collector/itcm/refToObj|inlined.2 (result i32)
local.get $0
local.set $1
local.get $1
global.get $~lib/runtime/HEADER_SIZE
i32.sub
end
local.set $2
local.get $2
call $~lib/collector/itcm/ManagedObject#get:color
global.get $~lib/collector/itcm/white
i32.eq
if
local.get $2
call $~lib/collector/itcm/ManagedObject#makeGray
end
)
(func $~lib/allocator/arena/__mem_free (; 16 ;) (type $FUNCSIG$vi) (param $0 i32)
nop nop
) )
(func $~lib/memory/memory.free (; 16 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/memory/memory.free (; 17 ;) (type $FUNCSIG$vi) (param $0 i32)
local.get $0 local.get $0
call $~lib/allocator/arena/__mem_free call $~lib/allocator/arena/__mem_free
) )
(func $~lib/collector/itcm/step (; 17 ;) (type $FUNCSIG$v) (func $~lib/collector/itcm/step (; 18 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
block $break|0 block $break|0
@ -504,7 +533,7 @@
f64.const 0 f64.const 0
f64.const 0 f64.const 0
call $~lib/env/trace call $~lib/env/trace
i32.const 1 i32.const 2
call $~iterateRoots call $~iterateRoots
i32.const 2 i32.const 2
global.set $~lib/collector/itcm/state global.set $~lib/collector/itcm/state
@ -550,8 +579,6 @@
global.get $~lib/collector/itcm/white global.get $~lib/collector/itcm/white
i32.eqz i32.eqz
call $~lib/collector/itcm/ManagedObject#set:color call $~lib/collector/itcm/ManagedObject#set:color
i32.const 1
global.set $~lib/argc
block $~lib/collector/itcm/objToRef|inlined.11 (result i32) block $~lib/collector/itcm/objToRef|inlined.11 (result i32)
local.get $0 local.get $0
local.set $1 local.set $1
@ -559,11 +586,12 @@
global.get $~lib/runtime/HEADER_SIZE global.get $~lib/runtime/HEADER_SIZE
i32.add i32.add
end end
i32.const 3
local.get $0 local.get $0
call $~lib/collector/itcm/ManagedObject#get:hookFn i32.load
call_indirect (type $FUNCSIG$vi) call_indirect (type $FUNCSIG$vii)
else else
i32.const 720 i32.const 760
i32.const 0 i32.const 0
f64.const 0 f64.const 0
f64.const 0 f64.const 0
@ -571,7 +599,7 @@
f64.const 0 f64.const 0
f64.const 0 f64.const 0
call $~lib/env/trace call $~lib/env/trace
i32.const 2 i32.const 4
call $~iterateRoots call $~iterateRoots
global.get $~lib/collector/itcm/iter global.get $~lib/collector/itcm/iter
call $~lib/collector/itcm/ManagedObject#get:next call $~lib/collector/itcm/ManagedObject#get:next
@ -594,7 +622,7 @@
global.set $~lib/collector/itcm/iter global.set $~lib/collector/itcm/iter
i32.const 3 i32.const 3
global.set $~lib/collector/itcm/state global.set $~lib/collector/itcm/state
i32.const 784 i32.const 824
i32.const 0 i32.const 0
f64.const 0 f64.const 0
f64.const 0 f64.const 0
@ -616,7 +644,7 @@
global.get $~lib/collector/itcm/toSpace global.get $~lib/collector/itcm/toSpace
i32.ne i32.ne
if if
i32.const 840 i32.const 880
i32.const 1 i32.const 1
block $~lib/collector/itcm/objToRef|inlined.12 (result i32) block $~lib/collector/itcm/objToRef|inlined.12 (result i32)
local.get $0 local.get $0
@ -642,7 +670,7 @@
call $~lib/memory/memory.free call $~lib/memory/memory.free
end end
else else
i32.const 896 i32.const 936
i32.const 0 i32.const 0
f64.const 0 f64.const 0
f64.const 0 f64.const 0
@ -669,7 +697,7 @@
unreachable unreachable
end end
) )
(func $~lib/collector/itcm/__ref_collect (; 18 ;) (type $FUNCSIG$v) (func $~lib/collector/itcm/__ref_collect (; 19 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
i32.const 72 i32.const 72
i32.const 0 i32.const 0
@ -709,10 +737,10 @@
end end
end end
) )
(func $~lib/gc/gc.collect (; 19 ;) (type $FUNCSIG$v) (func $~lib/gc/gc.collect (; 20 ;) (type $FUNCSIG$v)
call $~lib/collector/itcm/__ref_collect call $~lib/collector/itcm/__ref_collect
) )
(func $~lib/runtime/ADJUSTOBLOCK (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/runtime/ADJUSTOBLOCK (; 21 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
i32.const 1 i32.const 1
i32.const 32 i32.const 32
local.get $0 local.get $0
@ -724,7 +752,7 @@
i32.sub i32.sub
i32.shl i32.shl
) )
(func $~lib/runtime/allocate (; 21 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/runtime/allocate (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
local.get $0 local.get $0
call $~lib/runtime/ADJUSTOBLOCK call $~lib/runtime/ADJUSTOBLOCK
@ -746,10 +774,24 @@
global.get $~lib/runtime/HEADER_SIZE global.get $~lib/runtime/HEADER_SIZE
i32.add i32.add
) )
(func $~lib/collector/itcm/__ref_register (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) (func $gc/itcm/trace/Ref~iterate (; 23 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32)
local.get $0
i32.load
local.tee $2
if
local.get $2
local.get $1
call_indirect (type $FUNCSIG$vi)
local.get $2
local.get $1
call $gc/itcm/trace/Ref~iterate
end
)
(func $~lib/collector/itcm/__ref_register (; 24 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
i32.const 1064 i32.const 1104
i32.const 1 i32.const 1
local.get $0 local.get $0
f64.convert_i32_u f64.convert_i32_u
@ -759,7 +801,7 @@
f64.const 0 f64.const 0
call $~lib/env/trace call $~lib/env/trace
call $~lib/collector/itcm/step call $~lib/collector/itcm/step
block $~lib/collector/itcm/refToObj|inlined.2 (result i32) block $~lib/collector/itcm/refToObj|inlined.3 (result i32)
local.get $0 local.get $0
local.set $1 local.set $1
local.get $1 local.get $1
@ -774,7 +816,7 @@
local.get $2 local.get $2
call $~lib/collector/itcm/ManagedObjectList#push call $~lib/collector/itcm/ManagedObjectList#push
) )
(func $~lib/runtime/register (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/runtime/register (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
local.get $0 local.get $0
global.get $~lib/memory/HEAP_BASE global.get $~lib/memory/HEAP_BASE
@ -782,7 +824,7 @@
i32.eqz i32.eqz
if if
i32.const 0 i32.const 0
i32.const 1016 i32.const 1056
i32.const 149 i32.const 149
i32.const 4 i32.const 4
call $~lib/env/abort call $~lib/env/abort
@ -799,7 +841,7 @@
i32.eqz i32.eqz
if if
i32.const 0 i32.const 0
i32.const 1016 i32.const 1056
i32.const 151 i32.const 151
i32.const 4 i32.const 4
call $~lib/env/abort call $~lib/env/abort
@ -812,19 +854,22 @@
call $~lib/collector/itcm/__ref_register call $~lib/collector/itcm/__ref_register
local.get $0 local.get $0
) )
(func $gc/itcm/trace/Ref#constructor (; 24 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $gc/itcm/trace/Ref#constructor (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.eqz i32.eqz
if if
i32.const 0 i32.const 4
call $~lib/runtime/allocate call $~lib/runtime/allocate
i32.const 2 i32.const 5
call $~lib/runtime/register call $~lib/runtime/register
local.set $0 local.set $0
end end
local.get $0 local.get $0
i32.const 0
i32.store
local.get $0
) )
(func $~lib/memory/memory.fill (; 25 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/memory/memory.fill (; 27 ;) (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)
@ -1081,7 +1126,10 @@
end end
end end
) )
(func $~lib/arraybuffer/ArrayBuffer#constructor (; 26 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/arraybuffer/ArrayBuffer~iterate (; 28 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32)
)
(func $~lib/arraybuffer/ArrayBuffer#constructor (; 29 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
local.get $1 local.get $1
@ -1089,7 +1137,7 @@
i32.gt_u i32.gt_u
if if
i32.const 0 i32.const 0
i32.const 1168 i32.const 1208
i32.const 25 i32.const 25
i32.const 43 i32.const 43
call $~lib/env/abort call $~lib/env/abort
@ -1110,14 +1158,28 @@
local.get $3 local.get $3
local.set $2 local.set $2
local.get $2 local.get $2
i32.const 3 i32.const 6
call $~lib/runtime/register call $~lib/runtime/register
end end
) )
(func $~lib/collector/itcm/__ref_link (; 27 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/runtime/ArrayBufferView~iterate (; 30 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32)
local.get $0
i32.load
local.tee $2
if
local.get $2
local.get $1
call_indirect (type $FUNCSIG$vi)
local.get $2
local.get $1
call $~lib/arraybuffer/ArrayBuffer~iterate
end
)
(func $~lib/collector/itcm/__ref_link (; 31 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
i32.const 1224 i32.const 1264
i32.const 2 i32.const 2
local.get $0 local.get $0
f64.convert_i32_u f64.convert_i32_u
@ -1127,7 +1189,7 @@
f64.const 0 f64.const 0
f64.const 0 f64.const 0
call $~lib/env/trace call $~lib/env/trace
block $~lib/collector/itcm/refToObj|inlined.3 (result i32) block $~lib/collector/itcm/refToObj|inlined.4 (result i32)
local.get $1 local.get $1
local.set $2 local.set $2
local.get $2 local.get $2
@ -1142,7 +1204,7 @@
i32.eq i32.eq
local.tee $2 local.tee $2
if (result i32) if (result i32)
block $~lib/collector/itcm/refToObj|inlined.5 (result i32) block $~lib/collector/itcm/refToObj|inlined.6 (result i32)
local.get $0 local.get $0
local.set $2 local.set $2
local.get $2 local.get $2
@ -1160,7 +1222,7 @@
call $~lib/collector/itcm/ManagedObject#makeGray call $~lib/collector/itcm/ManagedObject#makeGray
end end
) )
(func $~lib/runtime/ArrayBufferView#constructor (; 28 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/runtime/ArrayBufferView#constructor (; 32 ;) (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)
@ -1172,7 +1234,7 @@
i32.gt_u i32.gt_u
if if
i32.const 0 i32.const 0
i32.const 1016 i32.const 1056
i32.const 232 i32.const 232
i32.const 57 i32.const 57
call $~lib/env/abort call $~lib/env/abort
@ -1191,7 +1253,7 @@
if if
i32.const 12 i32.const 12
call $~lib/runtime/allocate call $~lib/runtime/allocate
i32.const 4 i32.const 7
call $~lib/runtime/register call $~lib/runtime/register
local.set $0 local.set $0
end end
@ -1231,14 +1293,63 @@
i32.store offset=8 i32.store offset=8
local.get $0 local.get $0
) )
(func $~lib/array/Array<gc/itcm/trace/Ref | null>#constructor (; 29 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/array/Array<gc/itcm/trace/Ref | null>~iterate (; 33 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
i32.const 1
global.set $~lib/argc
local.get $0
i32.load
local.get $1
call_indirect (type $FUNCSIG$vi)
local.get $0
i32.load offset=4
local.set $2
local.get $2
local.get $0
i32.load offset=8
i32.add
local.set $3
block $break|0
loop $continue|0
local.get $2
local.get $3
i32.lt_u
if
block
local.get $2
i32.load
local.set $4
local.get $4
if
i32.const 1
global.set $~lib/argc
local.get $4
local.get $1
call_indirect (type $FUNCSIG$vi)
local.get $4
local.get $1
call $gc/itcm/trace/Ref~iterate
end
local.get $2
i32.const 4
i32.add
local.set $2
end
br $continue|0
end
end
end
)
(func $~lib/array/Array<gc/itcm/trace/Ref | null>#constructor (; 34 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
if (result i32) if (result i32)
local.get $0 local.get $0
else else
i32.const 16 i32.const 16
call $~lib/runtime/allocate call $~lib/runtime/allocate
i32.const 5 i32.const 8
call $~lib/runtime/register call $~lib/runtime/register
end end
local.get $1 local.get $1
@ -1253,7 +1364,7 @@
i32.store offset=12 i32.store offset=12
local.get $0 local.get $0
) )
(func $~lib/util/memory/memcpy (; 30 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/util/memory/memcpy (; 35 ;) (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)
@ -2454,7 +2565,7 @@
i32.store8 i32.store8
end end
) )
(func $~lib/memory/memory.copy (; 31 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/memory/memory.copy (; 36 ;) (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)
@ -2685,7 +2796,7 @@
end end
end end
) )
(func $~lib/runtime/reallocate (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/runtime/reallocate (; 37 ;) (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)
@ -2755,7 +2866,7 @@
i32.eqz i32.eqz
if if
i32.const 0 i32.const 0
i32.const 1016 i32.const 1056
i32.const 113 i32.const 113
i32.const 8 i32.const 8
call $~lib/env/abort call $~lib/env/abort
@ -2789,7 +2900,7 @@
i32.store offset=4 i32.store offset=4
local.get $0 local.get $0
) )
(func $~lib/array/ensureCapacity (; 33 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/array/ensureCapacity (; 38 ;) (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)
@ -2810,7 +2921,7 @@
i32.gt_u i32.gt_u
if if
i32.const 0 i32.const 0
i32.const 1312 i32.const 1352
i32.const 13 i32.const 13
i32.const 64 i32.const 64
call $~lib/env/abort call $~lib/env/abort
@ -2864,7 +2975,7 @@
i32.store offset=8 i32.store offset=8
end end
) )
(func $~lib/array/Array<gc/itcm/trace/Ref | null>#__unchecked_set (; 34 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/array/Array<gc/itcm/trace/Ref | null>#__unchecked_set (; 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)
local.get $0 local.get $0
@ -2894,7 +3005,7 @@
end end
end end
) )
(func $~lib/array/Array<gc/itcm/trace/Ref | null>#__set (; 35 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/array/Array<gc/itcm/trace/Ref | null>#__set (; 40 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32) (local $3 i32)
local.get $0 local.get $0
i32.load offset=12 i32.load offset=12
@ -2920,7 +3031,7 @@
i32.store offset=12 i32.store offset=12
end end
) )
(func $start:gc/itcm/trace (; 36 ;) (type $FUNCSIG$v) (func $start:gc/itcm/trace (; 41 ;) (type $FUNCSIG$v)
global.get $~lib/runtime/HEADER_SIZE global.get $~lib/runtime/HEADER_SIZE
i32.const 16 i32.const 16
i32.eq i32.eq
@ -2954,7 +3065,7 @@
global.get $~lib/allocator/arena/startOffset global.get $~lib/allocator/arena/startOffset
global.set $~lib/allocator/arena/offset global.set $~lib/allocator/arena/offset
call $~lib/gc/gc.collect call $~lib/gc/gc.collect
i32.const 960 i32.const 1000
i32.const 0 i32.const 0
f64.const 0 f64.const 0
f64.const 0 f64.const 0
@ -2965,7 +3076,7 @@
i32.const 0 i32.const 0
call $gc/itcm/trace/Ref#constructor call $gc/itcm/trace/Ref#constructor
global.set $gc/itcm/trace/ref global.set $gc/itcm/trace/ref
i32.const 1112 i32.const 1152
i32.const 0 i32.const 0
f64.const 0 f64.const 0
f64.const 0 f64.const 0
@ -2977,7 +3088,7 @@
i32.const 1 i32.const 1
call $~lib/array/Array<gc/itcm/trace/Ref | null>#constructor call $~lib/array/Array<gc/itcm/trace/Ref | null>#constructor
global.set $gc/itcm/trace/arr global.set $gc/itcm/trace/arr
i32.const 1264 i32.const 1304
i32.const 0 i32.const 0
f64.const 0 f64.const 0
f64.const 0 f64.const 0
@ -2989,7 +3100,7 @@
i32.const 0 i32.const 0
global.get $gc/itcm/trace/ref global.get $gc/itcm/trace/ref
call $~lib/array/Array<gc/itcm/trace/Ref | null>#__set call $~lib/array/Array<gc/itcm/trace/Ref | null>#__set
i32.const 1360 i32.const 1400
i32.const 0 i32.const 0
f64.const 0 f64.const 0
f64.const 0 f64.const 0
@ -3001,8 +3112,9 @@
i32.const 0 i32.const 0
i32.const 0 i32.const 0
call $~lib/array/Array<gc/itcm/trace/Ref | null>#__set call $~lib/array/Array<gc/itcm/trace/Ref | null>#__set
call $~lib/gc/gc.collect
) )
(func $gc/itcm/trace/main (; 37 ;) (type $FUNCSIG$v) (func $gc/itcm/trace/main (; 42 ;) (type $FUNCSIG$v)
global.get $~lib/started global.get $~lib/started
i32.eqz i32.eqz
if if
@ -3011,12 +3123,12 @@
global.set $~lib/started global.set $~lib/started
end end
) )
(func $start (; 38 ;) (type $FUNCSIG$v) (func $start (; 43 ;) (type $FUNCSIG$v)
call $start:gc/itcm/trace call $start:gc/itcm/trace
) )
(func $null (; 39 ;) (type $FUNCSIG$v) (func $null (; 44 ;) (type $FUNCSIG$v)
) )
(func $~iterateRoots (; 40 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~iterateRoots (; 45 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32) (local $1 i32)
global.get $gc/itcm/trace/ref global.get $gc/itcm/trace/ref
local.tee $1 local.tee $1

View File

@ -1,4 +1,6 @@
(module (module
(type $FUNCSIG$vii (func (param i32 i32)))
(type $FUNCSIG$vi (func (param i32)))
(type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32)))
@ -10,21 +12,22 @@
(data (i32.const 25) "\01\02") (data (i32.const 25) "\01\02")
(data (i32.const 32) "\02\00\00\00\10") (data (i32.const 32) "\02\00\00\00\10")
(data (i32.const 48) "\18\00\00\00\18\00\00\00\03\00\00\00\03") (data (i32.const 48) "\18\00\00\00\18\00\00\00\03\00\00\00\03")
(data (i32.const 64) "\03\00\00\00(") (data (i32.const 64) "\04\00\00\00(")
(data (i32.const 80) "s\00t\00d\00/\00a\00r\00r\00a\00y\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s") (data (i32.const 80) "s\00t\00d\00/\00a\00r\00r\00a\00y\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s")
(data (i32.const 120) "\03\00\00\00\1a") (data (i32.const 120) "\04\00\00\00\1a")
(data (i32.const 136) "~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") (data (i32.const 136) "~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s")
(data (i32.const 168) "\01\00\00\00\0c") (data (i32.const 168) "\01\00\00\00\0c")
(data (i32.const 188) "\01\00\00\00\02") (data (i32.const 188) "\01\00\00\00\02")
(data (i32.const 200) "\04\00\00\00\10") (data (i32.const 200) "\05\00\00\00\10")
(data (i32.const 216) "\b8\00\00\00\b8\00\00\00\0c\00\00\00\03") (data (i32.const 216) "\b8\00\00\00\b8\00\00\00\0c\00\00\00\03")
(data (i32.const 232) "\01") (data (i32.const 232) "\01")
(data (i32.const 248) "\04\00\00\00\10") (data (i32.const 248) "\05\00\00\00\10")
(data (i32.const 264) "\f8\00\00\00\f8") (data (i32.const 264) "\f8\00\00\00\f8")
(data (i32.const 280) "\03\00\00\00\1e") (data (i32.const 280) "\04\00\00\00\1e")
(data (i32.const 296) "~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") (data (i32.const 296) "~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s")
(table $0 1 funcref) (table $0 13 funcref)
(elem (i32.const 0) $null) (elem (i32.const 0) $null $~lib/arraybuffer/ArrayBuffer~iterate $~lib/array/Array<i8>~iterate $~lib/array/Array<i8>~iterate $~lib/arraybuffer/ArrayBuffer~iterate $~lib/array/Array<i8>~iterate $~lib/array/Array<i8>~iterate $~lib/arraybuffer/ArrayBuffer~iterate $~lib/array/Array<std/array-literal/Ref>~iterate $~lib/array/Array<std/array-literal/Ref>~iterate $~lib/arraybuffer/ArrayBuffer~iterate $~lib/array/Array<std/array-literal/Ref>~iterate $~lib/array/Array<std/array-literal/Ref>~iterate)
(global $~lib/argc (mut i32) (i32.const 0))
(global $std/array-literal/emptyArrayI32 (mut i32) (i32.const 264)) (global $std/array-literal/emptyArrayI32 (mut i32) (i32.const 264))
(global $std/array-literal/i (mut i32) (i32.const 0)) (global $std/array-literal/i (mut i32) (i32.const 0))
(global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0))
@ -38,7 +41,18 @@
(export "table" (table $0)) (export "table" (table $0))
(export ".capabilities" (global $~lib/capabilities)) (export ".capabilities" (global $~lib/capabilities))
(start $start) (start $start)
(func $~lib/array/Array<i8>#__get (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/arraybuffer/ArrayBuffer~iterate (; 1 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
nop
)
(func $~lib/array/Array<i8>~iterate (; 2 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
i32.const 1
global.set $~lib/argc
local.get $0
i32.load
local.get $1
call_indirect (type $FUNCSIG$vi)
)
(func $~lib/array/Array<i8>#__get (; 3 ;) (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
@ -57,7 +71,7 @@
i32.add i32.add
i32.load8_s i32.load8_s
) )
(func $~lib/array/Array<i32>#__get (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/array/Array<i32>#__get (; 4 ;) (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
@ -80,7 +94,7 @@
i32.add i32.add
i32.load i32.load
) )
(func $~lib/allocator/arena/__mem_allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/allocator/arena/__mem_allocate (; 5 ;) (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)
@ -142,7 +156,7 @@
global.set $~lib/allocator/arena/offset global.set $~lib/allocator/arena/offset
local.get $1 local.get $1
) )
(func $~lib/runtime/allocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/runtime/allocate (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
i32.const 1 i32.const 1
i32.const 32 i32.const 32
@ -169,7 +183,7 @@
i32.const 16 i32.const 16
i32.add i32.add
) )
(func $~lib/runtime/register (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/runtime/register (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
local.get $0 local.get $0
i32.const 328 i32.const 328
@ -202,7 +216,7 @@
i32.store i32.store
local.get $0 local.get $0
) )
(func $~lib/runtime/makeArray (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/runtime/makeArray (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
i32.const 16 i32.const 16
@ -237,19 +251,56 @@
i32.store offset=12 i32.store offset=12
local.get $0 local.get $0
) )
(func $std/array-literal/Ref#constructor (; 7 ;) (type $FUNCSIG$i) (result i32) (func $std/array-literal/Ref#constructor (; 9 ;) (type $FUNCSIG$i) (result i32)
i32.const 0
call $~lib/runtime/allocate
i32.const 5
call $~lib/runtime/register
)
(func $std/array-literal/RefWithCtor#constructor (; 8 ;) (type $FUNCSIG$i) (result i32)
i32.const 0 i32.const 0
call $~lib/runtime/allocate call $~lib/runtime/allocate
i32.const 7 i32.const 7
call $~lib/runtime/register call $~lib/runtime/register
) )
(func $start:std/array-literal (; 9 ;) (type $FUNCSIG$v) (func $~lib/array/Array<std/array-literal/Ref>~iterate (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
i32.const 1
global.set $~lib/argc
local.get $0
i32.load
local.get $1
call_indirect (type $FUNCSIG$vi)
local.get $0
i32.load offset=4
local.tee $2
local.get $0
i32.load offset=8
i32.add
local.set $0
loop $continue|0
local.get $2
local.get $0
i32.lt_u
if
local.get $2
i32.load
local.set $3
i32.const 1
global.set $~lib/argc
local.get $3
local.get $1
call_indirect (type $FUNCSIG$vi)
local.get $2
i32.const 4
i32.add
local.set $2
br $continue|0
end
end
)
(func $std/array-literal/RefWithCtor#constructor (; 11 ;) (type $FUNCSIG$i) (result i32)
i32.const 0
call $~lib/runtime/allocate
i32.const 10
call $~lib/runtime/register
)
(func $start:std/array-literal (; 12 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
@ -443,7 +494,7 @@
end end
i32.const 0 i32.const 0
global.set $std/array-literal/i global.set $std/array-literal/i
i32.const 4 i32.const 5
i32.const 2 i32.const 2
call $~lib/runtime/makeArray call $~lib/runtime/makeArray
local.tee $2 local.tee $2
@ -519,7 +570,7 @@
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
end end
i32.const 6 i32.const 8
i32.const 2 i32.const 2
call $~lib/runtime/makeArray call $~lib/runtime/makeArray
local.tee $2 local.tee $2
@ -547,7 +598,7 @@
call $~lib/env/abort call $~lib/env/abort
unreachable unreachable
end end
i32.const 8 i32.const 11
i32.const 2 i32.const 2
call $~lib/runtime/makeArray call $~lib/runtime/makeArray
local.tee $2 local.tee $2
@ -576,10 +627,10 @@
unreachable unreachable
end end
) )
(func $start (; 10 ;) (type $FUNCSIG$v) (func $start (; 13 ;) (type $FUNCSIG$v)
call $start:std/array-literal call $start:std/array-literal
) )
(func $null (; 11 ;) (type $FUNCSIG$v) (func $null (; 14 ;) (type $FUNCSIG$v)
nop nop
) )
) )

View File

@ -1,28 +1,29 @@
(module (module
(type $FUNCSIG$vii (func (param i32 i32)))
(type $FUNCSIG$vi (func (param i32)))
(type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32)))
(type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32)))
(type $FUNCSIG$vi (func (param i32)))
(type $FUNCSIG$vii (func (param i32 i32)))
(type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$viii (func (param i32 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)))
(memory $0 1) (memory $0 1)
(data (i32.const 8) "\01\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\01\02") (data (i32.const 8) "\01\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\01\02")
(data (i32.const 32) "\02\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\18\00\00\00\03\00\00\00\03\00\00\00") (data (i32.const 32) "\02\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\18\00\00\00\03\00\00\00\03\00\00\00")
(data (i32.const 64) "\03\00\00\00(\00\00\00\00\00\00\00\00\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s\00") (data (i32.const 64) "\04\00\00\00(\00\00\00\00\00\00\00\00\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s\00")
(data (i32.const 120) "\03\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") (data (i32.const 120) "\04\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00")
(data (i32.const 168) "\01\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00") (data (i32.const 168) "\01\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00")
(data (i32.const 200) "\04\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\b8\00\00\00\b8\00\00\00\0c\00\00\00\03\00\00\00") (data (i32.const 200) "\05\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\b8\00\00\00\b8\00\00\00\0c\00\00\00\03\00\00\00")
(data (i32.const 232) "\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 232) "\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00")
(data (i32.const 248) "\04\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\f8\00\00\00\f8\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 248) "\05\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\f8\00\00\00\f8\00\00\00\00\00\00\00\00\00\00\00")
(data (i32.const 280) "\03\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") (data (i32.const 280) "\04\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00")
(table $0 1 funcref) (table $0 13 funcref)
(elem (i32.const 0) $null) (elem (i32.const 0) $null $~lib/arraybuffer/ArrayBuffer~iterate $~lib/array/Array<i8>~iterate $~lib/array/Array<i8>~iterate $~lib/string/String~iterate $~lib/array/Array<i32>~iterate $~lib/array/Array<i32>~iterate $std/array-literal/Ref~iterate $~lib/array/Array<std/array-literal/Ref>~iterate $~lib/array/Array<std/array-literal/Ref>~iterate $std/array-literal/RefWithCtor~iterate $~lib/array/Array<std/array-literal/RefWithCtor>~iterate $~lib/array/Array<std/array-literal/RefWithCtor>~iterate)
(global $std/array-literal/staticArrayI8 i32 (i32.const 48))
(global $~lib/runtime/HEADER_SIZE i32 (i32.const 16)) (global $~lib/runtime/HEADER_SIZE i32 (i32.const 16))
(global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) (global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049))
(global $~lib/argc (mut i32) (i32.const 0))
(global $std/array-literal/staticArrayI8 i32 (i32.const 48))
(global $std/array-literal/staticArrayI32 i32 (i32.const 216)) (global $std/array-literal/staticArrayI32 i32 (i32.const 216))
(global $std/array-literal/emptyArrayI32 (mut i32) (i32.const 264)) (global $std/array-literal/emptyArrayI32 (mut i32) (i32.const 264))
(global $std/array-literal/i (mut i32) (i32.const 0)) (global $std/array-literal/i (mut i32) (i32.const 0))
@ -39,11 +40,25 @@
(export "table" (table $0)) (export "table" (table $0))
(export ".capabilities" (global $~lib/capabilities)) (export ".capabilities" (global $~lib/capabilities))
(start $start) (start $start)
(func $~lib/array/Array<i8>#get:length (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/arraybuffer/ArrayBuffer~iterate (; 1 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32)
)
(func $~lib/array/Array<i8>~iterate (; 2 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
i32.const 1
global.set $~lib/argc
local.get $0
i32.load
local.get $1
call_indirect (type $FUNCSIG$vi)
)
(func $~lib/array/Array<i8>#get:length (; 3 ;) (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<i8>#__unchecked_get (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/string/String~iterate (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32)
)
(func $~lib/array/Array<i8>#__unchecked_get (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
i32.load offset=4 i32.load offset=4
local.get $1 local.get $1
@ -52,7 +67,7 @@
i32.add i32.add
i32.load8_s i32.load8_s
) )
(func $~lib/array/Array<i8>#__get (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/array/Array<i8>#__get (; 6 ;) (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
@ -71,11 +86,19 @@
local.get $1 local.get $1
call $~lib/array/Array<i8>#__unchecked_get call $~lib/array/Array<i8>#__unchecked_get
) )
(func $~lib/array/Array<i32>#get:length (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/array/Array<i32>~iterate (; 7 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
i32.const 1
global.set $~lib/argc
local.get $0
i32.load
local.get $1
call_indirect (type $FUNCSIG$vi)
)
(func $~lib/array/Array<i32>#get:length (; 8 ;) (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<i32>#__unchecked_get (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/array/Array<i32>#__unchecked_get (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
i32.load offset=4 i32.load offset=4
local.get $1 local.get $1
@ -84,7 +107,7 @@
i32.add i32.add
i32.load i32.load
) )
(func $~lib/array/Array<i32>#__get (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/array/Array<i32>#__get (; 10 ;) (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
@ -103,7 +126,7 @@
local.get $1 local.get $1
call $~lib/array/Array<i32>#__unchecked_get call $~lib/array/Array<i32>#__unchecked_get
) )
(func $~lib/runtime/ADJUSTOBLOCK (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/runtime/ADJUSTOBLOCK (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
i32.const 1 i32.const 1
i32.const 32 i32.const 32
local.get $0 local.get $0
@ -115,7 +138,7 @@
i32.sub i32.sub
i32.shl i32.shl
) )
(func $~lib/allocator/arena/__mem_allocate (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/allocator/arena/__mem_allocate (; 12 ;) (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)
@ -194,12 +217,12 @@
global.set $~lib/allocator/arena/offset global.set $~lib/allocator/arena/offset
local.get $1 local.get $1
) )
(func $~lib/memory/memory.allocate (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/memory/memory.allocate (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
call $~lib/allocator/arena/__mem_allocate call $~lib/allocator/arena/__mem_allocate
return return
) )
(func $~lib/runtime/allocate (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/runtime/allocate (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
local.get $0 local.get $0
call $~lib/runtime/ADJUSTOBLOCK call $~lib/runtime/ADJUSTOBLOCK
@ -221,10 +244,10 @@
global.get $~lib/runtime/HEADER_SIZE global.get $~lib/runtime/HEADER_SIZE
i32.add i32.add
) )
(func $~lib/collector/dummy/__ref_register (; 11 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/collector/dummy/__ref_register (; 15 ;) (type $FUNCSIG$vi) (param $0 i32)
nop nop
) )
(func $~lib/runtime/register (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/runtime/register (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
local.get $0 local.get $0
global.get $~lib/memory/HEAP_BASE global.get $~lib/memory/HEAP_BASE
@ -262,13 +285,13 @@
call $~lib/collector/dummy/__ref_register call $~lib/collector/dummy/__ref_register
local.get $0 local.get $0
) )
(func $~lib/collector/dummy/__ref_link (; 13 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/collector/dummy/__ref_link (; 17 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
nop nop
) )
(func $~lib/collector/dummy/__ref_unlink (; 14 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/collector/dummy/__ref_unlink (; 18 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
nop nop
) )
(func $~lib/util/memory/memcpy (; 15 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/util/memory/memcpy (; 19 ;) (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)
@ -1469,7 +1492,7 @@
i32.store8 i32.store8
end end
) )
(func $~lib/memory/memory.copy (; 16 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/memory/memory.copy (; 20 ;) (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)
@ -1700,7 +1723,7 @@
end end
end end
) )
(func $~lib/runtime/makeArray (; 17 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (func $~lib/runtime/makeArray (; 21 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(local $4 i32) (local $4 i32)
(local $5 i32) (local $5 i32)
(local $6 i32) (local $6 i32)
@ -1764,23 +1787,9 @@
end end
local.get $4 local.get $4
) )
(func $std/array-literal/Ref#constructor (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $std/array-literal/Ref~iterate (; 22 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
local.get $0
i32.eqz
if
i32.const 0
call $~lib/runtime/allocate
i32.const 5
call $~lib/runtime/register
local.set $0
end
local.get $0
) )
(func $~lib/array/Array<std/array-literal/Ref>#get:length (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $std/array-literal/Ref#constructor (; 23 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.load offset=12
)
(func $std/array-literal/RefWithCtor#constructor (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.eqz i32.eqz
if if
@ -1792,11 +1801,122 @@
end end
local.get $0 local.get $0
) )
(func $~lib/array/Array<std/array-literal/RefWithCtor>#get:length (; 21 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/array/Array<std/array-literal/Ref>~iterate (; 24 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
i32.const 1
global.set $~lib/argc
local.get $0
i32.load
local.get $1
call_indirect (type $FUNCSIG$vi)
local.get $0
i32.load offset=4
local.set $2
local.get $2
local.get $0
i32.load offset=8
i32.add
local.set $3
block $break|0
loop $continue|0
local.get $2
local.get $3
i32.lt_u
if
block
local.get $2
i32.load
local.set $4
i32.const 1
global.set $~lib/argc
local.get $4
local.get $1
call_indirect (type $FUNCSIG$vi)
local.get $4
local.get $1
call $std/array-literal/Ref~iterate
local.get $2
i32.const 4
i32.add
local.set $2
end
br $continue|0
end
end
end
)
(func $~lib/array/Array<std/array-literal/Ref>#get:length (; 25 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.load offset=12 i32.load offset=12
) )
(func $start:std/array-literal (; 22 ;) (type $FUNCSIG$v) (func $std/array-literal/RefWithCtor~iterate (; 26 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32)
)
(func $std/array-literal/RefWithCtor#constructor (; 27 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.eqz
if
i32.const 0
call $~lib/runtime/allocate
i32.const 10
call $~lib/runtime/register
local.set $0
end
local.get $0
)
(func $~lib/array/Array<std/array-literal/RefWithCtor>~iterate (; 28 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
i32.const 1
global.set $~lib/argc
local.get $0
i32.load
local.get $1
call_indirect (type $FUNCSIG$vi)
local.get $0
i32.load offset=4
local.set $2
local.get $2
local.get $0
i32.load offset=8
i32.add
local.set $3
block $break|0
loop $continue|0
local.get $2
local.get $3
i32.lt_u
if
block
local.get $2
i32.load
local.set $4
i32.const 1
global.set $~lib/argc
local.get $4
local.get $1
call_indirect (type $FUNCSIG$vi)
local.get $4
local.get $1
call $std/array-literal/RefWithCtor~iterate
local.get $2
i32.const 4
i32.add
local.set $2
end
br $continue|0
end
end
end
)
(func $~lib/array/Array<std/array-literal/RefWithCtor>#get:length (; 29 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.load offset=12
)
(func $start:std/array-literal (; 30 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
@ -2028,7 +2148,7 @@
global.set $std/array-literal/i global.set $std/array-literal/i
block (result i32) block (result i32)
i32.const 3 i32.const 3
i32.const 4 i32.const 5
i32.const 2 i32.const 2
i32.const 0 i32.const 0
call $~lib/runtime/makeArray call $~lib/runtime/makeArray
@ -2119,7 +2239,7 @@
end end
block (result i32) block (result i32)
i32.const 3 i32.const 3
i32.const 6 i32.const 8
i32.const 2 i32.const 2
i32.const 0 i32.const 0
call $~lib/runtime/makeArray call $~lib/runtime/makeArray
@ -2178,7 +2298,7 @@
end end
block (result i32) block (result i32)
i32.const 3 i32.const 3
i32.const 8 i32.const 11
i32.const 2 i32.const 2
i32.const 0 i32.const 0
call $~lib/runtime/makeArray call $~lib/runtime/makeArray
@ -2236,9 +2356,9 @@
unreachable unreachable
end end
) )
(func $start (; 23 ;) (type $FUNCSIG$v) (func $start (; 31 ;) (type $FUNCSIG$v)
call $start:std/array-literal call $start:std/array-literal
) )
(func $null (; 24 ;) (type $FUNCSIG$v) (func $null (; 32 ;) (type $FUNCSIG$v)
) )
) )

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,11 +1,11 @@
(module (module
(type $FUNCSIG$v (func)) (type $FUNCSIG$v (func))
(type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$vii (func (param i32 i32)))
(type $FUNCSIG$vi (func (param i32)))
(type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32)))
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(type $FUNCSIG$vi (func (param i32)))
(type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$viii (func (param i32 i32 i32)))
(type $FUNCSIG$vii (func (param i32 i32)))
(type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32)))
(type $FUNCSIG$iij (func (param i32 i64) (result i32))) (type $FUNCSIG$iij (func (param i32 i64) (result i32)))
(type $FUNCSIG$ij (func (param i64) (result i32))) (type $FUNCSIG$ij (func (param i64) (result i32)))
@ -23,16 +23,17 @@
(type $FUNCSIG$vid (func (param i32 f64))) (type $FUNCSIG$vid (func (param i32 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)))
(memory $0 1) (memory $0 1)
(data (i32.const 8) "\02\00\00\00\1e") (data (i32.const 8) "\03\00\00\00\1e")
(data (i32.const 24) "~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") (data (i32.const 24) "~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s")
(data (i32.const 56) "\02\00\00\00&") (data (i32.const 56) "\03\00\00\00&")
(data (i32.const 72) "~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") (data (i32.const 72) "~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s")
(data (i32.const 112) "\02\00\00\00\14") (data (i32.const 112) "\03\00\00\00\14")
(data (i32.const 128) "s\00t\00d\00/\00m\00a\00p\00.\00t\00s") (data (i32.const 128) "s\00t\00d\00/\00m\00a\00p\00.\00t\00s")
(table $0 1 funcref) (table $0 23 funcref)
(elem (i32.const 0) $null) (elem (i32.const 0) $null $~lib/map/Map<i8,i32>~iterate $~lib/map/Map<i8,i32>~iterate $~lib/string/String~iterate $~lib/string/String~iterate $~lib/map/Map<i8,i32>~iterate $~lib/map/Map<i8,i32>~iterate $~lib/map/Map<i8,i32>~iterate $~lib/map/Map<i8,i32>~iterate $~lib/map/Map<i8,i32>~iterate $~lib/map/Map<i8,i32>~iterate $~lib/map/Map<i8,i32>~iterate $~lib/map/Map<i8,i32>~iterate $~lib/map/Map<i8,i32>~iterate $~lib/map/Map<i8,i32>~iterate $~lib/map/Map<i8,i32>~iterate $~lib/map/Map<i8,i32>~iterate $~lib/map/Map<i8,i32>~iterate $~lib/map/Map<i8,i32>~iterate $~lib/map/Map<i8,i32>~iterate $~lib/map/Map<i8,i32>~iterate $~lib/map/Map<i8,i32>~iterate $~lib/map/Map<i8,i32>~iterate)
(global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0))
(global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) (global $~lib/allocator/arena/offset (mut i32) (i32.const 0))
(global $~lib/argc (mut i32) (i32.const 0))
(global $~lib/capabilities i32 (i32.const 2)) (global $~lib/capabilities i32 (i32.const 2))
(export "memory" (memory $0)) (export "memory" (memory $0))
(export "table" (table $0)) (export "table" (table $0))
@ -127,7 +128,26 @@
i32.const 16 i32.const 16
i32.add i32.add
) )
(func $~lib/runtime/register (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/map/Map<i8,i32>~iterate (; 3 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
i32.const 1
global.set $~lib/argc
local.get $0
i32.load
local.get $1
call_indirect (type $FUNCSIG$vi)
local.get $0
i32.load offset=8
local.set $0
i32.const 1
global.set $~lib/argc
local.get $0
local.get $1
call_indirect (type $FUNCSIG$vi)
)
(func $~lib/string/String~iterate (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
nop
)
(func $~lib/runtime/register (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
local.get $0 local.get $0
i32.const 148 i32.const 148
@ -160,7 +180,7 @@
i32.store i32.store
local.get $0 local.get $0
) )
(func $~lib/memory/memory.fill (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/memory/memory.fill (; 6 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
block $~lib/util/memory/memset|inlined.0 block $~lib/util/memory/memset|inlined.0
local.get $1 local.get $1
@ -371,7 +391,7 @@
end end
end end
) )
(func $~lib/arraybuffer/ArrayBuffer#constructor (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/arraybuffer/ArrayBuffer#constructor (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
local.get $0 local.get $0
i32.const 1073741808 i32.const 1073741808
@ -390,10 +410,10 @@
local.get $0 local.get $0
call $~lib/memory/memory.fill call $~lib/memory/memory.fill
local.get $1 local.get $1
i32.const 3 i32.const 4
call $~lib/runtime/register call $~lib/runtime/register
) )
(func $~lib/map/Map<i8,i32>#clear (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/map/Map<i8,i32>#clear (; 8 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32) (local $1 i32)
i32.const 16 i32.const 16
call $~lib/arraybuffer/ArrayBuffer#constructor call $~lib/arraybuffer/ArrayBuffer#constructor
@ -428,7 +448,7 @@
i32.const 0 i32.const 0
i32.store offset=20 i32.store offset=20
) )
(func $~lib/map/Map<i8,i32>#constructor (; 7 ;) (type $FUNCSIG$i) (result i32) (func $~lib/map/Map<i8,i32>#constructor (; 9 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32) (local $0 i32)
i32.const 24 i32.const 24
call $~lib/runtime/allocate call $~lib/runtime/allocate
@ -456,7 +476,7 @@
call $~lib/map/Map<i8,i32>#clear call $~lib/map/Map<i8,i32>#clear
local.get $0 local.get $0
) )
(func $~lib/map/Map<i8,i32>#find (; 8 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/map/Map<i8,i32>#find (; 10 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
local.get $0 local.get $0
i32.load i32.load
local.get $0 local.get $0
@ -501,7 +521,7 @@
end end
i32.const 0 i32.const 0
) )
(func $~lib/map/Map<i8,i32>#has (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/map/Map<i8,i32>#has (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
local.get $1 local.get $1
local.get $1 local.get $1
@ -517,7 +537,7 @@
i32.const 0 i32.const 0
i32.ne i32.ne
) )
(func $~lib/map/Map<i8,i32>#rehash (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/map/Map<i8,i32>#rehash (; 12 ;) (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)
@ -627,7 +647,7 @@
i32.load offset=20 i32.load offset=20
i32.store offset=16 i32.store offset=16
) )
(func $~lib/map/Map<i8,i32>#set (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/map/Map<i8,i32>#set (; 13 ;) (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)
@ -726,7 +746,7 @@
i32.store i32.store
end end
) )
(func $~lib/map/Map<i8,i32>#get (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/map/Map<i8,i32>#get (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
local.get $1 local.get $1
local.get $1 local.get $1
@ -747,7 +767,7 @@
unreachable unreachable
end end
) )
(func $~lib/map/Map<i8,i32>#delete (; 13 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/map/Map<i8,i32>#delete (; 15 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
local.get $0 local.get $0
local.get $1 local.get $1
@ -814,7 +834,7 @@
call $~lib/map/Map<i8,i32>#rehash call $~lib/map/Map<i8,i32>#rehash
end end
) )
(func $std/map/testNumeric<i8,i32> (; 14 ;) (type $FUNCSIG$v) (func $std/map/testNumeric<i8,i32> (; 16 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
call $~lib/map/Map<i8,i32>#constructor call $~lib/map/Map<i8,i32>#constructor
@ -1158,11 +1178,11 @@
unreachable unreachable
end end
) )
(func $~lib/map/Map<u8,i32>#constructor (; 15 ;) (type $FUNCSIG$i) (result i32) (func $~lib/map/Map<u8,i32>#constructor (; 17 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32) (local $0 i32)
i32.const 24 i32.const 24
call $~lib/runtime/allocate call $~lib/runtime/allocate
i32.const 4 i32.const 5
call $~lib/runtime/register call $~lib/runtime/register
local.tee $0 local.tee $0
i32.const 0 i32.const 0
@ -1186,7 +1206,7 @@
call $~lib/map/Map<i8,i32>#clear call $~lib/map/Map<i8,i32>#clear
local.get $0 local.get $0
) )
(func $~lib/map/Map<u8,i32>#has (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/map/Map<u8,i32>#has (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
local.get $1 local.get $1
local.get $1 local.get $1
@ -1200,7 +1220,7 @@
i32.const 0 i32.const 0
i32.ne i32.ne
) )
(func $~lib/map/Map<u8,i32>#rehash (; 17 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/map/Map<u8,i32>#rehash (; 19 ;) (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)
@ -1310,7 +1330,7 @@
i32.load offset=20 i32.load offset=20
i32.store offset=16 i32.store offset=16
) )
(func $~lib/map/Map<u8,i32>#set (; 18 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/map/Map<u8,i32>#set (; 20 ;) (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)
@ -1407,7 +1427,7 @@
i32.store i32.store
end end
) )
(func $~lib/map/Map<u8,i32>#get (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/map/Map<u8,i32>#get (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
local.get $1 local.get $1
local.get $1 local.get $1
@ -1426,7 +1446,7 @@
unreachable unreachable
end end
) )
(func $~lib/map/Map<u8,i32>#delete (; 20 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/map/Map<u8,i32>#delete (; 22 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
local.get $0 local.get $0
local.get $1 local.get $1
@ -1491,7 +1511,7 @@
call $~lib/map/Map<u8,i32>#rehash call $~lib/map/Map<u8,i32>#rehash
end end
) )
(func $std/map/testNumeric<u8,i32> (; 21 ;) (type $FUNCSIG$v) (func $std/map/testNumeric<u8,i32> (; 23 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
call $~lib/map/Map<u8,i32>#constructor call $~lib/map/Map<u8,i32>#constructor
@ -1821,11 +1841,11 @@
unreachable unreachable
end end
) )
(func $~lib/map/Map<i16,i32>#constructor (; 22 ;) (type $FUNCSIG$i) (result i32) (func $~lib/map/Map<i16,i32>#constructor (; 24 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32) (local $0 i32)
i32.const 24 i32.const 24
call $~lib/runtime/allocate call $~lib/runtime/allocate
i32.const 5 i32.const 7
call $~lib/runtime/register call $~lib/runtime/register
local.tee $0 local.tee $0
i32.const 0 i32.const 0
@ -1849,7 +1869,7 @@
call $~lib/map/Map<i8,i32>#clear call $~lib/map/Map<i8,i32>#clear
local.get $0 local.get $0
) )
(func $~lib/map/Map<i16,i32>#find (; 23 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/map/Map<i16,i32>#find (; 25 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
local.get $0 local.get $0
i32.load i32.load
local.get $0 local.get $0
@ -1894,7 +1914,7 @@
end end
i32.const 0 i32.const 0
) )
(func $~lib/map/Map<i16,i32>#has (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/map/Map<i16,i32>#has (; 26 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
local.get $1 local.get $1
local.get $1 local.get $1
@ -1919,7 +1939,7 @@
i32.const 0 i32.const 0
i32.ne i32.ne
) )
(func $~lib/map/Map<i16,i32>#rehash (; 25 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/map/Map<i16,i32>#rehash (; 27 ;) (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)
@ -2038,7 +2058,7 @@
i32.load offset=20 i32.load offset=20
i32.store offset=16 i32.store offset=16
) )
(func $~lib/map/Map<i16,i32>#set (; 26 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/map/Map<i16,i32>#set (; 28 ;) (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)
@ -2146,7 +2166,7 @@
i32.store i32.store
end end
) )
(func $~lib/map/Map<i16,i32>#get (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/map/Map<i16,i32>#get (; 29 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
local.get $1 local.get $1
local.get $1 local.get $1
@ -2176,7 +2196,7 @@
unreachable unreachable
end end
) )
(func $~lib/map/Map<i16,i32>#delete (; 28 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/map/Map<i16,i32>#delete (; 30 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
local.get $0 local.get $0
local.get $1 local.get $1
@ -2252,7 +2272,7 @@
call $~lib/map/Map<i16,i32>#rehash call $~lib/map/Map<i16,i32>#rehash
end end
) )
(func $std/map/testNumeric<i16,i32> (; 29 ;) (type $FUNCSIG$v) (func $std/map/testNumeric<i16,i32> (; 31 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
call $~lib/map/Map<i16,i32>#constructor call $~lib/map/Map<i16,i32>#constructor
@ -2596,11 +2616,11 @@
unreachable unreachable
end end
) )
(func $~lib/map/Map<u16,i32>#constructor (; 30 ;) (type $FUNCSIG$i) (result i32) (func $~lib/map/Map<u16,i32>#constructor (; 32 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32) (local $0 i32)
i32.const 24 i32.const 24
call $~lib/runtime/allocate call $~lib/runtime/allocate
i32.const 6 i32.const 9
call $~lib/runtime/register call $~lib/runtime/register
local.tee $0 local.tee $0
i32.const 0 i32.const 0
@ -2624,7 +2644,7 @@
call $~lib/map/Map<i8,i32>#clear call $~lib/map/Map<i8,i32>#clear
local.get $0 local.get $0
) )
(func $~lib/map/Map<u16,i32>#has (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/map/Map<u16,i32>#has (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
local.get $1 local.get $1
local.get $1 local.get $1
@ -2647,7 +2667,7 @@
i32.const 0 i32.const 0
i32.ne i32.ne
) )
(func $~lib/map/Map<u16,i32>#rehash (; 32 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/map/Map<u16,i32>#rehash (; 34 ;) (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)
@ -2766,7 +2786,7 @@
i32.load offset=20 i32.load offset=20
i32.store offset=16 i32.store offset=16
) )
(func $~lib/map/Map<u16,i32>#set (; 33 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/map/Map<u16,i32>#set (; 35 ;) (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)
@ -2872,7 +2892,7 @@
i32.store i32.store
end end
) )
(func $~lib/map/Map<u16,i32>#get (; 34 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/map/Map<u16,i32>#get (; 36 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
local.get $1 local.get $1
local.get $1 local.get $1
@ -2900,7 +2920,7 @@
unreachable unreachable
end end
) )
(func $~lib/map/Map<u16,i32>#delete (; 35 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/map/Map<u16,i32>#delete (; 37 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
local.get $0 local.get $0
local.get $1 local.get $1
@ -2974,7 +2994,7 @@
call $~lib/map/Map<u16,i32>#rehash call $~lib/map/Map<u16,i32>#rehash
end end
) )
(func $std/map/testNumeric<u16,i32> (; 36 ;) (type $FUNCSIG$v) (func $std/map/testNumeric<u16,i32> (; 38 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
call $~lib/map/Map<u16,i32>#constructor call $~lib/map/Map<u16,i32>#constructor
@ -3304,11 +3324,11 @@
unreachable unreachable
end end
) )
(func $~lib/map/Map<i32,i32>#constructor (; 37 ;) (type $FUNCSIG$i) (result i32) (func $~lib/map/Map<i32,i32>#constructor (; 39 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32) (local $0 i32)
i32.const 24 i32.const 24
call $~lib/runtime/allocate call $~lib/runtime/allocate
i32.const 7 i32.const 11
call $~lib/runtime/register call $~lib/runtime/register
local.tee $0 local.tee $0
i32.const 0 i32.const 0
@ -3332,7 +3352,7 @@
call $~lib/map/Map<i8,i32>#clear call $~lib/map/Map<i8,i32>#clear
local.get $0 local.get $0
) )
(func $~lib/util/hash/hash32 (; 38 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/util/hash/hash32 (; 40 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.const 255 i32.const 255
i32.and i32.and
@ -3363,7 +3383,7 @@
i32.const 16777619 i32.const 16777619
i32.mul i32.mul
) )
(func $~lib/map/Map<i32,i32>#find (; 39 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/map/Map<i32,i32>#find (; 41 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
local.get $0 local.get $0
i32.load i32.load
local.get $0 local.get $0
@ -3406,7 +3426,7 @@
end end
i32.const 0 i32.const 0
) )
(func $~lib/map/Map<i32,i32>#has (; 40 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/map/Map<i32,i32>#has (; 42 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
local.get $1 local.get $1
local.get $1 local.get $1
@ -3415,7 +3435,7 @@
i32.const 0 i32.const 0
i32.ne i32.ne
) )
(func $~lib/map/Map<i32,i32>#rehash (; 41 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/map/Map<i32,i32>#rehash (; 43 ;) (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)
@ -3522,7 +3542,7 @@
i32.load offset=20 i32.load offset=20
i32.store offset=16 i32.store offset=16
) )
(func $~lib/map/Map<i32,i32>#set (; 42 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/map/Map<i32,i32>#set (; 44 ;) (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)
@ -3612,7 +3632,7 @@
i32.store i32.store
end end
) )
(func $~lib/map/Map<i32,i32>#get (; 43 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/map/Map<i32,i32>#get (; 45 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
local.get $1 local.get $1
local.get $1 local.get $1
@ -3626,7 +3646,7 @@
unreachable unreachable
end end
) )
(func $~lib/map/Map<i32,i32>#delete (; 44 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/map/Map<i32,i32>#delete (; 46 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
local.get $0 local.get $0
local.get $1 local.get $1
@ -3686,7 +3706,7 @@
call $~lib/map/Map<i32,i32>#rehash call $~lib/map/Map<i32,i32>#rehash
end end
) )
(func $std/map/testNumeric<i32,i32> (; 45 ;) (type $FUNCSIG$v) (func $std/map/testNumeric<i32,i32> (; 47 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
call $~lib/map/Map<i32,i32>#constructor call $~lib/map/Map<i32,i32>#constructor
@ -4002,11 +4022,11 @@
unreachable unreachable
end end
) )
(func $~lib/map/Map<u32,i32>#constructor (; 46 ;) (type $FUNCSIG$i) (result i32) (func $~lib/map/Map<u32,i32>#constructor (; 48 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32) (local $0 i32)
i32.const 24 i32.const 24
call $~lib/runtime/allocate call $~lib/runtime/allocate
i32.const 8 i32.const 13
call $~lib/runtime/register call $~lib/runtime/register
local.tee $0 local.tee $0
i32.const 0 i32.const 0
@ -4030,7 +4050,7 @@
call $~lib/map/Map<i8,i32>#clear call $~lib/map/Map<i8,i32>#clear
local.get $0 local.get $0
) )
(func $std/map/testNumeric<u32,i32> (; 47 ;) (type $FUNCSIG$v) (func $std/map/testNumeric<u32,i32> (; 49 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
call $~lib/map/Map<u32,i32>#constructor call $~lib/map/Map<u32,i32>#constructor
@ -4346,7 +4366,7 @@
unreachable unreachable
end end
) )
(func $~lib/map/Map<i64,i32>#clear (; 48 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/map/Map<i64,i32>#clear (; 50 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32) (local $1 i32)
i32.const 16 i32.const 16
call $~lib/arraybuffer/ArrayBuffer#constructor call $~lib/arraybuffer/ArrayBuffer#constructor
@ -4381,11 +4401,11 @@
i32.const 0 i32.const 0
i32.store offset=20 i32.store offset=20
) )
(func $~lib/map/Map<i64,i32>#constructor (; 49 ;) (type $FUNCSIG$i) (result i32) (func $~lib/map/Map<i64,i32>#constructor (; 51 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32) (local $0 i32)
i32.const 24 i32.const 24
call $~lib/runtime/allocate call $~lib/runtime/allocate
i32.const 9 i32.const 15
call $~lib/runtime/register call $~lib/runtime/register
local.tee $0 local.tee $0
i32.const 0 i32.const 0
@ -4409,7 +4429,7 @@
call $~lib/map/Map<i64,i32>#clear call $~lib/map/Map<i64,i32>#clear
local.get $0 local.get $0
) )
(func $~lib/util/hash/hash64 (; 50 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (func $~lib/util/hash/hash64 (; 52 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32)
(local $1 i32) (local $1 i32)
local.get $0 local.get $0
i32.wrap_i64 i32.wrap_i64
@ -4475,7 +4495,7 @@
i32.const 16777619 i32.const 16777619
i32.mul i32.mul
) )
(func $~lib/map/Map<i64,i32>#find (; 51 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (func $~lib/map/Map<i64,i32>#find (; 53 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32)
local.get $0 local.get $0
i32.load i32.load
local.get $0 local.get $0
@ -4518,7 +4538,7 @@
end end
i32.const 0 i32.const 0
) )
(func $~lib/map/Map<i64,i32>#has (; 52 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (func $~lib/map/Map<i64,i32>#has (; 54 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32)
local.get $0 local.get $0
local.get $1 local.get $1
local.get $1 local.get $1
@ -4527,7 +4547,7 @@
i32.const 0 i32.const 0
i32.ne i32.ne
) )
(func $~lib/map/Map<i64,i32>#rehash (; 53 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/map/Map<i64,i32>#rehash (; 55 ;) (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)
@ -4634,7 +4654,7 @@
i32.load offset=20 i32.load offset=20
i32.store offset=16 i32.store offset=16
) )
(func $~lib/map/Map<i64,i32>#set (; 54 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (func $~lib/map/Map<i64,i32>#set (; 56 ;) (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)
@ -4724,7 +4744,7 @@
i32.store i32.store
end end
) )
(func $~lib/map/Map<i64,i32>#get (; 55 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (func $~lib/map/Map<i64,i32>#get (; 57 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32)
local.get $0 local.get $0
local.get $1 local.get $1
local.get $1 local.get $1
@ -4738,7 +4758,7 @@
unreachable unreachable
end end
) )
(func $~lib/map/Map<i64,i32>#delete (; 56 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) (func $~lib/map/Map<i64,i32>#delete (; 58 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
local.get $0 local.get $0
@ -4799,7 +4819,7 @@
call $~lib/map/Map<i64,i32>#rehash call $~lib/map/Map<i64,i32>#rehash
end end
) )
(func $std/map/testNumeric<i64,i32> (; 57 ;) (type $FUNCSIG$v) (func $std/map/testNumeric<i64,i32> (; 59 ;) (type $FUNCSIG$v)
(local $0 i64) (local $0 i64)
(local $1 i32) (local $1 i32)
call $~lib/map/Map<i64,i32>#constructor call $~lib/map/Map<i64,i32>#constructor
@ -5122,11 +5142,11 @@
unreachable unreachable
end end
) )
(func $~lib/map/Map<u64,i32>#constructor (; 58 ;) (type $FUNCSIG$i) (result i32) (func $~lib/map/Map<u64,i32>#constructor (; 60 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32) (local $0 i32)
i32.const 24 i32.const 24
call $~lib/runtime/allocate call $~lib/runtime/allocate
i32.const 10 i32.const 17
call $~lib/runtime/register call $~lib/runtime/register
local.tee $0 local.tee $0
i32.const 0 i32.const 0
@ -5150,7 +5170,7 @@
call $~lib/map/Map<i64,i32>#clear call $~lib/map/Map<i64,i32>#clear
local.get $0 local.get $0
) )
(func $std/map/testNumeric<u64,i32> (; 59 ;) (type $FUNCSIG$v) (func $std/map/testNumeric<u64,i32> (; 61 ;) (type $FUNCSIG$v)
(local $0 i64) (local $0 i64)
(local $1 i32) (local $1 i32)
call $~lib/map/Map<u64,i32>#constructor call $~lib/map/Map<u64,i32>#constructor
@ -5473,11 +5493,11 @@
unreachable unreachable
end end
) )
(func $~lib/map/Map<f32,i32>#constructor (; 60 ;) (type $FUNCSIG$i) (result i32) (func $~lib/map/Map<f32,i32>#constructor (; 62 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32) (local $0 i32)
i32.const 24 i32.const 24
call $~lib/runtime/allocate call $~lib/runtime/allocate
i32.const 11 i32.const 19
call $~lib/runtime/register call $~lib/runtime/register
local.tee $0 local.tee $0
i32.const 0 i32.const 0
@ -5501,7 +5521,7 @@
call $~lib/map/Map<i8,i32>#clear call $~lib/map/Map<i8,i32>#clear
local.get $0 local.get $0
) )
(func $~lib/map/Map<f32,i32>#find (; 61 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) (func $~lib/map/Map<f32,i32>#find (; 63 ;) (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
@ -5544,7 +5564,7 @@
end end
i32.const 0 i32.const 0
) )
(func $~lib/map/Map<f32,i32>#has (; 62 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) (func $~lib/map/Map<f32,i32>#has (; 64 ;) (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
@ -5554,7 +5574,7 @@
i32.const 0 i32.const 0
i32.ne i32.ne
) )
(func $~lib/map/Map<f32,i32>#rehash (; 63 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/map/Map<f32,i32>#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)
@ -5662,7 +5682,7 @@
i32.load offset=20 i32.load offset=20
i32.store offset=16 i32.store offset=16
) )
(func $~lib/map/Map<f32,i32>#set (; 64 ;) (type $FUNCSIG$vifi) (param $0 i32) (param $1 f32) (param $2 i32) (func $~lib/map/Map<f32,i32>#set (; 66 ;) (type $FUNCSIG$vifi) (param $0 i32) (param $1 f32) (param $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
(local $5 i32) (local $5 i32)
@ -5753,7 +5773,7 @@
i32.store i32.store
end end
) )
(func $~lib/map/Map<f32,i32>#get (; 65 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) (func $~lib/map/Map<f32,i32>#get (; 67 ;) (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
@ -5768,7 +5788,7 @@
unreachable unreachable
end end
) )
(func $~lib/map/Map<f32,i32>#delete (; 66 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32) (func $~lib/map/Map<f32,i32>#delete (; 68 ;) (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
@ -5830,7 +5850,7 @@
call $~lib/map/Map<f32,i32>#rehash call $~lib/map/Map<f32,i32>#rehash
end end
) )
(func $std/map/testNumeric<f32,i32> (; 67 ;) (type $FUNCSIG$v) (func $std/map/testNumeric<f32,i32> (; 69 ;) (type $FUNCSIG$v)
(local $0 f32) (local $0 f32)
(local $1 i32) (local $1 i32)
call $~lib/map/Map<f32,i32>#constructor call $~lib/map/Map<f32,i32>#constructor
@ -6153,11 +6173,11 @@
unreachable unreachable
end end
) )
(func $~lib/map/Map<f64,i32>#constructor (; 68 ;) (type $FUNCSIG$i) (result i32) (func $~lib/map/Map<f64,i32>#constructor (; 70 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32) (local $0 i32)
i32.const 24 i32.const 24
call $~lib/runtime/allocate call $~lib/runtime/allocate
i32.const 12 i32.const 21
call $~lib/runtime/register call $~lib/runtime/register
local.tee $0 local.tee $0
i32.const 0 i32.const 0
@ -6181,7 +6201,7 @@
call $~lib/map/Map<i64,i32>#clear call $~lib/map/Map<i64,i32>#clear
local.get $0 local.get $0
) )
(func $~lib/map/Map<f64,i32>#find (; 69 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (func $~lib/map/Map<f64,i32>#find (; 71 ;) (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
@ -6224,7 +6244,7 @@
end end
i32.const 0 i32.const 0
) )
(func $~lib/map/Map<f64,i32>#has (; 70 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (func $~lib/map/Map<f64,i32>#has (; 72 ;) (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
@ -6234,7 +6254,7 @@
i32.const 0 i32.const 0
i32.ne i32.ne
) )
(func $~lib/map/Map<f64,i32>#rehash (; 71 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/map/Map<f64,i32>#rehash (; 73 ;) (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)
@ -6342,7 +6362,7 @@
i32.load offset=20 i32.load offset=20
i32.store offset=16 i32.store offset=16
) )
(func $~lib/map/Map<f64,i32>#set (; 72 ;) (type $FUNCSIG$vidi) (param $0 i32) (param $1 f64) (param $2 i32) (func $~lib/map/Map<f64,i32>#set (; 74 ;) (type $FUNCSIG$vidi) (param $0 i32) (param $1 f64) (param $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
(local $5 i32) (local $5 i32)
@ -6433,7 +6453,7 @@
i32.store i32.store
end end
) )
(func $~lib/map/Map<f64,i32>#get (; 73 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (func $~lib/map/Map<f64,i32>#get (; 75 ;) (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
@ -6448,7 +6468,7 @@
unreachable unreachable
end end
) )
(func $~lib/map/Map<f64,i32>#delete (; 74 ;) (type $FUNCSIG$vid) (param $0 i32) (param $1 f64) (func $~lib/map/Map<f64,i32>#delete (; 76 ;) (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
@ -6510,7 +6530,7 @@
call $~lib/map/Map<f64,i32>#rehash call $~lib/map/Map<f64,i32>#rehash
end end
) )
(func $std/map/testNumeric<f64,i32> (; 75 ;) (type $FUNCSIG$v) (func $std/map/testNumeric<f64,i32> (; 77 ;) (type $FUNCSIG$v)
(local $0 f64) (local $0 f64)
(local $1 i32) (local $1 i32)
call $~lib/map/Map<f64,i32>#constructor call $~lib/map/Map<f64,i32>#constructor
@ -6833,7 +6853,7 @@
unreachable unreachable
end end
) )
(func $start (; 76 ;) (type $FUNCSIG$v) (func $start (; 78 ;) (type $FUNCSIG$v)
i32.const 152 i32.const 152
global.set $~lib/allocator/arena/startOffset global.set $~lib/allocator/arena/startOffset
global.get $~lib/allocator/arena/startOffset global.get $~lib/allocator/arena/startOffset
@ -6849,7 +6869,7 @@
call $std/map/testNumeric<f32,i32> call $std/map/testNumeric<f32,i32>
call $std/map/testNumeric<f64,i32> call $std/map/testNumeric<f64,i32>
) )
(func $null (; 77 ;) (type $FUNCSIG$v) (func $null (; 79 ;) (type $FUNCSIG$v)
nop nop
) )
) )

File diff suppressed because it is too large Load Diff

View File

@ -1,9 +1,9 @@
(module (module
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(type $FUNCSIG$vii (func (param i32 i32)))
(type $FUNCSIG$v (func)) (type $FUNCSIG$v (func))
(type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$viiddddd (func (param i32 i32 f64 f64 f64 f64 f64))) (type $FUNCSIG$viiddddd (func (param i32 i32 f64 f64 f64 f64 f64)))
(type $FUNCSIG$vii (func (param i32 i32)))
(type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$viii (func (param i32 i32 i32)))
(type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32)))
(type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32)))
@ -23,8 +23,8 @@
(data (i32.const 200) "b\00a\00r\00r\00i\00e\00r\003") (data (i32.const 200) "b\00a\00r\00r\00i\00e\00r\003")
(data (i32.const 216) "\01\00\00\00\1e") (data (i32.const 216) "\01\00\00\00\1e")
(data (i32.const 232) "~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") (data (i32.const 232) "~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s")
(table $0 1 funcref) (table $0 4 funcref)
(elem (i32.const 0) $null) (elem (i32.const 0) $null $~lib/string/String~iterate $~lib/string/String~iterate $~lib/string/String~iterate)
(global $~lib/allocator/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/allocator/tlsf/ROOT (mut i32) (i32.const 0))
(global $std/runtime/register_ref (mut i32) (i32.const 0)) (global $std/runtime/register_ref (mut i32) (i32.const 0))
(global $std/runtime/barrier1 (mut i32) (i32.const 0)) (global $std/runtime/barrier1 (mut i32) (i32.const 0))
@ -44,7 +44,10 @@
(export "table" (table $0)) (export "table" (table $0))
(export "main" (func $std/runtime/main)) (export "main" (func $std/runtime/main))
(export ".capabilities" (global $~lib/capabilities)) (export ".capabilities" (global $~lib/capabilities))
(func $~lib/allocator/tlsf/Root#setSLMap (; 2 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/string/String~iterate (; 2 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
nop
)
(func $~lib/allocator/tlsf/Root#setSLMap (; 3 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
local.get $1 local.get $1
i32.const 22 i32.const 22
i32.ge_u i32.ge_u
@ -64,7 +67,7 @@
local.get $2 local.get $2
i32.store offset=4 i32.store offset=4
) )
(func $~lib/allocator/tlsf/Root#setHead (; 3 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $~lib/allocator/tlsf/Root#setHead (; 4 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
local.get $1 local.get $1
i32.const 22 i32.const 22
i32.ge_u i32.ge_u
@ -99,7 +102,7 @@
local.get $3 local.get $3
i32.store offset=96 i32.store offset=96
) )
(func $~lib/allocator/tlsf/Block#get:right (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/allocator/tlsf/Block#get:right (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.load i32.load
i32.const -4 i32.const -4
@ -133,7 +136,7 @@
end end
local.get $0 local.get $0
) )
(func $~lib/allocator/tlsf/fls<usize> (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/allocator/tlsf/fls<usize> (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.eqz i32.eqz
if if
@ -149,7 +152,7 @@
i32.clz i32.clz
i32.sub i32.sub
) )
(func $~lib/allocator/tlsf/Root#getHead (; 6 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/allocator/tlsf/Root#getHead (; 7 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
local.get $1 local.get $1
i32.const 22 i32.const 22
i32.ge_u i32.ge_u
@ -183,7 +186,7 @@
i32.add i32.add
i32.load offset=96 i32.load offset=96
) )
(func $~lib/allocator/tlsf/Root#getSLMap (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/allocator/tlsf/Root#getSLMap (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $1 local.get $1
i32.const 22 i32.const 22
i32.ge_u i32.ge_u
@ -202,7 +205,7 @@
i32.add i32.add
i32.load offset=4 i32.load offset=4
) )
(func $~lib/allocator/tlsf/Root#remove (; 8 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/allocator/tlsf/Root#remove (; 9 ;) (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)
@ -331,7 +334,7 @@
end end
end end
) )
(func $~lib/allocator/tlsf/Block#get:left (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/allocator/tlsf/Block#get:left (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.load i32.load
i32.const 2 i32.const 2
@ -361,7 +364,7 @@
end end
local.get $0 local.get $0
) )
(func $~lib/allocator/tlsf/Root#setJump (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/allocator/tlsf/Root#setJump (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
local.get $0 local.get $0
i32.load i32.load
i32.const 1 i32.const 1
@ -406,7 +409,7 @@
local.get $0 local.get $0
i32.store i32.store
) )
(func $~lib/allocator/tlsf/Root#insert (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/allocator/tlsf/Root#insert (; 12 ;) (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)
@ -636,7 +639,7 @@
i32.or i32.or
call $~lib/allocator/tlsf/Root#setSLMap call $~lib/allocator/tlsf/Root#setSLMap
) )
(func $~lib/allocator/tlsf/Root#addMemory (; 12 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/allocator/tlsf/Root#addMemory (; 13 ;) (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.get $1 local.get $1
@ -759,7 +762,7 @@
local.get $1 local.get $1
call $~lib/allocator/tlsf/Root#insert call $~lib/allocator/tlsf/Root#insert
) )
(func $~lib/allocator/tlsf/ffs<usize> (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/allocator/tlsf/ffs<usize> (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.eqz i32.eqz
if if
@ -773,7 +776,7 @@
local.get $0 local.get $0
i32.ctz i32.ctz
) )
(func $~lib/allocator/tlsf/Root#search (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/allocator/tlsf/Root#search (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
local.get $1 local.get $1
@ -885,7 +888,7 @@
end end
end end
) )
(func $~lib/allocator/tlsf/Root#use (; 15 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/allocator/tlsf/Root#use (; 16 ;) (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 $1 local.get $1
@ -996,7 +999,7 @@
i32.const 8 i32.const 8
i32.add i32.add
) )
(func $~lib/allocator/tlsf/__mem_allocate (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/allocator/tlsf/__mem_allocate (; 17 ;) (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)
@ -1166,7 +1169,7 @@
local.get $1 local.get $1
call $~lib/allocator/tlsf/Root#use call $~lib/allocator/tlsf/Root#use
) )
(func $~lib/runtime/allocate (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/runtime/allocate (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
i32.const 1 i32.const 1
i32.const 32 i32.const 32
@ -1193,7 +1196,7 @@
i32.const 16 i32.const 16
i32.add i32.add
) )
(func $~lib/util/memory/memcpy (; 18 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/util/memory/memcpy (; 19 ;) (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)
@ -2040,7 +2043,7 @@
i32.store8 i32.store8
end end
) )
(func $~lib/memory/memory.copy (; 19 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/memory/memory.copy (; 20 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
block $~lib/util/memory/memmove|inlined.0 block $~lib/util/memory/memmove|inlined.0
@ -2234,7 +2237,7 @@
end end
end end
) )
(func $~lib/memory/memory.fill (; 20 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/memory/memory.fill (; 21 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
block $~lib/util/memory/memset|inlined.0 block $~lib/util/memory/memset|inlined.0
local.get $1 local.get $1
@ -2445,7 +2448,7 @@
end end
end end
) )
(func $~lib/allocator/tlsf/__mem_free (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/allocator/tlsf/__mem_free (; 22 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
@ -2483,7 +2486,7 @@
end end
end end
) )
(func $~lib/runtime/reallocate (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/runtime/reallocate (; 23 ;) (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)
@ -2590,7 +2593,7 @@
i32.store offset=4 i32.store offset=4
local.get $0 local.get $0
) )
(func $~lib/runtime/discard (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/runtime/discard (; 24 ;) (type $FUNCSIG$vi) (param $0 i32)
local.get $0 local.get $0
i32.const 264 i32.const 264
i32.le_u i32.le_u
@ -2620,7 +2623,7 @@
local.get $0 local.get $0
call $~lib/allocator/tlsf/__mem_free call $~lib/allocator/tlsf/__mem_free
) )
(func $~lib/runtime/register (; 24 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/runtime/register (; 25 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32) (local $1 i32)
local.get $0 local.get $0
i32.const 264 i32.const 264
@ -2654,7 +2657,7 @@
local.get $0 local.get $0
global.set $std/runtime/register_ref global.set $std/runtime/register_ref
) )
(func $start:std/runtime (; 25 ;) (type $FUNCSIG$v) (func $start:std/runtime (; 26 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
@ -2973,7 +2976,7 @@
unreachable unreachable
end end
) )
(func $std/runtime/main (; 26 ;) (type $FUNCSIG$v) (func $std/runtime/main (; 27 ;) (type $FUNCSIG$v)
global.get $~lib/started global.get $~lib/started
i32.eqz i32.eqz
if if
@ -2982,7 +2985,7 @@
global.set $~lib/started global.set $~lib/started
end end
) )
(func $null (; 27 ;) (type $FUNCSIG$v) (func $null (; 28 ;) (type $FUNCSIG$v)
nop nop
) )
) )

View File

@ -1,9 +1,9 @@
(module (module
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(type $FUNCSIG$vii (func (param i32 i32)))
(type $FUNCSIG$v (func)) (type $FUNCSIG$v (func))
(type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$viiddddd (func (param i32 i32 f64 f64 f64 f64 f64))) (type $FUNCSIG$viiddddd (func (param i32 i32 f64 f64 f64 f64 f64)))
(type $FUNCSIG$vii (func (param i32 i32)))
(type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$viii (func (param i32 i32 i32)))
(type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32)))
(type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32)))
@ -17,8 +17,8 @@
(data (i32.const 152) "\01\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00b\00a\00r\00r\00i\00e\00r\002\00") (data (i32.const 152) "\01\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00b\00a\00r\00r\00i\00e\00r\002\00")
(data (i32.const 184) "\01\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00b\00a\00r\00r\00i\00e\00r\003\00") (data (i32.const 184) "\01\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00b\00a\00r\00r\00i\00e\00r\003\00")
(data (i32.const 216) "\01\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") (data (i32.const 216) "\01\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00")
(table $0 1 funcref) (table $0 4 funcref)
(elem (i32.const 0) $null) (elem (i32.const 0) $null $~lib/string/String~iterate $std/runtime/A~iterate $std/runtime/B~iterate)
(global $~lib/allocator/tlsf/SL_BITS i32 (i32.const 5)) (global $~lib/allocator/tlsf/SL_BITS i32 (i32.const 5))
(global $~lib/allocator/tlsf/SL_SIZE i32 (i32.const 32)) (global $~lib/allocator/tlsf/SL_SIZE i32 (i32.const 32))
(global $~lib/allocator/tlsf/SB_BITS i32 (i32.const 8)) (global $~lib/allocator/tlsf/SB_BITS i32 (i32.const 8))
@ -60,7 +60,10 @@
(export "table" (table $0)) (export "table" (table $0))
(export "main" (func $std/runtime/main)) (export "main" (func $std/runtime/main))
(export ".capabilities" (global $~lib/capabilities)) (export ".capabilities" (global $~lib/capabilities))
(func $start:~lib/allocator/tlsf (; 2 ;) (type $FUNCSIG$v) (func $~lib/string/String~iterate (; 2 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32)
)
(func $start:~lib/allocator/tlsf (; 3 ;) (type $FUNCSIG$v)
i32.const 1 i32.const 1
global.get $~lib/allocator/tlsf/SL_BITS global.get $~lib/allocator/tlsf/SL_BITS
i32.shl i32.shl
@ -76,7 +79,11 @@
unreachable unreachable
end end
) )
(func $~lib/runtime/ADJUSTOBLOCK (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $std/runtime/A~iterate (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
)
(func $std/runtime/B~iterate (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
)
(func $~lib/runtime/ADJUSTOBLOCK (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
i32.const 1 i32.const 1
i32.const 32 i32.const 32
local.get $0 local.get $0
@ -88,7 +95,7 @@
i32.sub i32.sub
i32.shl i32.shl
) )
(func $std/runtime/isPowerOf2 (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $std/runtime/isPowerOf2 (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
local.get $0 local.get $0
i32.const 0 i32.const 0
@ -106,12 +113,12 @@
local.get $1 local.get $1
end end
) )
(func $~lib/allocator/tlsf/Root#set:tailRef (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/allocator/tlsf/Root#set:tailRef (; 8 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
i32.const 0 i32.const 0
local.get $1 local.get $1
i32.store offset=2912 i32.store offset=2912
) )
(func $~lib/allocator/tlsf/Root#setSLMap (; 6 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/allocator/tlsf/Root#setSLMap (; 9 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
local.get $1 local.get $1
global.get $~lib/allocator/tlsf/FL_BITS global.get $~lib/allocator/tlsf/FL_BITS
i32.lt_u i32.lt_u
@ -132,7 +139,7 @@
local.get $2 local.get $2
i32.store offset=4 i32.store offset=4
) )
(func $~lib/allocator/tlsf/Root#setHead (; 7 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $~lib/allocator/tlsf/Root#setHead (; 10 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
local.get $1 local.get $1
global.get $~lib/allocator/tlsf/FL_BITS global.get $~lib/allocator/tlsf/FL_BITS
i32.lt_u i32.lt_u
@ -169,11 +176,11 @@
local.get $3 local.get $3
i32.store offset=96 i32.store offset=96
) )
(func $~lib/allocator/tlsf/Root#get:tailRef (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/allocator/tlsf/Root#get:tailRef (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
i32.const 0 i32.const 0
i32.load offset=2912 i32.load offset=2912
) )
(func $~lib/allocator/tlsf/Block#get:right (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/allocator/tlsf/Block#get:right (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
local.get $0 local.get $0
i32.load i32.load
@ -213,7 +220,7 @@
local.get $1 local.get $1
end end
) )
(func $~lib/allocator/tlsf/fls<usize> (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/allocator/tlsf/fls<usize> (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.const 0 i32.const 0
i32.ne i32.ne
@ -231,7 +238,7 @@
i32.clz i32.clz
i32.sub i32.sub
) )
(func $~lib/allocator/tlsf/Root#getHead (; 11 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/allocator/tlsf/Root#getHead (; 14 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
local.get $1 local.get $1
global.get $~lib/allocator/tlsf/FL_BITS global.get $~lib/allocator/tlsf/FL_BITS
i32.lt_u i32.lt_u
@ -267,7 +274,7 @@
i32.add i32.add
i32.load offset=96 i32.load offset=96
) )
(func $~lib/allocator/tlsf/Root#getSLMap (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/allocator/tlsf/Root#getSLMap (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $1 local.get $1
global.get $~lib/allocator/tlsf/FL_BITS global.get $~lib/allocator/tlsf/FL_BITS
i32.lt_u i32.lt_u
@ -287,7 +294,7 @@
i32.add i32.add
i32.load offset=4 i32.load offset=4
) )
(func $~lib/allocator/tlsf/Root#remove (; 13 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/allocator/tlsf/Root#remove (; 16 ;) (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)
@ -432,7 +439,7 @@
end end
end end
) )
(func $~lib/allocator/tlsf/Block#get:left (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/allocator/tlsf/Block#get:left (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
local.get $0 local.get $0
i32.load i32.load
@ -464,7 +471,7 @@
local.get $1 local.get $1
end end
) )
(func $~lib/allocator/tlsf/Root#setJump (; 15 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/allocator/tlsf/Root#setJump (; 18 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
local.get $1 local.get $1
i32.load i32.load
global.get $~lib/allocator/tlsf/FREE global.get $~lib/allocator/tlsf/FREE
@ -510,7 +517,7 @@
local.get $1 local.get $1
i32.store i32.store
) )
(func $~lib/allocator/tlsf/Root#insert (; 16 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/allocator/tlsf/Root#insert (; 19 ;) (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)
@ -776,7 +783,7 @@
i32.or i32.or
call $~lib/allocator/tlsf/Root#setSLMap call $~lib/allocator/tlsf/Root#setSLMap
) )
(func $~lib/allocator/tlsf/Root#addMemory (; 17 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/allocator/tlsf/Root#addMemory (; 20 ;) (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)
@ -929,7 +936,7 @@
call $~lib/allocator/tlsf/Root#insert call $~lib/allocator/tlsf/Root#insert
i32.const 1 i32.const 1
) )
(func $~lib/allocator/tlsf/ffs<usize> (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/allocator/tlsf/ffs<usize> (; 21 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.const 0 i32.const 0
i32.ne i32.ne
@ -945,7 +952,7 @@
local.get $0 local.get $0
i32.ctz i32.ctz
) )
(func $~lib/allocator/tlsf/ffs<u32> (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/allocator/tlsf/ffs<u32> (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.const 0 i32.const 0
i32.ne i32.ne
@ -961,7 +968,7 @@
local.get $0 local.get $0
i32.ctz i32.ctz
) )
(func $~lib/allocator/tlsf/Root#search (; 20 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/allocator/tlsf/Root#search (; 23 ;) (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)
@ -1102,7 +1109,7 @@
end end
local.get $6 local.get $6
) )
(func $~lib/allocator/tlsf/Root#use (; 21 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/allocator/tlsf/Root#use (; 24 ;) (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)
@ -1230,7 +1237,7 @@
global.get $~lib/allocator/tlsf/Block.INFO global.get $~lib/allocator/tlsf/Block.INFO
i32.add i32.add
) )
(func $~lib/allocator/tlsf/__mem_allocate (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/allocator/tlsf/__mem_allocate (; 25 ;) (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)
@ -1466,12 +1473,12 @@
local.get $0 local.get $0
call $~lib/allocator/tlsf/Root#use call $~lib/allocator/tlsf/Root#use
) )
(func $~lib/memory/memory.allocate (; 23 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/memory/memory.allocate (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
call $~lib/allocator/tlsf/__mem_allocate call $~lib/allocator/tlsf/__mem_allocate
return return
) )
(func $~lib/runtime/allocate (; 24 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/runtime/allocate (; 27 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
local.get $0 local.get $0
call $~lib/runtime/ADJUSTOBLOCK call $~lib/runtime/ADJUSTOBLOCK
@ -1493,7 +1500,7 @@
global.get $~lib/runtime/HEADER_SIZE global.get $~lib/runtime/HEADER_SIZE
i32.add i32.add
) )
(func $~lib/util/memory/memcpy (; 25 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/util/memory/memcpy (; 28 ;) (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)
@ -2694,7 +2701,7 @@
i32.store8 i32.store8
end end
) )
(func $~lib/memory/memory.copy (; 26 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/memory/memory.copy (; 29 ;) (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)
@ -2925,7 +2932,7 @@
end end
end end
) )
(func $~lib/memory/memory.fill (; 27 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/memory/memory.fill (; 30 ;) (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)
@ -3182,7 +3189,7 @@
end end
end end
) )
(func $~lib/allocator/tlsf/__mem_free (; 28 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/allocator/tlsf/__mem_free (; 31 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
@ -3225,15 +3232,15 @@
end end
end end
) )
(func $~lib/memory/memory.free (; 29 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/memory/memory.free (; 32 ;) (type $FUNCSIG$vi) (param $0 i32)
local.get $0 local.get $0
call $~lib/allocator/tlsf/__mem_free call $~lib/allocator/tlsf/__mem_free
) )
(func $std/runtime/__ref_register (; 30 ;) (type $FUNCSIG$vi) (param $0 i32) (func $std/runtime/__ref_register (; 33 ;) (type $FUNCSIG$vi) (param $0 i32)
local.get $0 local.get $0
global.set $std/runtime/register_ref global.set $std/runtime/register_ref
) )
(func $~lib/runtime/reallocate (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/runtime/reallocate (; 34 ;) (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)
@ -3337,7 +3344,7 @@
i32.store offset=4 i32.store offset=4
local.get $0 local.get $0
) )
(func $~lib/runtime/discard (; 32 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/runtime/discard (; 35 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32) (local $1 i32)
local.get $0 local.get $0
global.get $~lib/memory/HEAP_BASE global.get $~lib/memory/HEAP_BASE
@ -3371,7 +3378,7 @@
local.get $1 local.get $1
call $~lib/memory/memory.free call $~lib/memory/memory.free
) )
(func $~lib/runtime/register (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/runtime/register (; 36 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
local.get $0 local.get $0
global.get $~lib/memory/HEAP_BASE global.get $~lib/memory/HEAP_BASE
@ -3409,13 +3416,13 @@
call $std/runtime/__ref_register call $std/runtime/__ref_register
local.get $0 local.get $0
) )
(func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 34 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 37 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
global.get $~lib/runtime/HEADER_SIZE global.get $~lib/runtime/HEADER_SIZE
i32.sub i32.sub
i32.load offset=4 i32.load offset=4
) )
(func $~lib/string/String#get:length (; 35 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/string/String#get:length (; 38 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
global.get $~lib/runtime/HEADER_SIZE global.get $~lib/runtime/HEADER_SIZE
i32.sub i32.sub
@ -3423,7 +3430,7 @@
i32.const 1 i32.const 1
i32.shr_u i32.shr_u
) )
(func $start:std/runtime (; 36 ;) (type $FUNCSIG$v) (func $start:std/runtime (; 39 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
call $start:~lib/allocator/tlsf call $start:~lib/allocator/tlsf
@ -3781,7 +3788,7 @@
unreachable unreachable
end end
) )
(func $std/runtime/main (; 37 ;) (type $FUNCSIG$v) (func $std/runtime/main (; 40 ;) (type $FUNCSIG$v)
global.get $~lib/started global.get $~lib/started
i32.eqz i32.eqz
if if
@ -3790,9 +3797,9 @@
global.set $~lib/started global.set $~lib/started
end end
) )
(func $start (; 38 ;) (type $FUNCSIG$v) (func $start (; 41 ;) (type $FUNCSIG$v)
call $start:std/runtime call $start:std/runtime
) )
(func $null (; 39 ;) (type $FUNCSIG$v) (func $null (; 42 ;) (type $FUNCSIG$v)
) )
) )

View File

@ -1,10 +1,10 @@
(module (module
(type $FUNCSIG$v (func)) (type $FUNCSIG$v (func))
(type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$vii (func (param i32 i32)))
(type $FUNCSIG$vi (func (param i32)))
(type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32)))
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(type $FUNCSIG$vi (func (param i32)))
(type $FUNCSIG$vii (func (param i32 i32)))
(type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32)))
(type $FUNCSIG$iij (func (param i32 i64) (result i32))) (type $FUNCSIG$iij (func (param i32 i64) (result i32)))
(type $FUNCSIG$ij (func (param i64) (result i32))) (type $FUNCSIG$ij (func (param i64) (result i32)))
@ -19,16 +19,17 @@
(type $FUNCSIG$i (func (result i32))) (type $FUNCSIG$i (func (result i32)))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1) (memory $0 1)
(data (i32.const 8) "\02\00\00\00\1e") (data (i32.const 8) "\03\00\00\00\1e")
(data (i32.const 24) "~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") (data (i32.const 24) "~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s")
(data (i32.const 56) "\02\00\00\00&") (data (i32.const 56) "\03\00\00\00&")
(data (i32.const 72) "~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") (data (i32.const 72) "~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s")
(data (i32.const 112) "\02\00\00\00\14") (data (i32.const 112) "\03\00\00\00\14")
(data (i32.const 128) "s\00t\00d\00/\00s\00e\00t\00.\00t\00s") (data (i32.const 128) "s\00t\00d\00/\00s\00e\00t\00.\00t\00s")
(table $0 1 funcref) (table $0 23 funcref)
(elem (i32.const 0) $null) (elem (i32.const 0) $null $~lib/set/Set<i8>~iterate $~lib/set/Set<i8>~iterate $~lib/string/String~iterate $~lib/string/String~iterate $~lib/set/Set<i8>~iterate $~lib/set/Set<i8>~iterate $~lib/set/Set<i8>~iterate $~lib/set/Set<i8>~iterate $~lib/set/Set<i8>~iterate $~lib/set/Set<i8>~iterate $~lib/set/Set<i8>~iterate $~lib/set/Set<i8>~iterate $~lib/set/Set<i8>~iterate $~lib/set/Set<i8>~iterate $~lib/set/Set<i8>~iterate $~lib/set/Set<i8>~iterate $~lib/set/Set<i8>~iterate $~lib/set/Set<i8>~iterate $~lib/set/Set<i8>~iterate $~lib/set/Set<i8>~iterate $~lib/set/Set<i8>~iterate $~lib/set/Set<i8>~iterate)
(global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0))
(global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) (global $~lib/allocator/arena/offset (mut i32) (i32.const 0))
(global $~lib/argc (mut i32) (i32.const 0))
(global $~lib/capabilities i32 (i32.const 2)) (global $~lib/capabilities i32 (i32.const 2))
(export "memory" (memory $0)) (export "memory" (memory $0))
(export "table" (table $0)) (export "table" (table $0))
@ -123,7 +124,26 @@
i32.const 16 i32.const 16
i32.add i32.add
) )
(func $~lib/runtime/register (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/set/Set<i8>~iterate (; 3 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
i32.const 1
global.set $~lib/argc
local.get $0
i32.load
local.get $1
call_indirect (type $FUNCSIG$vi)
local.get $0
i32.load offset=8
local.set $0
i32.const 1
global.set $~lib/argc
local.get $0
local.get $1
call_indirect (type $FUNCSIG$vi)
)
(func $~lib/string/String~iterate (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
nop
)
(func $~lib/runtime/register (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
local.get $0 local.get $0
i32.const 148 i32.const 148
@ -156,7 +176,7 @@
i32.store i32.store
local.get $0 local.get $0
) )
(func $~lib/memory/memory.fill (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/memory/memory.fill (; 6 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
block $~lib/util/memory/memset|inlined.0 block $~lib/util/memory/memset|inlined.0
local.get $1 local.get $1
@ -367,7 +387,7 @@
end end
end end
) )
(func $~lib/arraybuffer/ArrayBuffer#constructor (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/arraybuffer/ArrayBuffer#constructor (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
local.get $0 local.get $0
i32.const 1073741808 i32.const 1073741808
@ -386,10 +406,10 @@
local.get $0 local.get $0
call $~lib/memory/memory.fill call $~lib/memory/memory.fill
local.get $1 local.get $1
i32.const 3 i32.const 4
call $~lib/runtime/register call $~lib/runtime/register
) )
(func $~lib/set/Set<i8>#clear (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/set/Set<i8>#clear (; 8 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32) (local $1 i32)
i32.const 16 i32.const 16
call $~lib/arraybuffer/ArrayBuffer#constructor call $~lib/arraybuffer/ArrayBuffer#constructor
@ -424,7 +444,7 @@
i32.const 0 i32.const 0
i32.store offset=20 i32.store offset=20
) )
(func $~lib/set/Set<i8>#constructor (; 7 ;) (type $FUNCSIG$i) (result i32) (func $~lib/set/Set<i8>#constructor (; 9 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32) (local $0 i32)
i32.const 24 i32.const 24
call $~lib/runtime/allocate call $~lib/runtime/allocate
@ -452,7 +472,7 @@
call $~lib/set/Set<i8>#clear call $~lib/set/Set<i8>#clear
local.get $0 local.get $0
) )
(func $~lib/set/Set<i8>#find (; 8 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/set/Set<i8>#find (; 10 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
local.get $0 local.get $0
i32.load i32.load
local.get $0 local.get $0
@ -497,7 +517,7 @@
end end
i32.const 0 i32.const 0
) )
(func $~lib/set/Set<i8>#has (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/set/Set<i8>#has (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
local.get $1 local.get $1
local.get $1 local.get $1
@ -513,7 +533,7 @@
i32.const 0 i32.const 0
i32.ne i32.ne
) )
(func $~lib/set/Set<i8>#rehash (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/set/Set<i8>#rehash (; 12 ;) (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)
@ -619,7 +639,7 @@
i32.load offset=20 i32.load offset=20
i32.store offset=16 i32.store offset=16
) )
(func $~lib/set/Set<i8>#add (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/set/Set<i8>#add (; 13 ;) (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)
@ -711,7 +731,7 @@
i32.store i32.store
end end
) )
(func $~lib/set/Set<i8>#delete (; 12 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/set/Set<i8>#delete (; 14 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
local.get $0 local.get $0
local.get $1 local.get $1
@ -778,7 +798,7 @@
call $~lib/set/Set<i8>#rehash call $~lib/set/Set<i8>#rehash
end end
) )
(func $std/set/testNumeric<i8> (; 13 ;) (type $FUNCSIG$v) (func $std/set/testNumeric<i8> (; 15 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
call $~lib/set/Set<i8>#constructor call $~lib/set/Set<i8>#constructor
@ -1023,11 +1043,11 @@
unreachable unreachable
end end
) )
(func $~lib/set/Set<u8>#constructor (; 14 ;) (type $FUNCSIG$i) (result i32) (func $~lib/set/Set<u8>#constructor (; 16 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32) (local $0 i32)
i32.const 24 i32.const 24
call $~lib/runtime/allocate call $~lib/runtime/allocate
i32.const 4 i32.const 5
call $~lib/runtime/register call $~lib/runtime/register
local.tee $0 local.tee $0
i32.const 0 i32.const 0
@ -1051,7 +1071,7 @@
call $~lib/set/Set<i8>#clear call $~lib/set/Set<i8>#clear
local.get $0 local.get $0
) )
(func $~lib/set/Set<u8>#has (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/set/Set<u8>#has (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
local.get $1 local.get $1
local.get $1 local.get $1
@ -1065,7 +1085,7 @@
i32.const 0 i32.const 0
i32.ne i32.ne
) )
(func $~lib/set/Set<u8>#rehash (; 16 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/set/Set<u8>#rehash (; 18 ;) (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)
@ -1171,7 +1191,7 @@
i32.load offset=20 i32.load offset=20
i32.store offset=16 i32.store offset=16
) )
(func $~lib/set/Set<u8>#add (; 17 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/set/Set<u8>#add (; 19 ;) (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)
@ -1261,7 +1281,7 @@
i32.store i32.store
end end
) )
(func $~lib/set/Set<u8>#delete (; 18 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/set/Set<u8>#delete (; 20 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
local.get $0 local.get $0
local.get $1 local.get $1
@ -1326,7 +1346,7 @@
call $~lib/set/Set<u8>#rehash call $~lib/set/Set<u8>#rehash
end end
) )
(func $std/set/testNumeric<u8> (; 19 ;) (type $FUNCSIG$v) (func $std/set/testNumeric<u8> (; 21 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
call $~lib/set/Set<u8>#constructor call $~lib/set/Set<u8>#constructor
@ -1571,11 +1591,11 @@
unreachable unreachable
end end
) )
(func $~lib/set/Set<i16>#constructor (; 20 ;) (type $FUNCSIG$i) (result i32) (func $~lib/set/Set<i16>#constructor (; 22 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32) (local $0 i32)
i32.const 24 i32.const 24
call $~lib/runtime/allocate call $~lib/runtime/allocate
i32.const 5 i32.const 7
call $~lib/runtime/register call $~lib/runtime/register
local.tee $0 local.tee $0
i32.const 0 i32.const 0
@ -1599,7 +1619,7 @@
call $~lib/set/Set<i8>#clear call $~lib/set/Set<i8>#clear
local.get $0 local.get $0
) )
(func $~lib/set/Set<i16>#find (; 21 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/set/Set<i16>#find (; 23 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
local.get $0 local.get $0
i32.load i32.load
local.get $0 local.get $0
@ -1644,7 +1664,7 @@
end end
i32.const 0 i32.const 0
) )
(func $~lib/set/Set<i16>#has (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/set/Set<i16>#has (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
local.get $1 local.get $1
local.get $1 local.get $1
@ -1669,7 +1689,7 @@
i32.const 0 i32.const 0
i32.ne i32.ne
) )
(func $~lib/set/Set<i16>#rehash (; 23 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/set/Set<i16>#rehash (; 25 ;) (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)
@ -1784,7 +1804,7 @@
i32.load offset=20 i32.load offset=20
i32.store offset=16 i32.store offset=16
) )
(func $~lib/set/Set<i16>#add (; 24 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/set/Set<i16>#add (; 26 ;) (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)
@ -1885,7 +1905,7 @@
i32.store i32.store
end end
) )
(func $~lib/set/Set<i16>#delete (; 25 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/set/Set<i16>#delete (; 27 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
local.get $0 local.get $0
local.get $1 local.get $1
@ -1961,7 +1981,7 @@
call $~lib/set/Set<i16>#rehash call $~lib/set/Set<i16>#rehash
end end
) )
(func $std/set/testNumeric<i16> (; 26 ;) (type $FUNCSIG$v) (func $std/set/testNumeric<i16> (; 28 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
call $~lib/set/Set<i16>#constructor call $~lib/set/Set<i16>#constructor
@ -2206,11 +2226,11 @@
unreachable unreachable
end end
) )
(func $~lib/set/Set<u16>#constructor (; 27 ;) (type $FUNCSIG$i) (result i32) (func $~lib/set/Set<u16>#constructor (; 29 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32) (local $0 i32)
i32.const 24 i32.const 24
call $~lib/runtime/allocate call $~lib/runtime/allocate
i32.const 6 i32.const 9
call $~lib/runtime/register call $~lib/runtime/register
local.tee $0 local.tee $0
i32.const 0 i32.const 0
@ -2234,7 +2254,7 @@
call $~lib/set/Set<i8>#clear call $~lib/set/Set<i8>#clear
local.get $0 local.get $0
) )
(func $~lib/set/Set<u16>#has (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/set/Set<u16>#has (; 30 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
local.get $1 local.get $1
local.get $1 local.get $1
@ -2257,7 +2277,7 @@
i32.const 0 i32.const 0
i32.ne i32.ne
) )
(func $~lib/set/Set<u16>#rehash (; 29 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/set/Set<u16>#rehash (; 31 ;) (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)
@ -2372,7 +2392,7 @@
i32.load offset=20 i32.load offset=20
i32.store offset=16 i32.store offset=16
) )
(func $~lib/set/Set<u16>#add (; 30 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/set/Set<u16>#add (; 32 ;) (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)
@ -2471,7 +2491,7 @@
i32.store i32.store
end end
) )
(func $~lib/set/Set<u16>#delete (; 31 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/set/Set<u16>#delete (; 33 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
local.get $0 local.get $0
local.get $1 local.get $1
@ -2545,7 +2565,7 @@
call $~lib/set/Set<u16>#rehash call $~lib/set/Set<u16>#rehash
end end
) )
(func $std/set/testNumeric<u16> (; 32 ;) (type $FUNCSIG$v) (func $std/set/testNumeric<u16> (; 34 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
call $~lib/set/Set<u16>#constructor call $~lib/set/Set<u16>#constructor
@ -2790,11 +2810,11 @@
unreachable unreachable
end end
) )
(func $~lib/set/Set<i32>#constructor (; 33 ;) (type $FUNCSIG$i) (result i32) (func $~lib/set/Set<i32>#constructor (; 35 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32) (local $0 i32)
i32.const 24 i32.const 24
call $~lib/runtime/allocate call $~lib/runtime/allocate
i32.const 7 i32.const 11
call $~lib/runtime/register call $~lib/runtime/register
local.tee $0 local.tee $0
i32.const 0 i32.const 0
@ -2818,7 +2838,7 @@
call $~lib/set/Set<i8>#clear call $~lib/set/Set<i8>#clear
local.get $0 local.get $0
) )
(func $~lib/util/hash/hash32 (; 34 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/util/hash/hash32 (; 36 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
i32.const 255 i32.const 255
i32.and i32.and
@ -2849,7 +2869,7 @@
i32.const 16777619 i32.const 16777619
i32.mul i32.mul
) )
(func $~lib/set/Set<i32>#find (; 35 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/set/Set<i32>#find (; 37 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
local.get $0 local.get $0
i32.load i32.load
local.get $0 local.get $0
@ -2892,7 +2912,7 @@
end end
i32.const 0 i32.const 0
) )
(func $~lib/set/Set<i32>#has (; 36 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/set/Set<i32>#has (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
local.get $1 local.get $1
local.get $1 local.get $1
@ -2901,7 +2921,7 @@
i32.const 0 i32.const 0
i32.ne i32.ne
) )
(func $~lib/set/Set<i32>#rehash (; 37 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/set/Set<i32>#rehash (; 39 ;) (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)
@ -3004,7 +3024,7 @@
i32.load offset=20 i32.load offset=20
i32.store offset=16 i32.store offset=16
) )
(func $~lib/set/Set<i32>#add (; 38 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/set/Set<i32>#add (; 40 ;) (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)
@ -3087,7 +3107,7 @@
i32.store i32.store
end end
) )
(func $~lib/set/Set<i32>#delete (; 39 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/set/Set<i32>#delete (; 41 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
local.get $0 local.get $0
local.get $1 local.get $1
@ -3147,7 +3167,7 @@
call $~lib/set/Set<i32>#rehash call $~lib/set/Set<i32>#rehash
end end
) )
(func $std/set/testNumeric<i32> (; 40 ;) (type $FUNCSIG$v) (func $std/set/testNumeric<i32> (; 42 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
call $~lib/set/Set<i32>#constructor call $~lib/set/Set<i32>#constructor
@ -3392,11 +3412,11 @@
unreachable unreachable
end end
) )
(func $~lib/set/Set<u32>#constructor (; 41 ;) (type $FUNCSIG$i) (result i32) (func $~lib/set/Set<u32>#constructor (; 43 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32) (local $0 i32)
i32.const 24 i32.const 24
call $~lib/runtime/allocate call $~lib/runtime/allocate
i32.const 8 i32.const 13
call $~lib/runtime/register call $~lib/runtime/register
local.tee $0 local.tee $0
i32.const 0 i32.const 0
@ -3420,7 +3440,7 @@
call $~lib/set/Set<i8>#clear call $~lib/set/Set<i8>#clear
local.get $0 local.get $0
) )
(func $std/set/testNumeric<u32> (; 42 ;) (type $FUNCSIG$v) (func $std/set/testNumeric<u32> (; 44 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
call $~lib/set/Set<u32>#constructor call $~lib/set/Set<u32>#constructor
@ -3665,7 +3685,7 @@
unreachable unreachable
end end
) )
(func $~lib/set/Set<i64>#clear (; 43 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/set/Set<i64>#clear (; 45 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32) (local $1 i32)
i32.const 16 i32.const 16
call $~lib/arraybuffer/ArrayBuffer#constructor call $~lib/arraybuffer/ArrayBuffer#constructor
@ -3700,11 +3720,11 @@
i32.const 0 i32.const 0
i32.store offset=20 i32.store offset=20
) )
(func $~lib/set/Set<i64>#constructor (; 44 ;) (type $FUNCSIG$i) (result i32) (func $~lib/set/Set<i64>#constructor (; 46 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32) (local $0 i32)
i32.const 24 i32.const 24
call $~lib/runtime/allocate call $~lib/runtime/allocate
i32.const 9 i32.const 15
call $~lib/runtime/register call $~lib/runtime/register
local.tee $0 local.tee $0
i32.const 0 i32.const 0
@ -3728,7 +3748,7 @@
call $~lib/set/Set<i64>#clear call $~lib/set/Set<i64>#clear
local.get $0 local.get $0
) )
(func $~lib/util/hash/hash64 (; 45 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (func $~lib/util/hash/hash64 (; 47 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32)
(local $1 i32) (local $1 i32)
local.get $0 local.get $0
i32.wrap_i64 i32.wrap_i64
@ -3794,7 +3814,7 @@
i32.const 16777619 i32.const 16777619
i32.mul i32.mul
) )
(func $~lib/set/Set<i64>#find (; 46 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (func $~lib/set/Set<i64>#find (; 48 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32)
local.get $0 local.get $0
i32.load i32.load
local.get $0 local.get $0
@ -3837,7 +3857,7 @@
end end
i32.const 0 i32.const 0
) )
(func $~lib/set/Set<i64>#has (; 47 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (func $~lib/set/Set<i64>#has (; 49 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32)
local.get $0 local.get $0
local.get $1 local.get $1
local.get $1 local.get $1
@ -3846,7 +3866,7 @@
i32.const 0 i32.const 0
i32.ne i32.ne
) )
(func $~lib/set/Set<i64>#rehash (; 48 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/set/Set<i64>#rehash (; 50 ;) (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)
@ -3949,7 +3969,7 @@
i32.load offset=20 i32.load offset=20
i32.store offset=16 i32.store offset=16
) )
(func $~lib/set/Set<i64>#add (; 49 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) (func $~lib/set/Set<i64>#add (; 51 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -4032,7 +4052,7 @@
i32.store i32.store
end end
) )
(func $~lib/set/Set<i64>#delete (; 50 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) (func $~lib/set/Set<i64>#delete (; 52 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
local.get $0 local.get $0
@ -4093,7 +4113,7 @@
call $~lib/set/Set<i64>#rehash call $~lib/set/Set<i64>#rehash
end end
) )
(func $std/set/testNumeric<i64> (; 51 ;) (type $FUNCSIG$v) (func $std/set/testNumeric<i64> (; 53 ;) (type $FUNCSIG$v)
(local $0 i64) (local $0 i64)
(local $1 i32) (local $1 i32)
call $~lib/set/Set<i64>#constructor call $~lib/set/Set<i64>#constructor
@ -4338,11 +4358,11 @@
unreachable unreachable
end end
) )
(func $~lib/set/Set<u64>#constructor (; 52 ;) (type $FUNCSIG$i) (result i32) (func $~lib/set/Set<u64>#constructor (; 54 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32) (local $0 i32)
i32.const 24 i32.const 24
call $~lib/runtime/allocate call $~lib/runtime/allocate
i32.const 10 i32.const 17
call $~lib/runtime/register call $~lib/runtime/register
local.tee $0 local.tee $0
i32.const 0 i32.const 0
@ -4366,7 +4386,7 @@
call $~lib/set/Set<i64>#clear call $~lib/set/Set<i64>#clear
local.get $0 local.get $0
) )
(func $std/set/testNumeric<u64> (; 53 ;) (type $FUNCSIG$v) (func $std/set/testNumeric<u64> (; 55 ;) (type $FUNCSIG$v)
(local $0 i64) (local $0 i64)
(local $1 i32) (local $1 i32)
call $~lib/set/Set<u64>#constructor call $~lib/set/Set<u64>#constructor
@ -4611,11 +4631,11 @@
unreachable unreachable
end end
) )
(func $~lib/set/Set<f32>#constructor (; 54 ;) (type $FUNCSIG$i) (result i32) (func $~lib/set/Set<f32>#constructor (; 56 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32) (local $0 i32)
i32.const 24 i32.const 24
call $~lib/runtime/allocate call $~lib/runtime/allocate
i32.const 11 i32.const 19
call $~lib/runtime/register call $~lib/runtime/register
local.tee $0 local.tee $0
i32.const 0 i32.const 0
@ -4639,7 +4659,7 @@
call $~lib/set/Set<i8>#clear call $~lib/set/Set<i8>#clear
local.get $0 local.get $0
) )
(func $~lib/set/Set<f32>#find (; 55 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) (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
@ -4682,7 +4702,7 @@
end end
i32.const 0 i32.const 0
) )
(func $~lib/set/Set<f32>#has (; 56 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) (func $~lib/set/Set<f32>#has (; 58 ;) (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
@ -4692,7 +4712,7 @@
i32.const 0 i32.const 0
i32.ne i32.ne
) )
(func $~lib/set/Set<f32>#rehash (; 57 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/set/Set<f32>#rehash (; 59 ;) (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)
@ -4796,7 +4816,7 @@
i32.load offset=20 i32.load offset=20
i32.store offset=16 i32.store offset=16
) )
(func $~lib/set/Set<f32>#add (; 58 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32) (func $~lib/set/Set<f32>#add (; 60 ;) (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)
@ -4880,7 +4900,7 @@
i32.store i32.store
end end
) )
(func $~lib/set/Set<f32>#delete (; 59 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32) (func $~lib/set/Set<f32>#delete (; 61 ;) (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
@ -4942,7 +4962,7 @@
call $~lib/set/Set<f32>#rehash call $~lib/set/Set<f32>#rehash
end end
) )
(func $std/set/testNumeric<f32> (; 60 ;) (type $FUNCSIG$v) (func $std/set/testNumeric<f32> (; 62 ;) (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
@ -5187,11 +5207,11 @@
unreachable unreachable
end end
) )
(func $~lib/set/Set<f64>#constructor (; 61 ;) (type $FUNCSIG$i) (result i32) (func $~lib/set/Set<f64>#constructor (; 63 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32) (local $0 i32)
i32.const 24 i32.const 24
call $~lib/runtime/allocate call $~lib/runtime/allocate
i32.const 12 i32.const 21
call $~lib/runtime/register call $~lib/runtime/register
local.tee $0 local.tee $0
i32.const 0 i32.const 0
@ -5215,7 +5235,7 @@
call $~lib/set/Set<i64>#clear call $~lib/set/Set<i64>#clear
local.get $0 local.get $0
) )
(func $~lib/set/Set<f64>#find (; 62 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (func $~lib/set/Set<f64>#find (; 64 ;) (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
@ -5258,7 +5278,7 @@
end end
i32.const 0 i32.const 0
) )
(func $~lib/set/Set<f64>#has (; 63 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (func $~lib/set/Set<f64>#has (; 65 ;) (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
@ -5268,7 +5288,7 @@
i32.const 0 i32.const 0
i32.ne i32.ne
) )
(func $~lib/set/Set<f64>#rehash (; 64 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/set/Set<f64>#rehash (; 66 ;) (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)
@ -5372,7 +5392,7 @@
i32.load offset=20 i32.load offset=20
i32.store offset=16 i32.store offset=16
) )
(func $~lib/set/Set<f64>#add (; 65 ;) (type $FUNCSIG$vid) (param $0 i32) (param $1 f64) (func $~lib/set/Set<f64>#add (; 67 ;) (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)
@ -5456,7 +5476,7 @@
i32.store i32.store
end end
) )
(func $~lib/set/Set<f64>#delete (; 66 ;) (type $FUNCSIG$vid) (param $0 i32) (param $1 f64) (func $~lib/set/Set<f64>#delete (; 68 ;) (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
@ -5518,7 +5538,7 @@
call $~lib/set/Set<f64>#rehash call $~lib/set/Set<f64>#rehash
end end
) )
(func $std/set/testNumeric<f64> (; 67 ;) (type $FUNCSIG$v) (func $std/set/testNumeric<f64> (; 69 ;) (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
@ -5763,7 +5783,7 @@
unreachable unreachable
end end
) )
(func $start (; 68 ;) (type $FUNCSIG$v) (func $start (; 70 ;) (type $FUNCSIG$v)
i32.const 152 i32.const 152
global.set $~lib/allocator/arena/startOffset global.set $~lib/allocator/arena/startOffset
global.get $~lib/allocator/arena/startOffset global.get $~lib/allocator/arena/startOffset
@ -5779,7 +5799,7 @@
call $std/set/testNumeric<f32> call $std/set/testNumeric<f32>
call $std/set/testNumeric<f64> call $std/set/testNumeric<f64>
) )
(func $null (; 69 ;) (type $FUNCSIG$v) (func $null (; 71 ;) (type $FUNCSIG$v)
nop nop
) )
) )

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,5 @@
(module (module
(type $FUNCSIG$vii (func (param i32 i32)))
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32)))
@ -14,7 +15,6 @@
(type $FUNCSIG$v (func)) (type $FUNCSIG$v (func))
(type $FUNCSIG$i (func (result i32))) (type $FUNCSIG$i (func (result i32)))
(type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32)))
(type $FUNCSIG$vii (func (param i32 i32)))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1) (memory $0 1)
(data (i32.const 8) "\01\00\00\00 ") (data (i32.const 8) "\01\00\00\00 ")
@ -161,9 +161,9 @@
(data (i32.const 2128) ",\00a\00,\00b\00,\00c") (data (i32.const 2128) ",\00a\00,\00b\00,\00c")
(data (i32.const 2144) "\01\00\00\00\0c") (data (i32.const 2144) "\01\00\00\00\0c")
(data (i32.const 2160) "a\00,\00b\00,\00c\00,") (data (i32.const 2160) "a\00,\00b\00,\00c\00,")
(data (i32.const 2176) "\03\00\00\00\90\01") (data (i32.const 2176) "\04\00\00\00\90\01")
(data (i32.const 2192) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") (data (i32.const 2192) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009")
(data (i32.const 2592) "\04\00\00\00\10") (data (i32.const 2592) "\05\00\00\00\10")
(data (i32.const 2608) "\90\08\00\00\90\08\00\00\90\01\00\00d") (data (i32.const 2608) "\90\08\00\00\90\08\00\00\90\01\00\00d")
(data (i32.const 2624) "\01\00\00\00\02") (data (i32.const 2624) "\01\00\00\00\02")
(data (i32.const 2640) "8") (data (i32.const 2640) "8")
@ -233,17 +233,17 @@
(data (i32.const 3880) "-\00I\00n\00f\00i\00n\00i\00t\00y") (data (i32.const 3880) "-\00I\00n\00f\00i\00n\00i\00t\00y")
(data (i32.const 3904) "\01\00\00\00\10") (data (i32.const 3904) "\01\00\00\00\10")
(data (i32.const 3920) "I\00n\00f\00i\00n\00i\00t\00y") (data (i32.const 3920) "I\00n\00f\00i\00n\00i\00t\00y")
(data (i32.const 3936) "\03\00\00\00\b8\02") (data (i32.const 3936) "\04\00\00\00\b8\02")
(data (i32.const 3952) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8<D\a7\a4\d9|\9b\fb\10D\a4\a7LLv\bb\1a\9c@\b6\ef\8e\ab\8b,\84W\a6\10\ef\1f\d0)1\91\e9\e5\a4\10\9b\9d\0c\9c\a1\fb\9b\10\e7)\f4;b\d9 (\ac\85\cf\a7z^KD\80-\dd\ac\03@\e4!\bf\8f\ffD^/\9cg\8eA\b8\8c\9c\9d\173\d4\a9\1b\e3\b4\92\db\19\9e\d9w\df\ban\bf\96\ebk\ee\f0\9b;\02\87\af") (data (i32.const 3952) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8<D\a7\a4\d9|\9b\fb\10D\a4\a7LLv\bb\1a\9c@\b6\ef\8e\ab\8b,\84W\a6\10\ef\1f\d0)1\91\e9\e5\a4\10\9b\9d\0c\9c\a1\fb\9b\10\e7)\f4;b\d9 (\ac\85\cf\a7z^KD\80-\dd\ac\03@\e4!\bf\8f\ffD^/\9cg\8eA\b8\8c\9c\9d\173\d4\a9\1b\e3\b4\92\db\19\9e\d9w\df\ban\bf\96\ebk\ee\f0\9b;\02\87\af")
(data (i32.const 4648) "\05\00\00\00\10") (data (i32.const 4648) "\07\00\00\00\10")
(data (i32.const 4664) "p\0f\00\00p\0f\00\00\b8\02\00\00W") (data (i32.const 4664) "p\0f\00\00p\0f\00\00\b8\02\00\00W")
(data (i32.const 4680) "\03\00\00\00\ae") (data (i32.const 4680) "\04\00\00\00\ae")
(data (i32.const 4696) "<\fbW\fbr\fb\8c\fb\a7\fb\c1\fb\dc\fb\f6\fb\11\fc,\fcF\fca\fc{\fc\96\fc\b1\fc\cb\fc\e6\fc\00\fd\1b\fd5\fdP\fdk\fd\85\fd\a0\fd\ba\fd\d5\fd\ef\fd\n\fe%\fe?\feZ\fet\fe\8f\fe\a9\fe\c4\fe\df\fe\f9\fe\14\ff.\ffI\ffc\ff~\ff\99\ff\b3\ff\ce\ff\e8\ff\03\00\1e\008\00S\00m\00\88\00\a2\00\bd\00\d8\00\f2\00\0d\01\'\01B\01\\\01w\01\92\01\ac\01\c7\01\e1\01\fc\01\16\021\02L\02f\02\81\02\9b\02\b6\02\d0\02\eb\02\06\03 \03;\03U\03p\03\8b\03\a5\03\c0\03\da\03\f5\03\0f\04*\04") (data (i32.const 4696) "<\fbW\fbr\fb\8c\fb\a7\fb\c1\fb\dc\fb\f6\fb\11\fc,\fcF\fca\fc{\fc\96\fc\b1\fc\cb\fc\e6\fc\00\fd\1b\fd5\fdP\fdk\fd\85\fd\a0\fd\ba\fd\d5\fd\ef\fd\n\fe%\fe?\feZ\fet\fe\8f\fe\a9\fe\c4\fe\df\fe\f9\fe\14\ff.\ffI\ffc\ff~\ff\99\ff\b3\ff\ce\ff\e8\ff\03\00\1e\008\00S\00m\00\88\00\a2\00\bd\00\d8\00\f2\00\0d\01\'\01B\01\\\01w\01\92\01\ac\01\c7\01\e1\01\fc\01\16\021\02L\02f\02\81\02\9b\02\b6\02\d0\02\eb\02\06\03 \03;\03U\03p\03\8b\03\a5\03\c0\03\da\03\f5\03\0f\04*\04")
(data (i32.const 4872) "\06\00\00\00\10") (data (i32.const 4872) "\t\00\00\00\10")
(data (i32.const 4888) "X\12\00\00X\12\00\00\ae\00\00\00W") (data (i32.const 4888) "X\12\00\00X\12\00\00\ae\00\00\00W")
(data (i32.const 4904) "\03\00\00\00(") (data (i32.const 4904) "\04\00\00\00(")
(data (i32.const 4920) "\01\00\00\00\n\00\00\00d\00\00\00\e8\03\00\00\10\'\00\00\a0\86\01\00@B\0f\00\80\96\98\00\00\e1\f5\05\00\ca\9a;") (data (i32.const 4920) "\01\00\00\00\n\00\00\00d\00\00\00\e8\03\00\00\10\'\00\00\a0\86\01\00@B\0f\00\80\96\98\00\00\e1\f5\05\00\ca\9a;")
(data (i32.const 4960) "\04\00\00\00\10") (data (i32.const 4960) "\05\00\00\00\10")
(data (i32.const 4976) "8\13\00\008\13\00\00(\00\00\00\n") (data (i32.const 4976) "8\13\00\008\13\00\00(\00\00\00\n")
(data (i32.const 4992) "\01\00\00\00*") (data (i32.const 4992) "\01\00\00\00*")
(data (i32.const 5008) "2\00.\002\002\000\004\004\006\000\004\009\002\005\000\003\001\003\00e\00-\001\006") (data (i32.const 5008) "2\00.\002\002\000\004\004\006\000\004\009\002\005\000\003\001\003\00e\00-\001\006")
@ -325,8 +325,8 @@
(data (i32.const 6680) "1\00.\001\00e\00-\006\004") (data (i32.const 6680) "1\00.\001\00e\00-\006\004")
(data (i32.const 6696) "\01\00\00\00\16") (data (i32.const 6696) "\01\00\00\00\16")
(data (i32.const 6712) "0\00.\000\000\000\000\003\005\006\008\009") (data (i32.const 6712) "0\00.\000\000\000\000\003\005\006\008\009")
(table $0 1 funcref) (table $0 11 funcref)
(elem (i32.const 0) $null) (elem (i32.const 0) $null $~lib/string/String~iterate $~lib/array/Array<~lib/string/String>~iterate $~lib/array/Array<~lib/string/String>~iterate $~lib/string/String~iterate $~lib/array/Array<u32>~iterate $~lib/array/Array<u32>~iterate $~lib/array/Array<u32>~iterate $~lib/array/Array<u32>~iterate $~lib/array/Array<u32>~iterate $~lib/array/Array<u32>~iterate)
(global $std/string/str (mut i32) (i32.const 24)) (global $std/string/str (mut i32) (i32.const 24))
(global $std/string/nullStr (mut i32) (i32.const 0)) (global $std/string/nullStr (mut i32) (i32.const 0))
(global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0))
@ -335,6 +335,7 @@
(global $std/string/a (mut i32) (i32.const 0)) (global $std/string/a (mut i32) (i32.const 0))
(global $std/string/b (mut i32) (i32.const 0)) (global $std/string/b (mut i32) (i32.const 0))
(global $std/string/sa (mut i32) (i32.const 0)) (global $std/string/sa (mut i32) (i32.const 0))
(global $~lib/argc (mut i32) (i32.const 0))
(global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0))
(global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0))
(global $~lib/util/number/_exp (mut i32) (i32.const 0)) (global $~lib/util/number/_exp (mut i32) (i32.const 0))
@ -347,7 +348,10 @@
(export "getString" (func $std/string/getString)) (export "getString" (func $std/string/getString))
(export ".capabilities" (global $~lib/capabilities)) (export ".capabilities" (global $~lib/capabilities))
(start $start) (start $start)
(func $~lib/allocator/arena/__mem_allocate (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/string/String~iterate (; 1 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
nop
)
(func $~lib/allocator/arena/__mem_allocate (; 2 ;) (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)
@ -409,7 +413,7 @@
global.set $~lib/allocator/arena/offset global.set $~lib/allocator/arena/offset
local.get $1 local.get $1
) )
(func $~lib/runtime/allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/runtime/allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
i32.const 1 i32.const 1
i32.const 32 i32.const 32
@ -436,7 +440,7 @@
i32.const 16 i32.const 16
i32.add i32.add
) )
(func $~lib/runtime/register (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/runtime/register (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
local.get $0 local.get $0
i32.const 6736 i32.const 6736
@ -469,7 +473,7 @@
i32.store i32.store
local.get $0 local.get $0
) )
(func $~lib/string/String.fromCharCode (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/string/String.fromCharCode (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
i32.const 2 i32.const 2
call $~lib/runtime/allocate call $~lib/runtime/allocate
@ -480,7 +484,7 @@
i32.const 1 i32.const 1
call $~lib/runtime/register call $~lib/runtime/register
) )
(func $~lib/util/string/compareImpl (; 5 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (func $~lib/util/string/compareImpl (; 6 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(local $4 i32) (local $4 i32)
local.get $1 local.get $1
i32.const 1 i32.const 1
@ -519,7 +523,7 @@
end end
local.get $4 local.get $4
) )
(func $~lib/string/String.__eq (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/string/String.__eq (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
local.get $0 local.get $0
local.get $1 local.get $1
@ -566,7 +570,7 @@
call $~lib/util/string/compareImpl call $~lib/util/string/compareImpl
i32.eqz i32.eqz
) )
(func $~lib/string/String.fromCodePoint (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/string/String.fromCodePoint (; 8 ;) (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
@ -621,7 +625,7 @@
i32.const 1 i32.const 1
call $~lib/runtime/register call $~lib/runtime/register
) )
(func $~lib/string/String#startsWith (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/string/String#startsWith (; 9 ;) (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)
@ -669,7 +673,7 @@
call $~lib/util/string/compareImpl call $~lib/util/string/compareImpl
i32.eqz i32.eqz
) )
(func $~lib/string/String#endsWith (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/string/String#endsWith (; 10 ;) (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)
@ -717,7 +721,7 @@
call $~lib/util/string/compareImpl call $~lib/util/string/compareImpl
i32.eqz i32.eqz
) )
(func $~lib/string/String#indexOf (; 10 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/string/String#indexOf (; 11 ;) (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)
@ -801,7 +805,7 @@
end end
i32.const -1 i32.const -1
) )
(func $~lib/util/memory/memcpy (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/util/memory/memcpy (; 12 ;) (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)
@ -1648,7 +1652,7 @@
i32.store8 i32.store8
end end
) )
(func $~lib/memory/memory.copy (; 12 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/memory/memory.copy (; 13 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
block $~lib/util/memory/memmove|inlined.0 block $~lib/util/memory/memmove|inlined.0
@ -1842,7 +1846,7 @@
end end
end end
) )
(func $~lib/memory/memory.repeat (; 13 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $~lib/memory/memory.repeat (; 14 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i32) (local $4 i32)
local.get $2 local.get $2
local.get $3 local.get $3
@ -1867,7 +1871,7 @@
end end
end end
) )
(func $~lib/string/String#padStart (; 14 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/string/String#padStart (; 15 ;) (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)
@ -1963,7 +1967,7 @@
i32.const 1 i32.const 1
call $~lib/runtime/register call $~lib/runtime/register
) )
(func $~lib/string/String#padEnd (; 15 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/string/String#padEnd (; 16 ;) (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)
@ -2060,7 +2064,7 @@
i32.const 1 i32.const 1
call $~lib/runtime/register call $~lib/runtime/register
) )
(func $~lib/string/String#lastIndexOf (; 16 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/string/String#lastIndexOf (; 17 ;) (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 $0 local.get $0
@ -2143,7 +2147,7 @@
end end
i32.const -1 i32.const -1
) )
(func $~lib/util/string/parse<f64> (; 17 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) (func $~lib/util/string/parse<f64> (; 18 ;) (type $FUNCSIG$di) (param $0 i32) (result f64)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
@ -2379,7 +2383,7 @@
local.get $5 local.get $5
f64.mul f64.mul
) )
(func $~lib/string/parseFloat (; 18 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) (func $~lib/string/parseFloat (; 19 ;) (type $FUNCSIG$di) (param $0 i32) (result f64)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 f64) (local $3 f64)
@ -2549,7 +2553,7 @@
local.get $3 local.get $3
f64.mul f64.mul
) )
(func $~lib/string/String#concat (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/string/String#concat (; 20 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -2598,7 +2602,7 @@
i32.const 1 i32.const 1
call $~lib/runtime/register call $~lib/runtime/register
) )
(func $~lib/string/String.__concat (; 20 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/string/String.__concat (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
i32.const 312 i32.const 312
local.get $0 local.get $0
@ -2606,13 +2610,13 @@
local.get $1 local.get $1
call $~lib/string/String#concat call $~lib/string/String#concat
) )
(func $~lib/string/String.__ne (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/string/String.__ne (; 22 ;) (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/string/String.__eq call $~lib/string/String.__eq
i32.eqz i32.eqz
) )
(func $~lib/string/String.__gt (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/string/String.__gt (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
block (result i32) block (result i32)
@ -2677,7 +2681,7 @@
i32.const 0 i32.const 0
i32.gt_s i32.gt_s
) )
(func $~lib/string/String.__lt (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/string/String.__lt (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
block (result i32) block (result i32)
@ -2742,19 +2746,19 @@
i32.const 0 i32.const 0
i32.lt_s i32.lt_s
) )
(func $~lib/string/String.__gte (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/string/String.__gte (; 25 ;) (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/string/String.__lt call $~lib/string/String.__lt
i32.eqz i32.eqz
) )
(func $~lib/string/String.__lte (; 25 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/string/String.__lte (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
i32.const 416 i32.const 416
local.get $0 local.get $0
call $~lib/string/String.__gt call $~lib/string/String.__gt
i32.eqz i32.eqz
) )
(func $~lib/string/String#repeat (; 26 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/string/String#repeat (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
local.get $0 local.get $0
@ -2834,7 +2838,7 @@
i32.const 1 i32.const 1
call $~lib/runtime/register call $~lib/runtime/register
) )
(func $~lib/string/String#slice (; 27 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/string/String#slice (; 28 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32) (local $3 i32)
local.get $0 local.get $0
i32.const 16 i32.const 16
@ -2912,7 +2916,44 @@
i32.const 1 i32.const 1
call $~lib/runtime/register call $~lib/runtime/register
) )
(func $~lib/runtime/makeArray (; 28 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/array/Array<~lib/string/String>~iterate (; 29 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
i32.const 1
global.set $~lib/argc
local.get $0
i32.load
local.get $1
call_indirect (type $FUNCSIG$vi)
local.get $0
i32.load offset=4
local.tee $2
local.get $0
i32.load offset=8
i32.add
local.set $0
loop $continue|0
local.get $2
local.get $0
i32.lt_u
if
local.get $2
i32.load
local.set $3
i32.const 1
global.set $~lib/argc
local.get $3
local.get $1
call_indirect (type $FUNCSIG$vi)
local.get $2
i32.const 4
i32.add
local.set $2
br $continue|0
end
end
)
(func $~lib/runtime/makeArray (; 30 ;) (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)
@ -2927,7 +2968,7 @@
i32.shl i32.shl
local.tee $2 local.tee $2
call $~lib/runtime/allocate call $~lib/runtime/allocate
i32.const 3 i32.const 4
call $~lib/runtime/register call $~lib/runtime/register
local.tee $3 local.tee $3
local.set $4 local.set $4
@ -2948,7 +2989,7 @@
i32.store offset=12 i32.store offset=12
local.get $1 local.get $1
) )
(func $~lib/memory/memory.fill (; 29 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/memory/memory.fill (; 31 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
block $~lib/util/memory/memset|inlined.0 block $~lib/util/memory/memset|inlined.0
local.get $1 local.get $1
@ -3159,7 +3200,7 @@
end end
end end
) )
(func $~lib/runtime/reallocate (; 30 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/runtime/reallocate (; 32 ;) (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)
@ -3261,7 +3302,7 @@
i32.store offset=4 i32.store offset=4
local.get $0 local.get $0
) )
(func $~lib/array/ensureCapacity (; 31 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/array/ensureCapacity (; 33 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
local.get $1 local.get $1
@ -3310,7 +3351,7 @@
i32.store offset=8 i32.store offset=8
end end
) )
(func $~lib/array/Array<~lib/string/String>#push (; 32 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/array/Array<~lib/string/String>#push (; 34 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
local.get $0 local.get $0
@ -3340,7 +3381,7 @@
local.get $3 local.get $3
i32.store offset=12 i32.store offset=12
) )
(func $~lib/string/String#split (; 33 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/string/String#split (; 35 ;) (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)
@ -3579,7 +3620,7 @@
i32.const 0 i32.const 0
call $~lib/runtime/makeArray call $~lib/runtime/makeArray
) )
(func $~lib/array/Array<~lib/string/String>#__get (; 34 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/array/Array<~lib/string/String>#__get (; 36 ;) (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=12 i32.load offset=12
@ -3614,7 +3655,7 @@
i32.add i32.add
i32.load i32.load
) )
(func $~lib/util/number/decimalCount32 (; 35 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/util/number/decimalCount32 (; 37 ;) (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
@ -3668,7 +3709,15 @@
end end
end end
) )
(func $~lib/util/number/utoa32_lut (; 36 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/array/Array<u32>~iterate (; 38 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
i32.const 1
global.set $~lib/argc
local.get $0
i32.load
local.get $1
call_indirect (type $FUNCSIG$vi)
)
(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 2612 i32.const 2612
@ -3778,7 +3827,7 @@
i32.store16 i32.store16
end end
) )
(func $~lib/util/number/itoa32 (; 37 ;) (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)
@ -3820,7 +3869,7 @@
i32.const 1 i32.const 1
call $~lib/runtime/register call $~lib/runtime/register
) )
(func $~lib/util/number/utoa32 (; 38 ;) (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
@ -3843,7 +3892,7 @@
i32.const 1 i32.const 1
call $~lib/runtime/register call $~lib/runtime/register
) )
(func $~lib/util/number/decimalCount64 (; 39 ;) (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
@ -3897,7 +3946,7 @@
end end
end end
) )
(func $~lib/util/number/utoa64_lut (; 40 ;) (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)
@ -3994,7 +4043,7 @@
local.get $2 local.get $2
call $~lib/util/number/utoa32_lut call $~lib/util/number/utoa32_lut
) )
(func $~lib/util/number/utoa64 (; 41 ;) (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)
@ -4036,7 +4085,7 @@
i32.const 1 i32.const 1
call $~lib/runtime/register call $~lib/runtime/register
) )
(func $~lib/util/number/itoa64 (; 42 ;) (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)
@ -4101,7 +4150,7 @@
i32.const 1 i32.const 1
call $~lib/runtime/register call $~lib/runtime/register
) )
(func $~lib/util/number/genDigits (; 43 ;) (type $FUNCSIG$iijijiji) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) (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)
@ -4516,7 +4565,7 @@
local.get $6 local.get $6
end end
) )
(func $~lib/util/number/prettify (; 44 ;) (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
@ -4775,7 +4824,7 @@
end end
end end
) )
(func $~lib/util/number/dtoa_core (; 45 ;) (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 i64) (local $2 i64)
(local $3 i32) (local $3 i32)
(local $4 i64) (local $4 i64)
@ -5063,7 +5112,7 @@
local.get $10 local.get $10
i32.add i32.add
) )
(func $~lib/string/String#substring (; 46 ;) (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)
@ -5159,7 +5208,7 @@
i32.const 1 i32.const 1
call $~lib/runtime/register call $~lib/runtime/register
) )
(func $~lib/runtime/discard (; 47 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/runtime/discard (; 50 ;) (type $FUNCSIG$vi) (param $0 i32)
local.get $0 local.get $0
i32.const 6736 i32.const 6736
i32.le_u i32.le_u
@ -5186,7 +5235,7 @@
unreachable unreachable
end end
) )
(func $~lib/util/number/dtoa (; 48 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) (func $~lib/util/number/dtoa (; 51 ;) (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
@ -5231,7 +5280,7 @@
call $~lib/runtime/discard call $~lib/runtime/discard
local.get $1 local.get $1
) )
(func $start:std/string (; 49 ;) (type $FUNCSIG$v) (func $start:std/string (; 52 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
global.get $std/string/str global.get $std/string/str
i32.const 24 i32.const 24
@ -8558,13 +8607,13 @@
unreachable unreachable
end end
) )
(func $std/string/getString (; 50 ;) (type $FUNCSIG$i) (result i32) (func $std/string/getString (; 53 ;) (type $FUNCSIG$i) (result i32)
global.get $std/string/str global.get $std/string/str
) )
(func $start (; 51 ;) (type $FUNCSIG$v) (func $start (; 54 ;) (type $FUNCSIG$v)
call $start:std/string call $start:std/string
) )
(func $null (; 52 ;) (type $FUNCSIG$v) (func $null (; 55 ;) (type $FUNCSIG$v)
nop nop
) )
) )

View File

@ -1,4 +1,5 @@
(module (module
(type $FUNCSIG$vii (func (param i32 i32)))
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32)))
@ -9,7 +10,6 @@
(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$iiiii (func (param i32 i32 i32 i32) (result i32))) (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32)))
(type $FUNCSIG$vii (func (param i32 i32)))
(type $FUNCSIG$ij (func (param i64) (result i32))) (type $FUNCSIG$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)))
@ -93,8 +93,8 @@
(data (i32.const 2080) "\01\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00a\00,\00b\00,\00,\00c\00") (data (i32.const 2080) "\01\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00a\00,\00b\00,\00,\00c\00")
(data (i32.const 2112) "\01\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00,\00a\00,\00b\00,\00c\00") (data (i32.const 2112) "\01\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00,\00a\00,\00b\00,\00c\00")
(data (i32.const 2144) "\01\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00a\00,\00b\00,\00c\00,\00") (data (i32.const 2144) "\01\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00a\00,\00b\00,\00c\00,\00")
(data (i32.const 2176) "\03\00\00\00\90\01\00\00\00\00\00\00\00\00\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") (data (i32.const 2176) "\04\00\00\00\90\01\00\00\00\00\00\00\00\00\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00")
(data (i32.const 2592) "\04\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\90\08\00\00\90\08\00\00\90\01\00\00d\00\00\00") (data (i32.const 2592) "\05\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\90\08\00\00\90\08\00\00\90\01\00\00d\00\00\00")
(data (i32.const 2624) "\01\00\00\00\02\00\00\00\00\00\00\00\00\00\00\008\00") (data (i32.const 2624) "\01\00\00\00\02\00\00\00\00\00\00\00\00\00\00\008\00")
(data (i32.const 2648) "\01\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00-\001\000\000\000\00") (data (i32.const 2648) "\01\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00-\001\000\000\000\00")
(data (i32.const 2680) "\01\00\00\00\08\00\00\00\00\00\00\00\00\00\00\001\002\003\004\00") (data (i32.const 2680) "\01\00\00\00\08\00\00\00\00\00\00\00\00\00\00\001\002\003\004\00")
@ -129,12 +129,12 @@
(data (i32.const 3840) "\01\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00N\00a\00N\00") (data (i32.const 3840) "\01\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00N\00a\00N\00")
(data (i32.const 3864) "\01\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00") (data (i32.const 3864) "\01\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00")
(data (i32.const 3904) "\01\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00") (data (i32.const 3904) "\01\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00")
(data (i32.const 3936) "\03\00\00\00\b8\02\00\00\00\00\00\00\00\00\00\00\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8<D\a7\a4\d9|\9b\fb\10D\a4\a7LLv\bb\1a\9c@\b6\ef\8e\ab\8b,\84W\a6\10\ef\1f\d0)1\91\e9\e5\a4\10\9b\9d\0c\9c\a1\fb\9b\10\e7)\f4;b\d9 (\ac\85\cf\a7z^KD\80-\dd\ac\03@\e4!\bf\8f\ffD^/\9cg\8eA\b8\8c\9c\9d\173\d4\a9\1b\e3\b4\92\db\19\9e\d9w\df\ban\bf\96\ebk\ee\f0\9b;\02\87\af") (data (i32.const 3936) "\04\00\00\00\b8\02\00\00\00\00\00\00\00\00\00\00\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8<D\a7\a4\d9|\9b\fb\10D\a4\a7LLv\bb\1a\9c@\b6\ef\8e\ab\8b,\84W\a6\10\ef\1f\d0)1\91\e9\e5\a4\10\9b\9d\0c\9c\a1\fb\9b\10\e7)\f4;b\d9 (\ac\85\cf\a7z^KD\80-\dd\ac\03@\e4!\bf\8f\ffD^/\9cg\8eA\b8\8c\9c\9d\173\d4\a9\1b\e3\b4\92\db\19\9e\d9w\df\ban\bf\96\ebk\ee\f0\9b;\02\87\af")
(data (i32.const 4648) "\05\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00p\0f\00\00p\0f\00\00\b8\02\00\00W\00\00\00") (data (i32.const 4648) "\07\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00p\0f\00\00p\0f\00\00\b8\02\00\00W\00\00\00")
(data (i32.const 4680) "\03\00\00\00\ae\00\00\00\00\00\00\00\00\00\00\00<\fbW\fbr\fb\8c\fb\a7\fb\c1\fb\dc\fb\f6\fb\11\fc,\fcF\fca\fc{\fc\96\fc\b1\fc\cb\fc\e6\fc\00\fd\1b\fd5\fdP\fdk\fd\85\fd\a0\fd\ba\fd\d5\fd\ef\fd\n\fe%\fe?\feZ\fet\fe\8f\fe\a9\fe\c4\fe\df\fe\f9\fe\14\ff.\ffI\ffc\ff~\ff\99\ff\b3\ff\ce\ff\e8\ff\03\00\1e\008\00S\00m\00\88\00\a2\00\bd\00\d8\00\f2\00\0d\01\'\01B\01\\\01w\01\92\01\ac\01\c7\01\e1\01\fc\01\16\021\02L\02f\02\81\02\9b\02\b6\02\d0\02\eb\02\06\03 \03;\03U\03p\03\8b\03\a5\03\c0\03\da\03\f5\03\0f\04*\04") (data (i32.const 4680) "\04\00\00\00\ae\00\00\00\00\00\00\00\00\00\00\00<\fbW\fbr\fb\8c\fb\a7\fb\c1\fb\dc\fb\f6\fb\11\fc,\fcF\fca\fc{\fc\96\fc\b1\fc\cb\fc\e6\fc\00\fd\1b\fd5\fdP\fdk\fd\85\fd\a0\fd\ba\fd\d5\fd\ef\fd\n\fe%\fe?\feZ\fet\fe\8f\fe\a9\fe\c4\fe\df\fe\f9\fe\14\ff.\ffI\ffc\ff~\ff\99\ff\b3\ff\ce\ff\e8\ff\03\00\1e\008\00S\00m\00\88\00\a2\00\bd\00\d8\00\f2\00\0d\01\'\01B\01\\\01w\01\92\01\ac\01\c7\01\e1\01\fc\01\16\021\02L\02f\02\81\02\9b\02\b6\02\d0\02\eb\02\06\03 \03;\03U\03p\03\8b\03\a5\03\c0\03\da\03\f5\03\0f\04*\04")
(data (i32.const 4872) "\06\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00X\12\00\00X\12\00\00\ae\00\00\00W\00\00\00") (data (i32.const 4872) "\t\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00X\12\00\00X\12\00\00\ae\00\00\00W\00\00\00")
(data (i32.const 4904) "\03\00\00\00(\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00d\00\00\00\e8\03\00\00\10\'\00\00\a0\86\01\00@B\0f\00\80\96\98\00\00\e1\f5\05\00\ca\9a;") (data (i32.const 4904) "\04\00\00\00(\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00d\00\00\00\e8\03\00\00\10\'\00\00\a0\86\01\00@B\0f\00\80\96\98\00\00\e1\f5\05\00\ca\9a;")
(data (i32.const 4960) "\04\00\00\00\10\00\00\00\00\00\00\00\00\00\00\008\13\00\008\13\00\00(\00\00\00\n\00\00\00") (data (i32.const 4960) "\05\00\00\00\10\00\00\00\00\00\00\00\00\00\00\008\13\00\008\13\00\00(\00\00\00\n\00\00\00")
(data (i32.const 4992) "\01\00\00\00*\00\00\00\00\00\00\00\00\00\00\002\00.\002\002\000\004\004\006\000\004\009\002\005\000\003\001\003\00e\00-\001\006\00") (data (i32.const 4992) "\01\00\00\00*\00\00\00\00\00\00\00\00\00\00\002\00.\002\002\000\004\004\006\000\004\009\002\005\000\003\001\003\00e\00-\001\006\00")
(data (i32.const 5056) "\01\00\00\00,\00\00\00\00\00\00\00\00\00\00\00-\002\00.\002\002\000\004\004\006\000\004\009\002\005\000\003\001\003\00e\00-\001\006\00") (data (i32.const 5056) "\01\00\00\00,\00\00\00\00\00\00\00\00\00\00\00-\002\00.\002\002\000\004\004\006\000\004\009\002\005\000\003\001\003\00e\00-\001\006\00")
(data (i32.const 5120) "\01\00\00\00.\00\00\00\00\00\00\00\00\00\00\001\00.\007\009\007\006\009\003\001\003\004\008\006\002\003\001\005\007\00e\00+\003\000\008\00") (data (i32.const 5120) "\01\00\00\00.\00\00\00\00\00\00\00\00\00\00\001\00.\007\009\007\006\009\003\001\003\004\008\006\002\003\001\005\007\00e\00+\003\000\008\00")
@ -175,8 +175,8 @@
(data (i32.const 6632) "\01\00\00\00\10\00\00\00\00\00\00\00\00\00\00\001\00.\001\00e\00+\001\002\008\00") (data (i32.const 6632) "\01\00\00\00\10\00\00\00\00\00\00\00\00\00\00\001\00.\001\00e\00+\001\002\008\00")
(data (i32.const 6664) "\01\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\001\00.\001\00e\00-\006\004\00") (data (i32.const 6664) "\01\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\001\00.\001\00e\00-\006\004\00")
(data (i32.const 6696) "\01\00\00\00\16\00\00\00\00\00\00\00\00\00\00\000\00.\000\000\000\000\003\005\006\008\009\00") (data (i32.const 6696) "\01\00\00\00\16\00\00\00\00\00\00\00\00\00\00\000\00.\000\000\000\000\003\005\006\008\009\00")
(table $0 1 funcref) (table $0 11 funcref)
(elem (i32.const 0) $null) (elem (i32.const 0) $null $~lib/string/String~iterate $~lib/array/Array<~lib/string/String>~iterate $~lib/array/Array<~lib/string/String>~iterate $~lib/arraybuffer/ArrayBuffer~iterate $~lib/array/Array<u32>~iterate $~lib/array/Array<u32>~iterate $~lib/array/Array<u64>~iterate $~lib/array/Array<u64>~iterate $~lib/array/Array<i16>~iterate $~lib/array/Array<i16>~iterate)
(global $~lib/runtime/HEADER_SIZE i32 (i32.const 16)) (global $~lib/runtime/HEADER_SIZE i32 (i32.const 16))
(global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) (global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049))
(global $std/string/str (mut i32) (i32.const 24)) (global $std/string/str (mut i32) (i32.const 24))
@ -190,6 +190,7 @@
(global $std/string/a (mut i32) (i32.const 0)) (global $std/string/a (mut i32) (i32.const 0))
(global $std/string/b (mut i32) (i32.const 0)) (global $std/string/b (mut i32) (i32.const 0))
(global $std/string/sa (mut i32) (i32.const 0)) (global $std/string/sa (mut i32) (i32.const 0))
(global $~lib/argc (mut i32) (i32.const 0))
(global $~lib/runtime/MAX_BYTELENGTH i32 (i32.const 1073741808)) (global $~lib/runtime/MAX_BYTELENGTH i32 (i32.const 1073741808))
(global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0))
(global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1))
@ -211,7 +212,10 @@
(export "getString" (func $std/string/getString)) (export "getString" (func $std/string/getString))
(export ".capabilities" (global $~lib/capabilities)) (export ".capabilities" (global $~lib/capabilities))
(start $start) (start $start)
(func $~lib/string/String#get:length (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/string/String~iterate (; 1 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32)
)
(func $~lib/string/String#get:length (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
global.get $~lib/runtime/HEADER_SIZE global.get $~lib/runtime/HEADER_SIZE
i32.sub i32.sub
@ -219,7 +223,7 @@
i32.const 1 i32.const 1
i32.shr_u i32.shr_u
) )
(func $~lib/string/String#charCodeAt (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/string/String#charCodeAt (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $1 local.get $1
local.get $0 local.get $0
call $~lib/string/String#get:length call $~lib/string/String#get:length
@ -235,7 +239,7 @@
i32.add i32.add
i32.load16_u i32.load16_u
) )
(func $~lib/runtime/ADJUSTOBLOCK (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/runtime/ADJUSTOBLOCK (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
i32.const 1 i32.const 1
i32.const 32 i32.const 32
local.get $0 local.get $0
@ -247,7 +251,7 @@
i32.sub i32.sub
i32.shl i32.shl
) )
(func $~lib/allocator/arena/__mem_allocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/allocator/arena/__mem_allocate (; 5 ;) (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)
@ -326,12 +330,12 @@
global.set $~lib/allocator/arena/offset global.set $~lib/allocator/arena/offset
local.get $1 local.get $1
) )
(func $~lib/memory/memory.allocate (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/memory/memory.allocate (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0 local.get $0
call $~lib/allocator/arena/__mem_allocate call $~lib/allocator/arena/__mem_allocate
return return
) )
(func $~lib/runtime/allocate (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/runtime/allocate (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
local.get $0 local.get $0
call $~lib/runtime/ADJUSTOBLOCK call $~lib/runtime/ADJUSTOBLOCK
@ -353,10 +357,10 @@
global.get $~lib/runtime/HEADER_SIZE global.get $~lib/runtime/HEADER_SIZE
i32.add i32.add
) )
(func $~lib/collector/dummy/__ref_register (; 7 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/collector/dummy/__ref_register (; 8 ;) (type $FUNCSIG$vi) (param $0 i32)
nop nop
) )
(func $~lib/runtime/register (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/runtime/register (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
local.get $0 local.get $0
global.get $~lib/memory/HEAP_BASE global.get $~lib/memory/HEAP_BASE
@ -394,7 +398,7 @@
call $~lib/collector/dummy/__ref_register call $~lib/collector/dummy/__ref_register
local.get $0 local.get $0
) )
(func $~lib/string/String.fromCharCode (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/string/String.fromCharCode (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
block $~lib/runtime/ALLOCATE|inlined.0 (result i32) block $~lib/runtime/ALLOCATE|inlined.0 (result i32)
@ -415,7 +419,7 @@
call $~lib/runtime/register call $~lib/runtime/register
end end
) )
(func $~lib/util/string/compareImpl (; 10 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (func $~lib/util/string/compareImpl (; 11 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32)
(local $5 i32) (local $5 i32)
(local $6 i32) (local $6 i32)
(local $7 i32) (local $7 i32)
@ -468,7 +472,7 @@
end end
local.get $5 local.get $5
) )
(func $~lib/string/String.__eq (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/string/String.__eq (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
local.get $0 local.get $0
@ -512,7 +516,7 @@
call $~lib/util/string/compareImpl call $~lib/util/string/compareImpl
i32.eqz i32.eqz
) )
(func $~lib/string/String.fromCodePoint (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/string/String.fromCodePoint (; 13 ;) (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)
@ -583,7 +587,7 @@
call $~lib/runtime/register call $~lib/runtime/register
end end
) )
(func $~lib/string/String#startsWith (; 13 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/string/String#startsWith (; 14 ;) (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)
@ -650,7 +654,7 @@
call $~lib/util/string/compareImpl call $~lib/util/string/compareImpl
i32.eqz i32.eqz
) )
(func $~lib/string/String#endsWith (; 14 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/string/String#endsWith (; 15 ;) (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)
@ -714,7 +718,7 @@
call $~lib/util/string/compareImpl call $~lib/util/string/compareImpl
i32.eqz i32.eqz
) )
(func $~lib/string/String#indexOf (; 15 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/string/String#indexOf (; 16 ;) (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)
@ -808,7 +812,7 @@
end end
i32.const -1 i32.const -1
) )
(func $~lib/util/memory/memcpy (; 16 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/util/memory/memcpy (; 17 ;) (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)
@ -2009,7 +2013,7 @@
i32.store8 i32.store8
end end
) )
(func $~lib/memory/memory.copy (; 17 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/memory/memory.copy (; 18 ;) (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)
@ -2240,7 +2244,7 @@
end end
end end
) )
(func $~lib/memory/memory.repeat (; 18 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $~lib/memory/memory.repeat (; 19 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i32) (local $4 i32)
(local $5 i32) (local $5 i32)
i32.const 0 i32.const 0
@ -2272,7 +2276,7 @@
end end
end end
) )
(func $~lib/string/String#padStart (; 19 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/string/String#padStart (; 20 ;) (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)
@ -2381,7 +2385,7 @@
call $~lib/runtime/register call $~lib/runtime/register
end end
) )
(func $~lib/string/String#padEnd (; 20 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/string/String#padEnd (; 21 ;) (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)
@ -2494,7 +2498,7 @@
call $~lib/runtime/register call $~lib/runtime/register
end end
) )
(func $~lib/string/String#lastIndexOf (; 21 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/string/String#lastIndexOf (; 22 ;) (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)
@ -2586,7 +2590,7 @@
end end
i32.const -1 i32.const -1
) )
(func $~lib/util/string/parse<f64> (; 22 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) (func $~lib/util/string/parse<f64> (; 23 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -2887,12 +2891,12 @@
local.get $7 local.get $7
f64.mul f64.mul
) )
(func $~lib/string/parseInt (; 23 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) (func $~lib/string/parseInt (; 24 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64)
local.get $0 local.get $0
local.get $1 local.get $1
call $~lib/util/string/parse<f64> call $~lib/util/string/parse<f64>
) )
(func $~lib/string/parseFloat (; 24 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) (func $~lib/string/parseFloat (; 25 ;) (type $FUNCSIG$di) (param $0 i32) (result f64)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
@ -3089,7 +3093,7 @@
local.get $5 local.get $5
f64.mul f64.mul
) )
(func $~lib/string/String#concat (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/string/String#concat (; 26 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32) (local $2 i32)
(local $3 i32) (local $3 i32)
(local $4 i32) (local $4 i32)
@ -3148,7 +3152,7 @@
call $~lib/runtime/register call $~lib/runtime/register
end end
) )
(func $~lib/string/String.__concat (; 26 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/string/String.__concat (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
i32.const 312 i32.const 312
local.get $0 local.get $0
@ -3158,13 +3162,13 @@
local.get $1 local.get $1
call $~lib/string/String#concat call $~lib/string/String#concat
) )
(func $~lib/string/String.__ne (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/string/String.__ne (; 28 ;) (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/string/String.__eq call $~lib/string/String.__eq
i32.eqz i32.eqz
) )
(func $~lib/string/String.__gt (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/string/String.__gt (; 29 ;) (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)
@ -3226,7 +3230,7 @@
i32.const 0 i32.const 0
i32.gt_s i32.gt_s
) )
(func $~lib/string/String.__lt (; 29 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/string/String.__lt (; 30 ;) (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)
@ -3288,19 +3292,19 @@
i32.const 0 i32.const 0
i32.lt_s i32.lt_s
) )
(func $~lib/string/String.__gte (; 30 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/string/String.__gte (; 31 ;) (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/string/String.__lt call $~lib/string/String.__lt
i32.eqz i32.eqz
) )
(func $~lib/string/String.__lte (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/string/String.__lte (; 32 ;) (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/string/String.__gt call $~lib/string/String.__gt
i32.eqz i32.eqz
) )
(func $~lib/string/String#repeat (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/string/String#repeat (; 33 ;) (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)
@ -3391,7 +3395,7 @@
call $~lib/runtime/register call $~lib/runtime/register
end end
) )
(func $~lib/string/String#slice (; 33 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/string/String#slice (; 34 ;) (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)
@ -3489,13 +3493,62 @@
call $~lib/runtime/register call $~lib/runtime/register
end end
) )
(func $~lib/collector/dummy/__ref_link (; 34 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/array/Array<~lib/string/String>~iterate (; 35 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
i32.const 1
global.set $~lib/argc
local.get $0
i32.load
local.get $1
call_indirect (type $FUNCSIG$vi)
local.get $0
i32.load offset=4
local.set $2
local.get $2
local.get $0
i32.load offset=8
i32.add
local.set $3
block $break|0
loop $continue|0
local.get $2
local.get $3
i32.lt_u
if
block
local.get $2
i32.load
local.set $4
i32.const 1
global.set $~lib/argc
local.get $4
local.get $1
call_indirect (type $FUNCSIG$vi)
local.get $4
local.get $1
call $~lib/string/String~iterate
local.get $2
i32.const 4
i32.add
local.set $2
end
br $continue|0
end
end
end
)
(func $~lib/arraybuffer/ArrayBuffer~iterate (; 36 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32)
)
(func $~lib/collector/dummy/__ref_link (; 37 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
nop nop
) )
(func $~lib/collector/dummy/__ref_unlink (; 35 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (func $~lib/collector/dummy/__ref_unlink (; 38 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
nop nop
) )
(func $~lib/runtime/makeArray (; 36 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (func $~lib/runtime/makeArray (; 39 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(local $4 i32) (local $4 i32)
(local $5 i32) (local $5 i32)
(local $6 i32) (local $6 i32)
@ -3515,7 +3568,7 @@
local.get $2 local.get $2
i32.shl i32.shl
call $~lib/runtime/allocate call $~lib/runtime/allocate
i32.const 3 i32.const 4
call $~lib/runtime/register call $~lib/runtime/register
local.set $6 local.set $6
local.get $4 local.get $4
@ -3559,7 +3612,7 @@
end end
local.get $4 local.get $4
) )
(func $~lib/memory/memory.fill (; 37 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/memory/memory.fill (; 40 ;) (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)
@ -3816,14 +3869,14 @@
end end
end end
) )
(func $~lib/allocator/arena/__mem_free (; 38 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/allocator/arena/__mem_free (; 41 ;) (type $FUNCSIG$vi) (param $0 i32)
nop nop
) )
(func $~lib/memory/memory.free (; 39 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/memory/memory.free (; 42 ;) (type $FUNCSIG$vi) (param $0 i32)
local.get $0 local.get $0
call $~lib/allocator/arena/__mem_free call $~lib/allocator/arena/__mem_free
) )
(func $~lib/runtime/reallocate (; 40 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/runtime/reallocate (; 43 ;) (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)
@ -3927,7 +3980,7 @@
i32.store offset=4 i32.store offset=4
local.get $0 local.get $0
) )
(func $~lib/array/ensureCapacity (; 41 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/array/ensureCapacity (; 44 ;) (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)
@ -4007,7 +4060,7 @@
i32.store offset=8 i32.store offset=8
end end
) )
(func $~lib/array/Array<~lib/string/String>#push (; 42 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/array/Array<~lib/string/String>#push (; 45 ;) (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)
@ -4057,7 +4110,7 @@
i32.store offset=12 i32.store offset=12
local.get $3 local.get $3
) )
(func $~lib/array/Array<~lib/string/String>#__unchecked_set (; 43 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (func $~lib/array/Array<~lib/string/String>#__unchecked_set (; 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.get $0 local.get $0
@ -4090,7 +4143,7 @@
call $~lib/collector/dummy/__ref_link call $~lib/collector/dummy/__ref_link
end end
) )
(func $~lib/string/String#split (; 44 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/string/String#split (; 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 $5 i32) (local $5 i32)
@ -4456,11 +4509,11 @@
end end
local.get $10 local.get $10
) )
(func $~lib/array/Array<~lib/string/String>#get:length (; 45 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/array/Array<~lib/string/String>#get:length (; 48 ;) (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<~lib/string/String>#__unchecked_get (; 46 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 49 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
i32.load offset=4 i32.load offset=4
local.get $1 local.get $1
@ -4469,7 +4522,7 @@
i32.add i32.add
i32.load i32.load
) )
(func $~lib/array/Array<~lib/string/String>#__get (; 47 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/array/Array<~lib/string/String>#__get (; 50 ;) (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=12 i32.load offset=12
@ -4500,7 +4553,7 @@
local.get $1 local.get $1
call $~lib/array/Array<~lib/string/String>#__unchecked_get call $~lib/array/Array<~lib/string/String>#__unchecked_get
) )
(func $~lib/util/number/decimalCount32 (; 48 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/util/number/decimalCount32 (; 51 ;) (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
@ -4569,7 +4622,15 @@
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/array/Array<u32>~iterate (; 52 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
i32.const 1
global.set $~lib/argc
local.get $0
i32.load
local.get $1
call_indirect (type $FUNCSIG$vi)
)
(func $~lib/util/number/utoa32_lut (; 53 ;) (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)
@ -4712,7 +4773,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 (; 54 ;) (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)
@ -4776,7 +4837,7 @@
call $~lib/runtime/register call $~lib/runtime/register
end end
) )
(func $~lib/util/number/utoa32 (; 51 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (func $~lib/util/number/utoa32 (; 55 ;) (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)
@ -4820,7 +4881,7 @@
call $~lib/runtime/register call $~lib/runtime/register
end end
) )
(func $~lib/util/number/decimalCount64 (; 52 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (func $~lib/util/number/decimalCount64 (; 56 ;) (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
@ -4889,7 +4950,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 (; 57 ;) (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)
@ -5017,7 +5078,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 (; 58 ;) (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)
@ -5097,7 +5158,7 @@
call $~lib/runtime/register call $~lib/runtime/register
end end
) )
(func $~lib/util/number/itoa64 (; 55 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (func $~lib/util/number/itoa64 (; 59 ;) (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)
@ -5199,19 +5260,27 @@
call $~lib/runtime/register call $~lib/runtime/register
end end
) )
(func $~lib/builtins/isFinite<f64> (; 56 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) (func $~lib/builtins/isFinite<f64> (; 60 ;) (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> (; 61 ;) (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/array/Array<u64>#__unchecked_get (; 58 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (func $~lib/array/Array<u64>~iterate (; 62 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
i32.const 1
global.set $~lib/argc
local.get $0
i32.load
local.get $1
call_indirect (type $FUNCSIG$vi)
)
(func $~lib/array/Array<u64>#__unchecked_get (; 63 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64)
local.get $0 local.get $0
i32.load offset=4 i32.load offset=4
local.get $1 local.get $1
@ -5220,7 +5289,15 @@
i32.add i32.add
i64.load i64.load
) )
(func $~lib/array/Array<i16>#__unchecked_get (; 59 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (func $~lib/array/Array<i16>~iterate (; 64 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
i32.const 1
global.set $~lib/argc
local.get $0
i32.load
local.get $1
call_indirect (type $FUNCSIG$vi)
)
(func $~lib/array/Array<i16>#__unchecked_get (; 65 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0 local.get $0
i32.load offset=4 i32.load offset=4
local.get $1 local.get $1
@ -5229,7 +5306,7 @@
i32.add i32.add
i32.load16_s i32.load16_s
) )
(func $~lib/util/number/genDigits (; 60 ;) (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 (; 66 ;) (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)
@ -5800,7 +5877,7 @@
end end
local.get $15 local.get $15
) )
(func $~lib/util/number/prettify (; 61 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/util/number/prettify (; 67 ;) (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)
@ -6133,7 +6210,7 @@
unreachable unreachable
unreachable unreachable
) )
(func $~lib/util/number/dtoa_core (; 62 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (func $~lib/util/number/dtoa_core (; 68 ;) (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)
@ -6571,7 +6648,7 @@
local.get $2 local.get $2
i32.add i32.add
) )
(func $~lib/string/String#substring (; 63 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (func $~lib/string/String#substring (; 69 ;) (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)
@ -6697,7 +6774,7 @@
call $~lib/runtime/register call $~lib/runtime/register
end end
) )
(func $~lib/runtime/discard (; 64 ;) (type $FUNCSIG$vi) (param $0 i32) (func $~lib/runtime/discard (; 70 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32) (local $1 i32)
local.get $0 local.get $0
global.get $~lib/memory/HEAP_BASE global.get $~lib/memory/HEAP_BASE
@ -6731,7 +6808,7 @@
local.get $1 local.get $1
call $~lib/memory/memory.free call $~lib/memory/memory.free
) )
(func $~lib/util/number/dtoa (; 65 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) (func $~lib/util/number/dtoa (; 71 ;) (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)
@ -6787,7 +6864,7 @@
end end
local.get $4 local.get $4
) )
(func $start:std/string (; 66 ;) (type $FUNCSIG$v) (func $start:std/string (; 72 ;) (type $FUNCSIG$v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
@ -10179,12 +10256,12 @@
unreachable unreachable
end end
) )
(func $std/string/getString (; 67 ;) (type $FUNCSIG$i) (result i32) (func $std/string/getString (; 73 ;) (type $FUNCSIG$i) (result i32)
global.get $std/string/str global.get $std/string/str
) )
(func $start (; 68 ;) (type $FUNCSIG$v) (func $start (; 74 ;) (type $FUNCSIG$v)
call $start:std/string call $start:std/string
) )
(func $null (; 69 ;) (type $FUNCSIG$v) (func $null (; 75 ;) (type $FUNCSIG$v)
) )
) )

View File

@ -35,12 +35,12 @@
(data (i32.const 640) "\01\00\00\004\00\00\00S\00y\00m\00b\00o\00l\00(\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e\00)\00") (data (i32.const 640) "\01\00\00\004\00\00\00S\00y\00m\00b\00o\00l\00(\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e\00)\00")
(table $0 1 funcref) (table $0 1 funcref)
(elem (i32.const 0) $null) (elem (i32.const 0) $null)
(global $~lib/runtime/HEADER_SIZE i32 (i32.const 8))
(global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049))
(global $~lib/symbol/nextId (mut i32) (i32.const 12)) (global $~lib/symbol/nextId (mut i32) (i32.const 12))
(global $std/symbol/sym1 (mut i32) (i32.const 0)) (global $std/symbol/sym1 (mut i32) (i32.const 0))
(global $std/symbol/sym2 (mut i32) (i32.const 0)) (global $std/symbol/sym2 (mut i32) (i32.const 0))
(global $~lib/symbol/stringToId (mut i32) (i32.const 0)) (global $~lib/symbol/stringToId (mut i32) (i32.const 0))
(global $~lib/runtime/HEADER_SIZE i32 (i32.const 8))
(global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049))
(global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0))
(global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) (global $~lib/allocator/arena/offset (mut i32) (i32.const 0))
(global $~lib/ASC_NO_ASSERT i32 (i32.const 0)) (global $~lib/ASC_NO_ASSERT i32 (i32.const 0))

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long