1
0
mirror of https://github.com/fluencelabs/assemblyscript synced 2025-07-25 19:22:13 +00:00

static array stuff

This commit is contained in:
dcode
2019-03-15 13:13:48 +01:00
parent 968b0321a0
commit 058dc8d4fa
77 changed files with 5634 additions and 4657 deletions
src
std/assembly
tests
compiler.js
compiler

@@ -4153,17 +4153,17 @@ function compileTypedArrayGet(
WrapMode.NONE
));
if (getExpressionId(dynamicOffset) == ExpressionId.Const) {
constantOffset = getConstValueI32(dynamicOffset);
constantOffset = getConstValueI32(dynamicOffset) * type.byteSize;
dynamicOffset = 0;
} else if (getExpressionId(dynamicOffset) == ExpressionId.Binary) {
if (getBinaryOp(dynamicOffset) == BinaryOp.AddI32) {
let left = getBinaryLeft(dynamicOffset);
let right = getBinaryRight(dynamicOffset);
if (getExpressionId(left) == ExpressionId.Const) {
constantOffset = getConstValueI32(left);
constantOffset = getConstValueI32(left) * type.byteSize;
dynamicOffset = right;
} else if (getExpressionId(right) == ExpressionId.Const) {
constantOffset = getConstValueI32(right);
constantOffset = getConstValueI32(right) * type.byteSize;
dynamicOffset = left;
}
}

@@ -183,10 +183,9 @@ export namespace LibrarySymbols {
export const ALLOCATE = "ALLOCATE";
export const REALLOCATE = "REALLOCATE";
export const DISCARD = "DISCARD";
// gc
export const gc = "gc";
export const register = "register";
export const link = "link";
export const REGISTER = "REGISTER";
export const LINK = "LINK";
export const WRAPARRAY = "WRAPARRAY";
// other
export const length = "length";
export const byteLength = "byteLength";

@@ -6693,27 +6693,43 @@ export class Compiler extends DiagnosticEmitter {
}
var arrayPrototype = assert(this.program.arrayPrototype);
var arrayInstance = assert(this.resolver.resolveClass(
<ClassPrototype>arrayPrototype,
[ elementType ],
makeMap()
));
var arrayInstance = assert(this.resolver.resolveClass(arrayPrototype, [ elementType ]));
var arrayType = arrayInstance.type;
// make a static buffer if possible
// if the array is static, make a static arraybuffer segment and wrap it with an array
if (isStatic) {
// let bufferPtr = this.ensureStaticArrayBuffer(elementType, constantValues);
// TODO: runtime.alloc the array header and make it use a copy of the static buffer
let arrayBufferInstance = assert(this.program.arrayBufferInstance);
let wrapArrayPrototype = assert(this.program.wrapArrayPrototype);
let wrapArrayInstance = this.resolver.resolveFunction(wrapArrayPrototype, [ elementType ]);
if (!wrapArrayInstance) {
this.currentType = arrayType;
return module.createUnreachable();
}
let previousFlow = this.currentFlow;
let tempLocal = previousFlow.getTempLocal(arrayBufferInstance.type, false);
let flow = Flow.createInline(previousFlow.parentFunction, wrapArrayInstance);
flow.addScopedAlias("buffer", arrayBufferInstance.type, tempLocal.index);
this.currentFlow = flow;
let body = this.compileFunctionBody(wrapArrayInstance);
body.unshift(
module.createSetLocal(tempLocal.index,
this.ensureStaticArrayBuffer(elementType, constantValues)
)
);
previousFlow.freeTempLocal(tempLocal);
this.currentFlow = previousFlow;
this.currentType = arrayType;
return module.createBlock(flow.inlineReturnLabel, body, this.options.nativeSizeType);
}
// and compile an explicit instantiation
this.currentType = arrayType;
// otherwise compile an explicit instantiation with indexed sets
var setter = arrayInstance.lookupOverload(OperatorKind.INDEXED_SET, true);
if (!setter) {
this.error(
DiagnosticCode.Index_signature_in_type_0_only_permits_reading,
reportNode.range, arrayInstance.internalName
);
this.currentType = arrayType;
return module.createUnreachable();
}
var nativeArrayType = arrayType.toNativeType();
@@ -7945,41 +7961,46 @@ export class Compiler extends DiagnosticEmitter {
var module = this.module;
var options = this.options;
var nativeSizeType = options.nativeSizeType;
var classType = classInstance.type;
// ALLOCATE(payloadSize)
// ALLOCATE(payloadSize: usize) -> usize
var allocateInstance = assert(program.allocateInstance);
if (!this.compileFunction(allocateInstance)) return module.createUnreachable();
var alloc = module.createCall(
if (!this.compileFunction(allocateInstance)) {
this.currentType = classInstance.type;
return module.createUnreachable();
}
// REGISTER<T>(ref: usize) -> usize
var registerPrototype = assert(program.registerPrototype);
var registerInstance = this.resolver.resolveFunction(registerPrototype, [ classType ]);
if (!registerInstance) {
this.currentType = classType;
return module.createUnreachable();
}
// REGISTER<T>(ALLOCATE(sizeof<T>()))
var previousFlow = this.currentFlow;
var tempLocal = previousFlow.getTempLocal(classType, false);
var flow = Flow.createInline(previousFlow.parentFunction, registerInstance);
flow.addScopedAlias("ref", this.options.usizeType, tempLocal.index);
this.currentFlow = flow;
var body = this.compileFunctionBody(registerInstance);
body.unshift(
module.createSetLocal(tempLocal.index,
module.createCall(
allocateInstance.internalName, [
options.isWasm64
? module.createI64(classInstance.currentMemoryOffset)
: module.createI32(classInstance.currentMemoryOffset)
// module.createI32(
// ensureGCHook(this, classInstance)
// )
],
nativeSizeType
)
)
);
// REGISTER<T>(ref, classId)
if (program.gcImplemented) {
let registerInstance = assert(program.gcRegisterInstance);
if (!this.compileFunction(registerInstance)) return module.createUnreachable();
let tempLocal = this.currentFlow.getAndFreeTempLocal(classInstance.type, false);
alloc = module.createBlock(null, [
module.createCall(
registerInstance.internalName, [
module.createTeeLocal(tempLocal.index, alloc),
module.createI32(classInstance.id)
],
NativeType.None
),
module.createGetLocal(tempLocal.index, nativeSizeType)
], nativeSizeType);
}
this.currentType = classInstance.type;
return alloc;
previousFlow.freeTempLocal(tempLocal);
this.currentFlow = previousFlow;
this.currentType = classType;
return module.createBlock(flow.inlineReturnLabel, body, nativeSizeType);
}
/** Makes the initializers for a class's fields. */

@@ -179,7 +179,7 @@ export class Flow {
return flow;
}
/** Creates an inline flow within `currentFunction`. */
/** Creates an inline flow within `parentFunction`. */
static createInline(parentFunction: Function, inlineFunction: Function): Flow {
var flow = Flow.create(parentFunction);
flow.set(FlowFlags.INLINE_CONTEXT);

@@ -349,6 +349,12 @@ export class Program extends DiagnosticEmitter {
reallocateInstance: Function | null = null;
/** Runtime discard function. */
discardInstance: Function | null = null;
/** Runtime register function. */
registerPrototype: FunctionPrototype | null = null;
/** Runtime link function. */
linkPrototype: FunctionPrototype | null = null;
/** Runtime wrap array function. */
wrapArrayPrototype: FunctionPrototype | null = null;
/** Next class id. */
nextClassId: u32 = 1;
@@ -357,18 +363,10 @@ export class Program extends DiagnosticEmitter {
/** Whether a garbage collector is present or not. */
get gcImplemented(): bool {
return this.gcRegisterInstance !== null;
return this.lookupGlobal("__gc_register") !== null;
}
/** Garbage collector register function called when an object becomes managed. */
gcRegisterInstance: Function | null = null;
/** Garbage collector link function called when a managed object is referenced from a parent. */
gcLinkInstance: Function | null = null;
/** Garbage collector mark function called to on reachable managed objects. */
gcMarkInstance: Function | null = null;
/** Size of a managed object header. */
gcHeaderSize: u32 = 0;
/** Offset of the GC hook. */
gcHookOffset: u32 = 0;
gcMarkInstance: Function | null = null; // FIXME
/** Constructs a new program, optionally inheriting parser diagnostics. */
constructor(
@@ -805,6 +803,18 @@ export class Program extends DiagnosticEmitter {
assert(element.kind == ElementKind.FUNCTION_PROTOTYPE);
this.discardInstance = this.resolver.resolveFunction(<FunctionPrototype>element, null);
}
if (element = this.lookupGlobal(LibrarySymbols.REGISTER)) {
assert(element.kind == ElementKind.FUNCTION_PROTOTYPE);
this.registerPrototype = <FunctionPrototype>element;
}
if (element = this.lookupGlobal(LibrarySymbols.LINK)) {
assert(element.kind == ElementKind.FUNCTION_PROTOTYPE);
this.linkPrototype = <FunctionPrototype>element;
}
if (element = this.lookupGlobal(LibrarySymbols.WRAPARRAY)) {
assert(element.kind == ElementKind.FUNCTION_PROTOTYPE);
this.wrapArrayPrototype = <FunctionPrototype>element;
}
}
// mark module exports, i.e. to apply proper wrapping behavior on the boundaries

@@ -15,7 +15,7 @@ export namespace gc {
export function register(ref: usize): void {
// @ts-ignore: stub
if (isDefined(__gc_register)) __gc_register(ref);
else ERROR("missing implementation: gc.register");
else WARNING("missing implementation: gc.register");
}
/** Links a registered object with the registered object now referencing it. */
@@ -24,7 +24,7 @@ export namespace gc {
export function link(ref: usize, parentRef: usize): void {
// @ts-ignore: stub
if (isDefined(__gc_link)) __gc_link(ref, parentRef);
else ERROR("missing implementation: gc.link");
else WARNING("missing implementation: gc.link");
}
/** Marks an object as being reachable. */
@@ -33,7 +33,7 @@ export namespace gc {
export function mark(ref: usize): void {
// @ts-ignore: stub
if (isDefined(__gc_mark)) __gc_mark(ref);
else ERROR("missing implementation: gc.mark");
else WARNING("missing implementation: gc.mark");
}
/** Performs a full garbage collection cycle. */

@@ -65,7 +65,9 @@ export class Map<K,V> {
get size(): i32 { return this.entriesCount; }
constructor() { this.clear(); }
constructor() {
this.clear();
}
clear(): void {
const bucketsSize = INITIAL_CAPACITY * <i32>BUCKET_SIZE;

@@ -51,7 +51,7 @@ export namespace memory {
export function allocate(size: usize): usize {
// @ts-ignore: stub
if (isDefined(__memory_allocate)) return __memory_allocate(size);
else ERROR("missing implementation: memory.allocate");
else WARNING("missing implementation: memory.allocate");
return <usize>unreachable();
}
@@ -61,7 +61,7 @@ export namespace memory {
export function free(ptr: usize): void {
// @ts-ignore: stub
if (isDefined(__memory_free)) __memory_free(ptr);
else ERROR("missing implementation: memory.free");
else WARNING("missing implementation: memory.free");
}
/** Resets the memory to its initial state. Arena allocator only. */
@@ -70,7 +70,7 @@ export namespace memory {
export function reset(): void {
// @ts-ignore: stub
if (isDefined(__memory_reset)) __memory_reset();
else ERROR("missing implementation: memory.reset");
else WARNING("missing implementation: memory.reset");
}
/** Repeats a section of memory at a specific address. */

@@ -138,6 +138,33 @@ export function DISCARD(ref: usize): void {
memory.free(changetype<usize>(ref - HEADER_SIZE));
}
/** Wraps a static buffer within an array by copying its contents. */
// @ts-ignore: decorator
@unsafe @inline
export function WRAPARRAY<T>(buffer: ArrayBuffer): T[] {
// TODO: this is quite a lot to compile inline
var array = REGISTER<T[]>(ALLOCATE(offsetof<T[]>()));
var bufferSize = <usize>buffer.byteLength;
var newBuffer = REGISTER<ArrayBuffer>(ALLOCATE(bufferSize));
changetype<ArrayBufferView>(array).data = newBuffer; // links
changetype<ArrayBufferView>(array).dataStart = changetype<usize>(newBuffer);
changetype<ArrayBufferView>(array).dataEnd = changetype<usize>(newBuffer) + bufferSize;
store<i32>(changetype<usize>(array), <i32>(bufferSize >>> alignof<T>()), offsetof<T[]>("length_"));
if (isManaged<T>()) {
ERROR("unexpected managed type"); // not used currently
let dataOffset: usize = 0;
while (dataOffset < bufferSize) {
let element: T = load<T>(changetype<usize>(buffer) + dataOffset);
store<T>(changetype<usize>(newBuffer) + dataOffset, element);
LINK(element, array);
dataOffset += sizeof<T>();
}
} else {
memory.copy(changetype<usize>(newBuffer), changetype<usize>(buffer), bufferSize);
}
return array;
}
// Helpers
/** Asserts that a managed object is still unregistered. */

@@ -231,23 +231,15 @@ tests.forEach(filename => {
let memory = new WebAssembly.Memory({ initial: 10 });
let exports = {};
const RUNTIME_HEADER_SIZE = 8; // 16 if GC is present
function getString(ptr) {
if (!ptr) return "null";
var U32 = new Uint32Array(exports.memory ? exports.memory.buffer : memory.buffer);
var U16 = new Uint16Array(exports.memory ? exports.memory.buffer : memory.buffer);
var dataLength = U32[ptr >>> 2];
var dataOffset = (ptr + 4) >>> 1;
var dataRemain = dataLength;
var parts = [];
const chunkSize = 1024;
while (dataRemain > chunkSize) {
let last = U16[dataOffset + chunkSize - 1];
let size = last >= 0xD800 && last < 0xDC00 ? chunkSize - 1 : chunkSize;
let part = U16.subarray(dataOffset, dataOffset += size);
parts.push(String.fromCharCode.apply(String, part));
dataRemain -= size;
}
return parts.join("") + String.fromCharCode.apply(String, U16.subarray(dataOffset, dataOffset + dataRemain));
var len16 = U32[(ptr - RUNTIME_HEADER_SIZE + 4) >>> 2] >>> 1;
var ptr16 = ptr >>> 1;
return String.fromCharCode.apply(String, U16.subarray(ptr16, ptr16 + len16));
}
var binaryBuffer = stdout.toBuffer();

@@ -4,7 +4,7 @@
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\06\00\00\00a\00b\00i\00.\00t\00s")
(data (i32.const 8) "\01\00\00\00\0c\00\00\00a\00b\00i\00.\00t\00s")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $abi/condition (mut i32) (i32.const 0))
@@ -26,7 +26,7 @@
global.get $abi/y
if
i32.const 0
i32.const 8
i32.const 16
i32.const 65
i32.const 2
call $~lib/env/abort

@@ -4,12 +4,12 @@
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\06\00\00\00a\00b\00i\00.\00t\00s\00")
(data (i32.const 8) "\01\00\00\00\0c\00\00\00a\00b\00i\00.\00t\00s\00")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $abi/condition (mut i32) (i32.const 0))
(global $abi/y (mut i32) (i32.const 0))
(global $~lib/memory/HEAP_BASE i32 (i32.const 24))
(global $~lib/memory/HEAP_BASE i32 (i32.const 28))
(export "memory" (memory $0))
(export "table" (table $0))
(export "exported" (func $abi/exported))
@@ -39,7 +39,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 32
i32.const 2
call $~lib/env/abort
@@ -78,7 +78,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 45
i32.const 2
call $~lib/env/abort
@@ -109,7 +109,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 58
i32.const 2
call $~lib/env/abort
@@ -128,7 +128,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 65
i32.const 2
call $~lib/env/abort
@@ -145,7 +145,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 72
i32.const 2
call $~lib/env/abort
@@ -160,7 +160,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 74
i32.const 2
call $~lib/env/abort
@@ -173,7 +173,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 77
i32.const 2
call $~lib/env/abort
@@ -186,7 +186,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 79
i32.const 2
call $~lib/env/abort

@@ -1,8 +1,8 @@
(module
(type $FUNCSIG$v (func))
(memory $0 1)
(data (i32.const 8) "\t\00\00\00a\00s\00s\00e\00r\00t\00.\00t\00s")
(data (i32.const 32) "\0c\00\00\00m\00u\00s\00t\00 \00b\00e\00 \00t\00r\00u\00e")
(data (i32.const 8) "\01\00\00\00\12\00\00\00a\00s\00s\00e\00r\00t\00.\00t\00s")
(data (i32.const 40) "\01\00\00\00\18\00\00\00m\00u\00s\00t\00 \00b\00e\00 \00t\00r\00u\00e")
(table $0 1 funcref)
(elem (i32.const 0) $start)
(export "memory" (memory $0))

@@ -3,11 +3,11 @@
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\t\00\00\00a\00s\00s\00e\00r\00t\00.\00t\00s\00")
(data (i32.const 32) "\0c\00\00\00m\00u\00s\00t\00 \00b\00e\00 \00t\00r\00u\00e\00")
(data (i32.const 8) "\01\00\00\00\12\00\00\00a\00s\00s\00e\00r\00t\00.\00t\00s\00")
(data (i32.const 40) "\01\00\00\00\18\00\00\00m\00u\00s\00t\00 \00b\00e\00 \00t\00r\00u\00e\00")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $~lib/memory/HEAP_BASE i32 (i32.const 60))
(global $~lib/memory/HEAP_BASE i32 (i32.const 72))
(export "memory" (memory $0))
(export "table" (table $0))
(start $start)
@@ -17,7 +17,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 1
i32.const 0
call $~lib/env/abort
@@ -27,7 +27,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 2
i32.const 0
call $~lib/env/abort
@@ -39,7 +39,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 3
i32.const 0
call $~lib/env/abort
@@ -50,7 +50,7 @@
f64.eq
if
i32.const 0
i32.const 8
i32.const 16
i32.const 4
i32.const 0
call $~lib/env/abort
@@ -62,7 +62,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 5
i32.const 0
call $~lib/env/abort
@@ -72,7 +72,7 @@
i64.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 6
i32.const 0
call $~lib/env/abort
@@ -84,7 +84,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 7
i32.const 0
call $~lib/env/abort
@@ -95,8 +95,8 @@
if (result i32)
local.get $0
else
i32.const 32
i32.const 8
i32.const 48
i32.const 16
i32.const 10
i32.const 5
call $~lib/env/abort

@@ -3,7 +3,7 @@
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\07\00\00\00b\00o\00o\00l\00.\00t\00s")
(data (i32.const 8) "\01\00\00\00\0e\00\00\00b\00o\00o\00l\00.\00t\00s")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $bool/i (mut i32) (i32.const 2))
@@ -24,7 +24,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 2
i32.const 0
call $~lib/env/abort
@@ -37,7 +37,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 4
i32.const 0
call $~lib/env/abort
@@ -50,7 +50,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 6
i32.const 0
call $~lib/env/abort
@@ -63,7 +63,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 8
i32.const 0
call $~lib/env/abort
@@ -76,7 +76,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 10
i32.const 0
call $~lib/env/abort
@@ -89,7 +89,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 12
i32.const 0
call $~lib/env/abort
@@ -102,7 +102,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 14
i32.const 0
call $~lib/env/abort

@@ -3,7 +3,7 @@
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\07\00\00\00b\00o\00o\00l\00.\00t\00s\00")
(data (i32.const 8) "\01\00\00\00\0e\00\00\00b\00o\00o\00l\00.\00t\00s\00")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $bool/i (mut i32) (i32.const 2))
@@ -13,7 +13,7 @@
(global $bool/f (mut f32) (f32.const 2))
(global $bool/F (mut f64) (f64.const 2))
(global $bool/uu (mut i32) (i32.const 2))
(global $~lib/memory/HEAP_BASE i32 (i32.const 28))
(global $~lib/memory/HEAP_BASE i32 (i32.const 32))
(export "memory" (memory $0))
(export "table" (table $0))
(start $start)
@@ -26,7 +26,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 2
i32.const 0
call $~lib/env/abort
@@ -40,7 +40,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 4
i32.const 0
call $~lib/env/abort
@@ -54,7 +54,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 6
i32.const 0
call $~lib/env/abort
@@ -68,7 +68,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 8
i32.const 0
call $~lib/env/abort
@@ -82,7 +82,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 10
i32.const 0
call $~lib/env/abort
@@ -96,7 +96,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 12
i32.const 0
call $~lib/env/abort
@@ -110,7 +110,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 14
i32.const 0
call $~lib/env/abort

@@ -1,7 +1,7 @@
(module
(type $FUNCSIG$v (func))
(memory $0 1)
(data (i32.const 8) "\10\00\00\00c\00a\00l\00l\00-\00i\00n\00f\00e\00r\00r\00e\00d\00.\00t\00s")
(data (i32.const 8) "\01\00\00\00 \00\00\00c\00a\00l\00l\00-\00i\00n\00f\00e\00r\00r\00e\00d\00.\00t\00s")
(table $0 1 funcref)
(elem (i32.const 0) $start)
(export "memory" (memory $0))

@@ -6,10 +6,10 @@
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\10\00\00\00c\00a\00l\00l\00-\00i\00n\00f\00e\00r\00r\00e\00d\00.\00t\00s\00")
(data (i32.const 8) "\01\00\00\00 \00\00\00c\00a\00l\00l\00-\00i\00n\00f\00e\00r\00r\00e\00d\00.\00t\00s\00")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $~lib/memory/HEAP_BASE i32 (i32.const 44))
(global $~lib/memory/HEAP_BASE i32 (i32.const 48))
(export "memory" (memory $0))
(export "table" (table $0))
(start $start)
@@ -33,7 +33,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 5
i32.const 0
call $~lib/env/abort
@@ -46,7 +46,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 6
i32.const 0
call $~lib/env/abort
@@ -59,7 +59,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 7
i32.const 0
call $~lib/env/abort
@@ -72,7 +72,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 13
i32.const 0
call $~lib/env/abort

@@ -4,7 +4,7 @@
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\10\00\00\00c\00a\00l\00l\00-\00o\00p\00t\00i\00o\00n\00a\00l\00.\00t\00s")
(data (i32.const 8) "\01\00\00\00 \00\00\00c\00a\00l\00l\00-\00o\00p\00t\00i\00o\00n\00a\00l\00.\00t\00s")
(table $0 2 funcref)
(elem (i32.const 0) $null $call-optional/opt|trampoline)
(global $~lib/argc (mut i32) (i32.const 0))
@@ -65,7 +65,7 @@
i32.add
if
i32.const 0
i32.const 8
i32.const 16
i32.const 4
i32.const 0
call $~lib/env/abort
@@ -103,7 +103,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 5
i32.const 0
call $~lib/env/abort
@@ -118,7 +118,7 @@
call_indirect (type $FUNCSIG$iiii)
if
i32.const 0
i32.const 8
i32.const 16
i32.const 9
i32.const 0
call $~lib/env/abort
@@ -135,7 +135,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 10
i32.const 0
call $~lib/env/abort
@@ -152,7 +152,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 11
i32.const 0
call $~lib/env/abort

@@ -4,12 +4,12 @@
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\10\00\00\00c\00a\00l\00l\00-\00o\00p\00t\00i\00o\00n\00a\00l\00.\00t\00s\00")
(data (i32.const 8) "\01\00\00\00 \00\00\00c\00a\00l\00l\00-\00o\00p\00t\00i\00o\00n\00a\00l\00.\00t\00s\00")
(table $0 2 funcref)
(elem (i32.const 0) $null $call-optional/opt|trampoline)
(global $~lib/argc (mut i32) (i32.const 0))
(global $call-optional/optIndirect (mut i32) (i32.const 1))
(global $~lib/memory/HEAP_BASE i32 (i32.const 44))
(global $~lib/memory/HEAP_BASE i32 (i32.const 48))
(export "memory" (memory $0))
(export "table" (table $0))
(start $start)
@@ -57,7 +57,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 4
i32.const 0
call $~lib/env/abort
@@ -76,7 +76,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 5
i32.const 0
call $~lib/env/abort
@@ -91,7 +91,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 6
i32.const 0
call $~lib/env/abort
@@ -111,7 +111,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 9
i32.const 0
call $~lib/env/abort
@@ -131,7 +131,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 10
i32.const 0
call $~lib/env/abort
@@ -151,7 +151,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 11
i32.const 0
call $~lib/env/abort

@@ -5,7 +5,7 @@
(type $FUNCSIG$i (func (result i32)))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\0d\00\00\00c\00a\00l\00l\00-\00s\00u\00p\00e\00r\00.\00t\00s")
(data (i32.const 8) "\01\00\00\00\1a\00\00\00c\00a\00l\00l\00-\00s\00u\00p\00e\00r\00.\00t\00s")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0))
@@ -13,7 +13,7 @@
(export "memory" (memory $0))
(export "table" (table $0))
(start $start)
(func $~lib/allocator/arena/__memory_allocate (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(func $~lib/memory/memory.allocate (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@@ -36,15 +36,15 @@
i32.add
i32.const -8
i32.and
local.tee $2
local.tee $0
current_memory
local.tee $3
local.tee $2
i32.const 16
i32.shl
i32.gt_u
if
local.get $3
local.get $2
local.get $0
local.get $1
i32.sub
i32.const 65535
@@ -53,16 +53,16 @@
i32.and
i32.const 16
i32.shr_u
local.tee $0
local.tee $3
local.get $2
local.get $3
local.get $0
i32.gt_s
select
grow_memory
i32.const 0
i32.lt_s
if
local.get $0
local.get $3
grow_memory
i32.const 0
i32.lt_s
@@ -71,16 +71,37 @@
end
end
end
local.get $2
local.get $0
global.set $~lib/allocator/arena/offset
local.get $1
)
(func $call-super/A#constructor (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(func $~lib/runtime/ALLOCATE (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
i32.const 1
i32.const 32
local.get $0
i32.const 7
i32.add
i32.clz
i32.sub
i32.shl
call $~lib/memory/memory.allocate
local.tee $1
i32.const -1520547049
i32.store
local.get $1
local.get $0
i32.store offset=4
local.get $1
i32.const 8
i32.add
)
(func $call-super/A#constructor (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.eqz
if
i32.const 4
call $~lib/allocator/arena/__memory_allocate
call $~lib/runtime/ALLOCATE
local.set $0
end
local.get $0
@@ -92,7 +113,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 8
i32.const 4
call $~lib/env/abort
@@ -100,10 +121,10 @@
end
local.get $0
)
(func $call-super/B#constructor (; 3 ;) (type $FUNCSIG$i) (result i32)
(func $call-super/B#constructor (; 4 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32)
i32.const 8
call $~lib/allocator/arena/__memory_allocate
call $~lib/runtime/ALLOCATE
call $call-super/A#constructor
local.tee $0
i32.const 2
@@ -114,7 +135,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 17
i32.const 4
call $~lib/env/abort
@@ -126,7 +147,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 18
i32.const 4
call $~lib/env/abort
@@ -134,7 +155,7 @@
end
local.get $0
)
(func $call-super/test1 (; 4 ;) (type $FUNCSIG$v)
(func $call-super/test1 (; 5 ;) (type $FUNCSIG$v)
(local $0 i32)
call $call-super/B#constructor
local.tee $0
@@ -143,7 +164,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 24
i32.const 2
call $~lib/env/abort
@@ -155,19 +176,19 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 25
i32.const 2
call $~lib/env/abort
unreachable
end
)
(func $call-super/C#constructor (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(func $call-super/C#constructor (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.eqz
if
i32.const 4
call $~lib/allocator/arena/__memory_allocate
call $~lib/runtime/ALLOCATE
local.set $0
end
local.get $0
@@ -175,10 +196,10 @@
i32.store
local.get $0
)
(func $call-super/D#constructor (; 6 ;) (type $FUNCSIG$i) (result i32)
(func $call-super/D#constructor (; 7 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32)
i32.const 8
call $~lib/allocator/arena/__memory_allocate
call $~lib/runtime/ALLOCATE
call $call-super/C#constructor
local.tee $0
i32.const 2
@@ -189,7 +210,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 40
i32.const 4
call $~lib/env/abort
@@ -201,7 +222,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 41
i32.const 4
call $~lib/env/abort
@@ -209,7 +230,7 @@
end
local.get $0
)
(func $call-super/test2 (; 7 ;) (type $FUNCSIG$v)
(func $call-super/test2 (; 8 ;) (type $FUNCSIG$v)
(local $0 i32)
call $call-super/D#constructor
local.tee $0
@@ -218,7 +239,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 47
i32.const 2
call $~lib/env/abort
@@ -230,19 +251,19 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 48
i32.const 2
call $~lib/env/abort
unreachable
end
)
(func $call-super/E#constructor (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(func $call-super/E#constructor (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.eqz
if
i32.const 4
call $~lib/allocator/arena/__memory_allocate
call $~lib/runtime/ALLOCATE
local.set $0
end
local.get $0
@@ -254,7 +275,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 58
i32.const 4
call $~lib/env/abort
@@ -262,10 +283,10 @@
end
local.get $0
)
(func $call-super/test3 (; 9 ;) (type $FUNCSIG$v)
(func $call-super/test3 (; 10 ;) (type $FUNCSIG$v)
(local $0 i32)
i32.const 8
call $~lib/allocator/arena/__memory_allocate
call $~lib/runtime/ALLOCATE
call $call-super/E#constructor
local.tee $0
i32.const 2
@@ -276,7 +297,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 68
i32.const 2
call $~lib/env/abort
@@ -288,24 +309,24 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 69
i32.const 2
call $~lib/env/abort
unreachable
end
)
(func $call-super/H#constructor (; 10 ;) (type $FUNCSIG$i) (result i32)
(func $call-super/H#constructor (; 11 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32)
i32.const 8
call $~lib/allocator/arena/__memory_allocate
call $~lib/runtime/ALLOCATE
call $call-super/C#constructor
local.tee $0
i32.const 2
i32.store offset=4
local.get $0
)
(func $call-super/test4 (; 11 ;) (type $FUNCSIG$v)
(func $call-super/test4 (; 12 ;) (type $FUNCSIG$v)
(local $0 i32)
call $call-super/H#constructor
local.tee $0
@@ -314,7 +335,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 86
i32.const 2
call $~lib/env/abort
@@ -326,14 +347,14 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 87
i32.const 2
call $~lib/env/abort
unreachable
end
)
(func $call-super/test5 (; 12 ;) (type $FUNCSIG$v)
(func $call-super/test5 (; 13 ;) (type $FUNCSIG$v)
(local $0 i32)
call $call-super/H#constructor
local.tee $0
@@ -342,7 +363,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 106
i32.const 2
call $~lib/env/abort
@@ -354,15 +375,15 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 107
i32.const 2
call $~lib/env/abort
unreachable
end
)
(func $start (; 13 ;) (type $FUNCSIG$v)
i32.const 40
(func $start (; 14 ;) (type $FUNCSIG$v)
i32.const 48
global.set $~lib/allocator/arena/startOffset
global.get $~lib/allocator/arena/startOffset
global.set $~lib/allocator/arena/offset
@@ -372,7 +393,7 @@
call $call-super/test4
call $call-super/test5
)
(func $null (; 14 ;) (type $FUNCSIG$v)
(func $null (; 15 ;) (type $FUNCSIG$v)
nop
)
)

@@ -4,49 +4,56 @@
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\0d\00\00\00c\00a\00l\00l\00-\00s\00u\00p\00e\00r\00.\00t\00s\00")
(data (i32.const 8) "\01\00\00\00\1a\00\00\00c\00a\00l\00l\00-\00s\00u\00p\00e\00r\00.\00t\00s\00")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0))
(global $~lib/runtime/HEADER_SIZE i32 (i32.const 8))
(global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049))
(global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0))
(global $~lib/allocator/arena/offset (mut i32) (i32.const 0))
(global $~lib/memory/HEAP_BASE i32 (i32.const 40))
(global $~lib/memory/HEAP_BASE i32 (i32.const 44))
(export "memory" (memory $0))
(export "table" (table $0))
(start $start)
(func $start:~lib/allocator/arena (; 1 ;) (type $FUNCSIG$v)
global.get $~lib/memory/HEAP_BASE
i32.const 7
(func $~lib/runtime/ADJUST (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
i32.const 1
i32.const 32
local.get $0
global.get $~lib/runtime/HEADER_SIZE
i32.add
i32.const 7
i32.const -1
i32.xor
i32.and
global.set $~lib/allocator/arena/startOffset
global.get $~lib/allocator/arena/startOffset
global.set $~lib/allocator/arena/offset
i32.const 1
i32.sub
i32.clz
i32.sub
i32.shl
)
(func $~lib/allocator/arena/__memory_allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(func $~lib/memory/memory.allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(local $6 i32)
(local $7 i32)
block $~lib/allocator/arena/__memory_allocate|inlined.0 (result i32)
local.get $0
local.set $1
local.get $1
i32.const 1073741824
i32.gt_u
if
unreachable
end
global.get $~lib/allocator/arena/offset
local.set $1
local.get $1
local.get $0
local.tee $2
i32.const 1
local.tee $3
local.set $2
local.get $2
local.get $1
local.tee $3
i32.const 1
local.tee $4
local.get $3
local.get $4
i32.gt_u
select
i32.add
@@ -56,17 +63,17 @@
i32.const -1
i32.xor
i32.and
local.set $4
local.set $3
current_memory
local.set $5
local.set $4
local.get $3
local.get $4
local.get $5
i32.const 16
i32.shl
i32.gt_u
if
local.get $4
local.get $1
local.get $3
local.get $2
i32.sub
i32.const 65535
i32.add
@@ -76,22 +83,22 @@
i32.and
i32.const 16
i32.shr_u
local.set $2
local.get $5
local.tee $3
local.get $2
local.set $5
local.get $4
local.tee $6
local.get $3
local.get $5
local.tee $7
local.get $6
local.get $7
i32.gt_s
select
local.set $3
local.get $3
local.set $6
local.get $6
grow_memory
i32.const 0
i32.lt_s
if
local.get $2
local.get $5
grow_memory
i32.const 0
i32.lt_s
@@ -100,22 +107,35 @@
end
end
end
local.get $4
local.get $3
global.set $~lib/allocator/arena/offset
local.get $1
)
(func $~lib/memory/memory.allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
call $~lib/allocator/arena/__memory_allocate
local.get $2
end
return
)
(func $~lib/runtime/ALLOCATE (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
local.get $0
call $~lib/runtime/ADJUST
call $~lib/memory/memory.allocate
local.set $1
local.get $1
global.get $~lib/runtime/HEADER_MAGIC
i32.store
local.get $1
local.get $0
i32.store offset=4
local.get $1
global.get $~lib/runtime/HEADER_SIZE
i32.add
)
(func $call-super/A#constructor (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
block (result i32)
local.get $0
i32.eqz
if
i32.const 4
call $~lib/memory/memory.allocate
call $~lib/runtime/ALLOCATE
local.set $0
end
local.get $0
@@ -129,7 +149,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 8
i32.const 4
call $~lib/env/abort
@@ -143,7 +163,7 @@
local.get $0
else
i32.const 8
call $~lib/memory/memory.allocate
call $~lib/runtime/ALLOCATE
end
call $call-super/A#constructor
local.set $0
@@ -157,7 +177,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 17
i32.const 4
call $~lib/env/abort
@@ -170,7 +190,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 18
i32.const 4
call $~lib/env/abort
@@ -190,7 +210,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 24
i32.const 2
call $~lib/env/abort
@@ -203,7 +223,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 25
i32.const 2
call $~lib/env/abort
@@ -215,7 +235,7 @@
i32.eqz
if
i32.const 4
call $~lib/memory/memory.allocate
call $~lib/runtime/ALLOCATE
local.set $0
end
local.get $0
@@ -229,7 +249,7 @@
local.get $0
else
i32.const 8
call $~lib/memory/memory.allocate
call $~lib/runtime/ALLOCATE
end
call $call-super/C#constructor
local.set $0
@@ -243,7 +263,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 40
i32.const 4
call $~lib/env/abort
@@ -256,7 +276,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 41
i32.const 4
call $~lib/env/abort
@@ -276,7 +296,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 47
i32.const 2
call $~lib/env/abort
@@ -289,7 +309,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 48
i32.const 2
call $~lib/env/abort
@@ -302,7 +322,7 @@
i32.eqz
if
i32.const 4
call $~lib/memory/memory.allocate
call $~lib/runtime/ALLOCATE
local.set $0
end
local.get $0
@@ -316,7 +336,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 58
i32.const 4
call $~lib/env/abort
@@ -329,7 +349,7 @@
i32.eqz
if
i32.const 8
call $~lib/memory/memory.allocate
call $~lib/runtime/ALLOCATE
local.set $0
end
local.get $0
@@ -352,7 +372,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 68
i32.const 2
call $~lib/env/abort
@@ -365,7 +385,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 69
i32.const 2
call $~lib/env/abort
@@ -377,7 +397,7 @@
i32.eqz
if
i32.const 4
call $~lib/memory/memory.allocate
call $~lib/runtime/ALLOCATE
local.set $0
end
local.get $0
@@ -390,7 +410,7 @@
i32.eqz
if
i32.const 8
call $~lib/memory/memory.allocate
call $~lib/runtime/ALLOCATE
local.set $0
end
local.get $0
@@ -413,7 +433,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 86
i32.const 2
call $~lib/env/abort
@@ -426,7 +446,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 87
i32.const 2
call $~lib/env/abort
@@ -438,7 +458,7 @@
i32.eqz
if
i32.const 4
call $~lib/memory/memory.allocate
call $~lib/runtime/ALLOCATE
local.set $0
end
local.get $0
@@ -451,7 +471,7 @@
i32.eqz
if
i32.const 8
call $~lib/memory/memory.allocate
call $~lib/runtime/ALLOCATE
local.set $0
end
local.get $0
@@ -474,7 +494,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 106
i32.const 2
call $~lib/env/abort
@@ -487,7 +507,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 107
i32.const 2
call $~lib/env/abort
@@ -495,7 +515,16 @@
end
)
(func $start:call-super (; 19 ;) (type $FUNCSIG$v)
call $start:~lib/allocator/arena
global.get $~lib/memory/HEAP_BASE
i32.const 7
i32.add
i32.const 7
i32.const -1
i32.xor
i32.and
global.set $~lib/allocator/arena/startOffset
global.get $~lib/allocator/arena/startOffset
global.set $~lib/allocator/arena/offset
call $call-super/test1
call $call-super/test2
call $call-super/test3

@@ -2,7 +2,7 @@
(type $FUNCSIG$v (func))
(type $FUNCSIG$ii (func (param i32) (result i32)))
(memory $0 1)
(data (i32.const 8) "\08\00\00\00c\00l\00a\00s\00s\00.\00t\00s")
(data (i32.const 8) "\01\00\00\00\10\00\00\00c\00l\00a\00s\00s\00.\00t\00s")
(table $0 1 funcref)
(elem (i32.const 0) $start)
(export "memory" (memory $0))

@@ -8,11 +8,11 @@
(type $FUNCSIG$fiff (func (param i32 f32 f32) (result f32)))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\08\00\00\00c\00l\00a\00s\00s\00.\00t\00s\00")
(data (i32.const 8) "\01\00\00\00\10\00\00\00c\00l\00a\00s\00s\00.\00t\00s\00")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $class/Animal.ONE (mut i32) (i32.const 1))
(global $~lib/memory/HEAP_BASE i32 (i32.const 28))
(global $~lib/memory/HEAP_BASE i32 (i32.const 32))
(export "memory" (memory $0))
(export "table" (table $0))
(export "test" (func $class/test))
@@ -39,7 +39,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 13
i32.const 0
call $~lib/env/abort

@@ -3,7 +3,7 @@
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\08\00\00\00c\00o\00m\00m\00a\00.\00t\00s")
(data (i32.const 8) "\01\00\00\00\10\00\00\00c\00o\00m\00m\00a\00.\00t\00s")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $comma/a (mut i32) (i32.const 0))
@@ -25,7 +25,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 4
i32.const 0
call $~lib/env/abort
@@ -34,7 +34,7 @@
global.get $comma/b
if
i32.const 0
i32.const 8
i32.const 16
i32.const 5
i32.const 0
call $~lib/env/abort
@@ -52,7 +52,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 8
i32.const 0
call $~lib/env/abort
@@ -63,7 +63,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 9
i32.const 0
call $~lib/env/abort
@@ -85,7 +85,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 14
i32.const 0
call $~lib/env/abort
@@ -96,7 +96,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 15
i32.const 0
call $~lib/env/abort
@@ -115,7 +115,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 18
i32.const 0
call $~lib/env/abort
@@ -126,7 +126,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 19
i32.const 0
call $~lib/env/abort
@@ -156,7 +156,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 22
i32.const 0
call $~lib/env/abort

@@ -3,12 +3,12 @@
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\08\00\00\00c\00o\00m\00m\00a\00.\00t\00s\00")
(data (i32.const 8) "\01\00\00\00\10\00\00\00c\00o\00m\00m\00a\00.\00t\00s\00")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $comma/a (mut i32) (i32.const 0))
(global $comma/b (mut i32) (i32.const 0))
(global $~lib/memory/HEAP_BASE i32 (i32.const 28))
(global $~lib/memory/HEAP_BASE i32 (i32.const 32))
(export "memory" (memory $0))
(export "table" (table $0))
(start $start)
@@ -34,7 +34,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 4
i32.const 0
call $~lib/env/abort
@@ -46,7 +46,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 5
i32.const 0
call $~lib/env/abort
@@ -66,7 +66,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 8
i32.const 0
call $~lib/env/abort
@@ -78,7 +78,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 9
i32.const 0
call $~lib/env/abort
@@ -104,7 +104,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 14
i32.const 0
call $~lib/env/abort
@@ -116,7 +116,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 15
i32.const 0
call $~lib/env/abort
@@ -140,7 +140,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 18
i32.const 0
call $~lib/env/abort
@@ -152,7 +152,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 19
i32.const 0
call $~lib/env/abort
@@ -189,7 +189,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 22
i32.const 0
call $~lib/env/abort

@@ -1,6 +1,6 @@
(module
(type $FUNCSIG$v (func))
(type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$v (func))
(type $FUNCSIG$i (func (result i32)))
(memory $0 0)
(table $0 1 funcref)
@@ -21,7 +21,7 @@
(export "memory" (memory $0))
(export "table" (table $0))
(start $start)
(func $~lib/allocator/arena/__memory_allocate (; 0 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(func $~lib/memory/memory.allocate (; 0 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@@ -44,15 +44,15 @@
i32.add
i32.const -8
i32.and
local.tee $2
local.tee $0
current_memory
local.tee $3
local.tee $2
i32.const 16
i32.shl
i32.gt_u
if
local.get $3
local.get $2
local.get $0
local.get $1
i32.sub
i32.const 65535
@@ -61,16 +61,16 @@
i32.and
i32.const 16
i32.shr_u
local.tee $0
local.tee $3
local.get $2
local.get $3
local.get $0
i32.gt_s
select
grow_memory
i32.const 0
i32.lt_s
if
local.get $0
local.get $3
grow_memory
i32.const 0
i32.lt_s
@@ -79,87 +79,108 @@
end
end
end
local.get $2
local.get $0
global.set $~lib/allocator/arena/offset
local.get $1
)
(func $constructor/EmptyCtorWithFieldInit#constructor (; 1 ;) (type $FUNCSIG$i) (result i32)
(func $~lib/runtime/ALLOCATE (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
i32.const 1
i32.const 32
local.get $0
i32.const 7
i32.add
i32.clz
i32.sub
i32.shl
call $~lib/memory/memory.allocate
local.tee $1
i32.const -1520547049
i32.store
local.get $1
local.get $0
i32.store offset=4
local.get $1
i32.const 8
i32.add
)
(func $constructor/EmptyCtorWithFieldInit#constructor (; 2 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32)
i32.const 4
call $~lib/allocator/arena/__memory_allocate
call $~lib/runtime/ALLOCATE
local.tee $0
i32.const 1
i32.store
local.get $0
)
(func $constructor/EmptyCtorWithFieldNoInit#constructor (; 2 ;) (type $FUNCSIG$i) (result i32)
(func $constructor/EmptyCtorWithFieldNoInit#constructor (; 3 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32)
i32.const 4
call $~lib/allocator/arena/__memory_allocate
call $~lib/runtime/ALLOCATE
local.tee $0
i32.const 0
i32.store
local.get $0
)
(func $start:constructor (; 3 ;) (type $FUNCSIG$v)
(func $start:constructor (; 4 ;) (type $FUNCSIG$v)
(local $0 i32)
i32.const 8
global.set $~lib/allocator/arena/startOffset
global.get $~lib/allocator/arena/startOffset
global.set $~lib/allocator/arena/offset
i32.const 0
call $~lib/allocator/arena/__memory_allocate
call $~lib/runtime/ALLOCATE
global.set $constructor/emptyCtor
call $constructor/EmptyCtorWithFieldInit#constructor
global.set $constructor/emptyCtorWithFieldInit
call $constructor/EmptyCtorWithFieldNoInit#constructor
global.set $constructor/emptyCtorWithFieldNoInit
i32.const 0
call $~lib/allocator/arena/__memory_allocate
call $~lib/runtime/ALLOCATE
global.set $constructor/none
call $constructor/EmptyCtorWithFieldInit#constructor
global.set $constructor/justFieldInit
call $constructor/EmptyCtorWithFieldNoInit#constructor
global.set $constructor/justFieldNoInit
i32.const 0
call $~lib/allocator/arena/__memory_allocate
call $~lib/memory/memory.allocate
global.set $constructor/ctorReturns
block $__inlined_func$constructor/CtorConditionallyReturns#constructor (result i32)
global.get $constructor/b
if
i32.const 0
call $~lib/allocator/arena/__memory_allocate
call $~lib/memory/memory.allocate
br $__inlined_func$constructor/CtorConditionallyReturns#constructor
end
i32.const 0
call $~lib/allocator/arena/__memory_allocate
call $~lib/runtime/ALLOCATE
end
global.set $constructor/ctorConditionallyReturns
i32.const 0
call $~lib/allocator/arena/__memory_allocate
call $~lib/runtime/ALLOCATE
global.set $constructor/ctorAllocates
block (result i32)
global.get $constructor/b
if
i32.const 0
call $~lib/allocator/arena/__memory_allocate
call $~lib/runtime/ALLOCATE
local.set $0
end
local.get $0
i32.eqz
end
if
if (result i32)
i32.const 0
call $~lib/allocator/arena/__memory_allocate
local.set $0
end
call $~lib/runtime/ALLOCATE
else
local.get $0
end
global.set $constructor/ctorConditionallyAllocates
)
(func $start (; 4 ;) (type $FUNCSIG$v)
(func $start (; 5 ;) (type $FUNCSIG$v)
call $start:constructor
)
(func $null (; 5 ;) (type $FUNCSIG$v)
(func $null (; 6 ;) (type $FUNCSIG$v)
nop
)
)

@@ -1,9 +1,12 @@
(module
(type $FUNCSIG$v (func))
(type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$v (func))
(memory $0 0)
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0))
(global $~lib/runtime/HEADER_SIZE i32 (i32.const 8))
(global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049))
(global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0))
(global $~lib/allocator/arena/offset (mut i32) (i32.const 0))
(global $constructor/emptyCtor (mut i32) (i32.const 0))
@@ -21,40 +24,44 @@
(export "memory" (memory $0))
(export "table" (table $0))
(start $start)
(func $start:~lib/allocator/arena (; 0 ;) (type $FUNCSIG$v)
global.get $~lib/memory/HEAP_BASE
i32.const 7
(func $~lib/runtime/ADJUST (; 0 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
i32.const 1
i32.const 32
local.get $0
global.get $~lib/runtime/HEADER_SIZE
i32.add
i32.const 7
i32.const -1
i32.xor
i32.and
global.set $~lib/allocator/arena/startOffset
global.get $~lib/allocator/arena/startOffset
global.set $~lib/allocator/arena/offset
i32.const 1
i32.sub
i32.clz
i32.sub
i32.shl
)
(func $~lib/allocator/arena/__memory_allocate (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(func $~lib/memory/memory.allocate (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(local $6 i32)
(local $7 i32)
block $~lib/allocator/arena/__memory_allocate|inlined.0 (result i32)
local.get $0
local.set $1
local.get $1
i32.const 1073741824
i32.gt_u
if
unreachable
end
global.get $~lib/allocator/arena/offset
local.set $1
local.get $1
local.get $0
local.tee $2
i32.const 1
local.tee $3
local.set $2
local.get $2
local.get $1
local.tee $3
i32.const 1
local.tee $4
local.get $3
local.get $4
i32.gt_u
select
i32.add
@@ -64,17 +71,17 @@
i32.const -1
i32.xor
i32.and
local.set $4
local.set $3
current_memory
local.set $5
local.set $4
local.get $3
local.get $4
local.get $5
i32.const 16
i32.shl
i32.gt_u
if
local.get $4
local.get $1
local.get $3
local.get $2
i32.sub
i32.const 65535
i32.add
@@ -84,22 +91,22 @@
i32.and
i32.const 16
i32.shr_u
local.set $2
local.get $5
local.tee $3
local.get $2
local.set $5
local.get $4
local.tee $6
local.get $3
local.get $5
local.tee $7
local.get $6
local.get $7
i32.gt_s
select
local.set $3
local.get $3
local.set $6
local.get $6
grow_memory
i32.const 0
i32.lt_s
if
local.get $2
local.get $5
grow_memory
i32.const 0
i32.lt_s
@@ -108,21 +115,34 @@
end
end
end
local.get $4
local.get $3
global.set $~lib/allocator/arena/offset
local.get $1
)
(func $~lib/memory/memory.allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
call $~lib/allocator/arena/__memory_allocate
local.get $2
end
return
)
(func $~lib/runtime/ALLOCATE (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
local.get $0
call $~lib/runtime/ADJUST
call $~lib/memory/memory.allocate
local.set $1
local.get $1
global.get $~lib/runtime/HEADER_MAGIC
i32.store
local.get $1
local.get $0
i32.store offset=4
local.get $1
global.get $~lib/runtime/HEADER_SIZE
i32.add
)
(func $constructor/EmptyCtor#constructor (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.eqz
if
i32.const 0
call $~lib/memory/memory.allocate
call $~lib/runtime/ALLOCATE
local.set $0
end
local.get $0
@@ -132,7 +152,7 @@
i32.eqz
if
i32.const 4
call $~lib/memory/memory.allocate
call $~lib/runtime/ALLOCATE
local.set $0
end
local.get $0
@@ -145,7 +165,7 @@
i32.eqz
if
i32.const 4
call $~lib/memory/memory.allocate
call $~lib/runtime/ALLOCATE
local.set $0
end
local.get $0
@@ -158,7 +178,7 @@
i32.eqz
if
i32.const 0
call $~lib/memory/memory.allocate
call $~lib/runtime/ALLOCATE
local.set $0
end
local.get $0
@@ -168,7 +188,7 @@
i32.eqz
if
i32.const 4
call $~lib/memory/memory.allocate
call $~lib/runtime/ALLOCATE
local.set $0
end
local.get $0
@@ -181,7 +201,7 @@
i32.eqz
if
i32.const 4
call $~lib/memory/memory.allocate
call $~lib/runtime/ALLOCATE
local.set $0
end
local.get $0
@@ -190,33 +210,21 @@
local.get $0
)
(func $constructor/CtorReturns#constructor (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
block $~lib/memory/memory.allocate|inlined.0 (result i32)
i32.const 0
local.set $1
local.get $1
call $~lib/allocator/arena/__memory_allocate
br $~lib/memory/memory.allocate|inlined.0
end
call $~lib/memory/memory.allocate
)
(func $constructor/CtorConditionallyReturns#constructor (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
global.get $constructor/b
if
block $~lib/memory/memory.allocate|inlined.1 (result i32)
i32.const 0
local.set $1
local.get $1
call $~lib/allocator/arena/__memory_allocate
br $~lib/memory/memory.allocate|inlined.1
end
call $~lib/memory/memory.allocate
return
end
local.get $0
i32.eqz
if
i32.const 0
call $~lib/memory/memory.allocate
call $~lib/runtime/ALLOCATE
local.set $0
end
local.get $0
@@ -227,7 +235,7 @@
i32.eqz
if
i32.const 0
call $~lib/memory/memory.allocate
call $~lib/runtime/ALLOCATE
local.set $0
end
local.get $0
@@ -243,7 +251,7 @@
i32.eqz
if
i32.const 0
call $~lib/memory/memory.allocate
call $~lib/runtime/ALLOCATE
local.set $0
end
local.get $0
@@ -254,13 +262,22 @@
i32.eqz
if
i32.const 0
call $~lib/memory/memory.allocate
call $~lib/runtime/ALLOCATE
local.set $0
end
local.get $0
)
(func $start:constructor (; 13 ;) (type $FUNCSIG$v)
call $start:~lib/allocator/arena
global.get $~lib/memory/HEAP_BASE
i32.const 7
i32.add
i32.const 7
i32.const -1
i32.xor
i32.and
global.set $~lib/allocator/arena/startOffset
global.get $~lib/allocator/arena/startOffset
global.set $~lib/allocator/arena/offset
i32.const 0
call $constructor/EmptyCtor#constructor
global.set $constructor/emptyCtor

@@ -7,7 +7,7 @@
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(import "declare" "my.externalFunction" (func $declare/my.externalFunction))
(memory $0 1)
(data (i32.const 8) "\n\00\00\00d\00e\00c\00l\00a\00r\00e\00.\00t\00s")
(data (i32.const 8) "\01\00\00\00\14\00\00\00d\00e\00c\00l\00a\00r\00e\00.\00t\00s")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(export "memory" (memory $0))
@@ -20,7 +20,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 5
i32.const 0
call $~lib/env/abort
@@ -32,7 +32,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 13
i32.const 0
call $~lib/env/abort

@@ -7,10 +7,10 @@
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(import "declare" "my.externalFunction" (func $declare/my.externalFunction))
(memory $0 1)
(data (i32.const 8) "\n\00\00\00d\00e\00c\00l\00a\00r\00e\00.\00t\00s\00")
(data (i32.const 8) "\01\00\00\00\14\00\00\00d\00e\00c\00l\00a\00r\00e\00.\00t\00s\00")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $~lib/memory/HEAP_BASE i32 (i32.const 32))
(global $~lib/memory/HEAP_BASE i32 (i32.const 36))
(export "memory" (memory $0))
(export "table" (table $0))
(start $start)
@@ -22,7 +22,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 5
i32.const 0
call $~lib/env/abort
@@ -35,7 +35,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 13
i32.const 0
call $~lib/env/abort

@@ -3,7 +3,7 @@
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\05\00\00\00d\00o\00.\00t\00s")
(data (i32.const 8) "\01\00\00\00\n\00\00\00d\00o\00.\00t\00s")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $do/n (mut i32) (i32.const 10))
@@ -29,7 +29,7 @@
global.get $do/n
if
i32.const 0
i32.const 8
i32.const 16
i32.const 7
i32.const 0
call $~lib/env/abort
@@ -40,7 +40,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 8
i32.const 0
call $~lib/env/abort
@@ -62,7 +62,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 12
i32.const 0
call $~lib/env/abort
@@ -96,7 +96,7 @@
global.get $do/n
if
i32.const 0
i32.const 8
i32.const 16
i32.const 24
i32.const 2
call $~lib/env/abort
@@ -107,7 +107,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 25
i32.const 2
call $~lib/env/abort
@@ -119,7 +119,7 @@
global.get $do/n
if
i32.const 0
i32.const 8
i32.const 16
i32.const 27
i32.const 0
call $~lib/env/abort
@@ -130,7 +130,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 28
i32.const 0
call $~lib/env/abort
@@ -141,7 +141,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 29
i32.const 0
call $~lib/env/abort

@@ -3,13 +3,13 @@
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\05\00\00\00d\00o\00.\00t\00s\00")
(data (i32.const 8) "\01\00\00\00\n\00\00\00d\00o\00.\00t\00s\00")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $do/n (mut i32) (i32.const 10))
(global $do/m (mut i32) (i32.const 0))
(global $do/o (mut i32) (i32.const 0))
(global $~lib/memory/HEAP_BASE i32 (i32.const 24))
(global $~lib/memory/HEAP_BASE i32 (i32.const 28))
(export "memory" (memory $0))
(export "table" (table $0))
(start $start)
@@ -37,7 +37,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 7
i32.const 0
call $~lib/env/abort
@@ -49,7 +49,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 8
i32.const 0
call $~lib/env/abort
@@ -77,7 +77,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 12
i32.const 0
call $~lib/env/abort
@@ -120,7 +120,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 24
i32.const 2
call $~lib/env/abort
@@ -132,7 +132,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 25
i32.const 2
call $~lib/env/abort
@@ -149,7 +149,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 27
i32.const 0
call $~lib/env/abort
@@ -161,7 +161,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 28
i32.const 0
call $~lib/env/abort
@@ -173,7 +173,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 29
i32.const 0
call $~lib/env/abort

@@ -0,0 +1,8 @@
import "allocator/arena";
var arr: i32[] = [1, 2, 3];
assert(arr.length == 3);
assert(arr[0] == 1);
assert(arr[1] == 2);
assert(arr[2] == 3);

@@ -1,15 +1,13 @@
(module
(type $FUNCSIG$v (func))
(type $FUNCSIG$iii (func (param i32 i32) (result i32)))
(type $FUNCSIG$i (func (result i32)))
(type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$vii (func (param i32 i32)))
(type $FUNCSIG$vi (func (param i32)))
(type $FUNCSIG$v (func))
(memory $0 0)
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0))
(global $~lib/allocator/arena/offset (mut i32) (i32.const 0))
(global $exports/Animal.CAT i32 (i32.const 0))
(global $exports/Animal.DOG i32 (i32.const 1))
(global $exports/animals.Animal.CAT i32 (i32.const 0))
@@ -17,6 +15,8 @@
(global $exports/Car.TIRES i32 (i32.const 4))
(global $exports/vehicles.Car.TIRES i32 (i32.const 4))
(global $exports/outer.inner.a i32 (i32.const 42))
(global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0))
(global $~lib/allocator/arena/offset (mut i32) (i32.const 0))
(global $~lib/argc (mut i32) (i32.const 0))
(export "memory" (memory $0))
(export "table" (table $0))
@@ -59,18 +59,30 @@
(func $exports/Car.getNumTires (; 2 ;) (type $FUNCSIG$i) (result i32)
i32.const 4
)
(func $~lib/allocator/arena/__memory_allocate (; 3 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32)
(func $~lib/memory/memory.allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
local.get $0
i32.const 1073741824
i32.gt_u
if
unreachable
end
global.get $~lib/allocator/arena/offset
local.tee $0
i32.const 11
local.tee $1
local.get $0
i32.const 1
local.get $0
i32.const 1
i32.gt_u
select
i32.add
i32.const 7
i32.add
i32.const -8
i32.and
local.tee $1
local.tee $0
current_memory
local.tee $2
i32.const 16
@@ -78,8 +90,8 @@
i32.gt_u
if
local.get $2
local.get $1
local.get $0
local.get $1
i32.sub
i32.const 65535
i32.add
@@ -105,9 +117,9 @@
end
end
end
local.get $1
global.set $~lib/allocator/arena/offset
local.get $0
global.set $~lib/allocator/arena/offset
local.get $1
)
(func $exports/Car#get:numDoors (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
@@ -167,7 +179,17 @@
local.get $0
i32.eqz
if
call $~lib/allocator/arena/__memory_allocate
i32.const 16
call $~lib/memory/memory.allocate
local.tee $0
i32.const -1520547049
i32.store
local.get $0
i32.const 4
i32.store offset=4
local.get $0
i32.const 8
i32.add
local.set $0
end
local.get $0

@@ -1,15 +1,13 @@
(module
(type $FUNCSIG$v (func))
(type $FUNCSIG$iii (func (param i32 i32) (result i32)))
(type $FUNCSIG$i (func (result i32)))
(type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$vii (func (param i32 i32)))
(type $FUNCSIG$vi (func (param i32)))
(type $FUNCSIG$v (func))
(memory $0 0)
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0))
(global $~lib/allocator/arena/offset (mut i32) (i32.const 0))
(global $exports/Animal.CAT i32 (i32.const 0))
(global $exports/Animal.DOG i32 (i32.const 1))
(global $exports/animals.Animal.CAT i32 (i32.const 0))
@@ -17,6 +15,11 @@
(global $exports/Car.TIRES i32 (i32.const 4))
(global $exports/vehicles.Car.TIRES i32 (i32.const 4))
(global $exports/outer.inner.a i32 (i32.const 42))
(global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0))
(global $~lib/runtime/HEADER_SIZE i32 (i32.const 8))
(global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049))
(global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0))
(global $~lib/allocator/arena/offset (mut i32) (i32.const 0))
(global $~lib/memory/HEAP_BASE i32 (i32.const 8))
(global $~lib/argc (mut i32) (i32.const 0))
(export "memory" (memory $0))
@@ -47,7 +50,201 @@
(export "vehicles.Car.getNumTires" (func $exports/vehicles.Car.getNumTires))
(export "outer.inner.a" (global $exports/outer.inner.a))
(start $start)
(func $start:~lib/allocator/arena (; 0 ;) (type $FUNCSIG$v)
(func $exports/add (; 0 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0
local.get $1
i32.add
)
(func $exports/subOpt (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0
local.get $1
i32.sub
)
(func $exports/math.sub (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0
local.get $1
i32.sub
)
(func $exports/Car.getNumTires (; 3 ;) (type $FUNCSIG$i) (result i32)
global.get $exports/Car.TIRES
)
(func $~lib/runtime/ADJUST (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
i32.const 1
i32.const 32
local.get $0
global.get $~lib/runtime/HEADER_SIZE
i32.add
i32.const 1
i32.sub
i32.clz
i32.sub
i32.shl
)
(func $~lib/memory/memory.allocate (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(local $6 i32)
(local $7 i32)
block $~lib/allocator/arena/__memory_allocate|inlined.0 (result i32)
local.get $0
local.set $1
local.get $1
i32.const 1073741824
i32.gt_u
if
unreachable
end
global.get $~lib/allocator/arena/offset
local.set $2
local.get $2
local.get $1
local.tee $3
i32.const 1
local.tee $4
local.get $3
local.get $4
i32.gt_u
select
i32.add
i32.const 7
i32.add
i32.const 7
i32.const -1
i32.xor
i32.and
local.set $3
current_memory
local.set $4
local.get $3
local.get $4
i32.const 16
i32.shl
i32.gt_u
if
local.get $3
local.get $2
i32.sub
i32.const 65535
i32.add
i32.const 65535
i32.const -1
i32.xor
i32.and
i32.const 16
i32.shr_u
local.set $5
local.get $4
local.tee $6
local.get $5
local.tee $7
local.get $6
local.get $7
i32.gt_s
select
local.set $6
local.get $6
grow_memory
i32.const 0
i32.lt_s
if
local.get $5
grow_memory
i32.const 0
i32.lt_s
if
unreachable
end
end
end
local.get $3
global.set $~lib/allocator/arena/offset
local.get $2
end
return
)
(func $~lib/runtime/ALLOCATE (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
local.get $0
call $~lib/runtime/ADJUST
call $~lib/memory/memory.allocate
local.set $1
local.get $1
global.get $~lib/runtime/HEADER_MAGIC
i32.store
local.get $1
local.get $0
i32.store offset=4
local.get $1
global.get $~lib/runtime/HEADER_SIZE
i32.add
)
(func $exports/Car#constructor (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
block (result i32)
local.get $0
i32.eqz
if
i32.const 4
call $~lib/runtime/ALLOCATE
local.set $0
end
local.get $0
local.get $1
i32.store
local.get $0
end
local.get $1
i32.store
local.get $0
)
(func $exports/Car#get:numDoors (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.load
)
(func $exports/Car#set:numDoors (; 9 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
local.get $0
local.get $1
i32.store
)
(func $exports/Car#openDoors (; 10 ;) (type $FUNCSIG$vi) (param $0 i32)
nop
)
(func $exports/vehicles.Car.getNumTires (; 11 ;) (type $FUNCSIG$i) (result i32)
global.get $exports/vehicles.Car.TIRES
)
(func $exports/vehicles.Car#constructor (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
block (result i32)
local.get $0
i32.eqz
if
i32.const 4
call $~lib/runtime/ALLOCATE
local.set $0
end
local.get $0
local.get $1
i32.store
local.get $0
end
local.get $1
i32.store
local.get $0
)
(func $exports/vehicles.Car#get:numDoors (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.load
)
(func $exports/vehicles.Car#set:numDoors (; 14 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
local.get $0
local.get $1
i32.store
)
(func $exports/vehicles.Car#openDoors (; 15 ;) (type $FUNCSIG$vi) (param $0 i32)
nop
)
(func $start (; 16 ;) (type $FUNCSIG$v)
global.get $~lib/memory/HEAP_BASE
i32.const 7
i32.add
@@ -59,180 +256,9 @@
global.get $~lib/allocator/arena/startOffset
global.set $~lib/allocator/arena/offset
)
(func $start:exports (; 1 ;) (type $FUNCSIG$v)
call $start:~lib/allocator/arena
(func $null (; 17 ;) (type $FUNCSIG$v)
)
(func $exports/add (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0
local.get $1
i32.add
)
(func $exports/subOpt (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0
local.get $1
i32.sub
)
(func $exports/math.sub (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0
local.get $1
i32.sub
)
(func $exports/Car.getNumTires (; 5 ;) (type $FUNCSIG$i) (result i32)
global.get $exports/Car.TIRES
)
(func $~lib/allocator/arena/__memory_allocate (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(local $6 i32)
local.get $0
i32.const 1073741824
i32.gt_u
if
unreachable
end
global.get $~lib/allocator/arena/offset
local.set $1
local.get $1
local.get $0
local.tee $2
i32.const 1
local.tee $3
local.get $2
local.get $3
i32.gt_u
select
i32.add
i32.const 7
i32.add
i32.const 7
i32.const -1
i32.xor
i32.and
local.set $4
current_memory
local.set $5
local.get $4
local.get $5
i32.const 16
i32.shl
i32.gt_u
if
local.get $4
local.get $1
i32.sub
i32.const 65535
i32.add
i32.const 65535
i32.const -1
i32.xor
i32.and
i32.const 16
i32.shr_u
local.set $2
local.get $5
local.tee $3
local.get $2
local.tee $6
local.get $3
local.get $6
i32.gt_s
select
local.set $3
local.get $3
grow_memory
i32.const 0
i32.lt_s
if
local.get $2
grow_memory
i32.const 0
i32.lt_s
if
unreachable
end
end
end
local.get $4
global.set $~lib/allocator/arena/offset
local.get $1
)
(func $~lib/memory/memory.allocate (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
call $~lib/allocator/arena/__memory_allocate
return
)
(func $exports/Car#constructor (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
block (result i32)
local.get $0
i32.eqz
if
i32.const 4
call $~lib/memory/memory.allocate
local.set $0
end
local.get $0
local.get $1
i32.store
local.get $0
end
local.get $1
i32.store
local.get $0
)
(func $exports/Car#get:numDoors (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.load
)
(func $exports/Car#set:numDoors (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
local.get $0
local.get $1
i32.store
)
(func $exports/Car#openDoors (; 11 ;) (type $FUNCSIG$vi) (param $0 i32)
nop
)
(func $exports/vehicles.Car.getNumTires (; 12 ;) (type $FUNCSIG$i) (result i32)
global.get $exports/vehicles.Car.TIRES
)
(func $exports/vehicles.Car#constructor (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
block (result i32)
local.get $0
i32.eqz
if
i32.const 4
call $~lib/memory/memory.allocate
local.set $0
end
local.get $0
local.get $1
i32.store
local.get $0
end
local.get $1
i32.store
local.get $0
)
(func $exports/vehicles.Car#get:numDoors (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.load
)
(func $exports/vehicles.Car#set:numDoors (; 15 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
local.get $0
local.get $1
i32.store
)
(func $exports/vehicles.Car#openDoors (; 16 ;) (type $FUNCSIG$vi) (param $0 i32)
nop
)
(func $start (; 17 ;) (type $FUNCSIG$v)
call $start:exports
)
(func $null (; 18 ;) (type $FUNCSIG$v)
)
(func $exports/subOpt|trampoline (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(func $exports/subOpt|trampoline (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
block $1of1
block $0of1
block $outOfRange
@@ -250,20 +276,20 @@
local.get $1
call $exports/subOpt
)
(func $~lib/setargc (; 20 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $~lib/setargc (; 19 ;) (type $FUNCSIG$vi) (param $0 i32)
local.get $0
global.set $~lib/argc
)
(func $Car#get:doors (; 21 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(func $Car#get:doors (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.load
)
(func $Car#set:doors (; 22 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(func $Car#set:doors (; 21 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
local.get $0
local.get $1
i32.store
)
(func $exports/Car#constructor|trampoline (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(func $exports/Car#constructor|trampoline (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
block $1of1
block $0of1
block $outOfRange
@@ -279,16 +305,16 @@
local.get $1
call $exports/Car#constructor
)
(func $vehicles.Car#get:doors (; 24 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(func $vehicles.Car#get:doors (; 23 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.load
)
(func $vehicles.Car#set:doors (; 25 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(func $vehicles.Car#set:doors (; 24 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
local.get $0
local.get $1
i32.store
)
(func $exports/vehicles.Car#constructor|trampoline (; 26 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(func $exports/vehicles.Car#constructor|trampoline (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
block $1of1
block $0of1
block $outOfRange

@@ -3,7 +3,7 @@
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\06\00\00\00f\00o\00r\00.\00t\00s")
(data (i32.const 8) "\01\00\00\00\0c\00\00\00f\00o\00r\00.\00t\00s")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $for/i (mut i32) (i32.const 0))
@@ -33,7 +33,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 5
i32.const 0
call $~lib/env/abort
@@ -68,7 +68,7 @@
global.get $for/i
if
i32.const 0
i32.const 8
i32.const 16
i32.const 12
i32.const 0
call $~lib/env/abort
@@ -115,7 +115,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 19
i32.const 0
call $~lib/env/abort

@@ -3,11 +3,11 @@
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\06\00\00\00f\00o\00r\00.\00t\00s\00")
(data (i32.const 8) "\01\00\00\00\0c\00\00\00f\00o\00r\00.\00t\00s\00")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $for/i (mut i32) (i32.const 0))
(global $~lib/memory/HEAP_BASE i32 (i32.const 24))
(global $~lib/memory/HEAP_BASE i32 (i32.const 28))
(export "memory" (memory $0))
(export "table" (table $0))
(start $start)
@@ -41,7 +41,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 5
i32.const 0
call $~lib/env/abort
@@ -89,7 +89,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 12
i32.const 0
call $~lib/env/abort
@@ -164,7 +164,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 19
i32.const 0
call $~lib/env/abort

@@ -6,7 +6,7 @@
(type $FUNCSIG$iii (func (param i32 i32) (result i32)))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\16\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s")
(data (i32.const 8) "\01\00\00\00,\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s")
(table $0 11 funcref)
(elem (i32.const 0) $start:function-expression~someName $start:function-expression~anonymous|0 $start:function-expression~anonymous|0 $start:function-expression~someName $start:function-expression~anonymous|2 $start:function-expression~anonymous|3 $start:function-expression~anonymous|4 $start:function-expression~anonymous|5 $start:function-expression~anonymous|3 $start:function-expression~anonymous|4 $start:function-expression~anonymous|5)
(global $function-expression/f1 (mut i32) (i32.const 1))
@@ -47,7 +47,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 4
i32.const 0
call $~lib/env/abort
@@ -62,7 +62,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 9
i32.const 0
call $~lib/env/abort
@@ -80,7 +80,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 16
i32.const 0
call $~lib/env/abort
@@ -96,7 +96,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 21
i32.const 0
call $~lib/env/abort
@@ -112,7 +112,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 22
i32.const 0
call $~lib/env/abort
@@ -128,7 +128,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 23
i32.const 0
call $~lib/env/abort
@@ -144,7 +144,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 34
i32.const 0
call $~lib/env/abort
@@ -160,7 +160,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 35
i32.const 0
call $~lib/env/abort
@@ -176,7 +176,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 36
i32.const 0
call $~lib/env/abort

@@ -6,7 +6,7 @@
(type $FUNCSIG$iii (func (param i32 i32) (result i32)))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\16\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s\00")
(data (i32.const 8) "\01\00\00\00,\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s\00")
(table $0 11 funcref)
(elem (i32.const 0) $null $start:function-expression~anonymous|0 $start:function-expression~anonymous|1 $start:function-expression~someName $start:function-expression~anonymous|2 $start:function-expression~anonymous|3 $start:function-expression~anonymous|4 $start:function-expression~anonymous|5 $function-expression/testOmittedReturn1~anonymous|0 $function-expression/testOmittedReturn2~anonymous|0 $function-expression/testOmittedReturn3~anonymous|0)
(global $function-expression/f1 (mut i32) (i32.const 1))
@@ -14,7 +14,7 @@
(global $function-expression/f2 (mut i32) (i32.const 2))
(global $function-expression/f3 (mut i32) (i32.const 3))
(global $function-expression/f4 (mut i32) (i32.const 4))
(global $~lib/memory/HEAP_BASE i32 (i32.const 56))
(global $~lib/memory/HEAP_BASE i32 (i32.const 60))
(export "memory" (memory $0))
(export "table" (table $0))
(start $start)
@@ -82,7 +82,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 4
i32.const 0
call $~lib/env/abort
@@ -100,7 +100,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 9
i32.const 0
call $~lib/env/abort
@@ -123,7 +123,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 16
i32.const 0
call $~lib/env/abort
@@ -136,7 +136,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 21
i32.const 0
call $~lib/env/abort
@@ -149,7 +149,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 22
i32.const 0
call $~lib/env/abort
@@ -162,7 +162,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 23
i32.const 0
call $~lib/env/abort
@@ -181,7 +181,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 34
i32.const 0
call $~lib/env/abort
@@ -200,7 +200,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 35
i32.const 0
call $~lib/env/abort
@@ -219,7 +219,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 36
i32.const 0
call $~lib/env/abort

@@ -6,7 +6,7 @@
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\11\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00t\00y\00p\00e\00s\00.\00t\00s")
(data (i32.const 8) "\01\00\00\00\"\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00t\00y\00p\00e\00s\00.\00t\00s")
(table $0 5 funcref)
(elem (i32.const 0) $null $function-types/makeAdder<i32>~anonymous|0 $function-types/makeAdder<i64>~anonymous|0 $function-types/makeAdder<f64>~anonymous|0 $function-types/makeAdder<i32>~anonymous|0)
(global $function-types/i32Adder (mut i32) (i32.const 0))
@@ -44,7 +44,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 11
i32.const 0
call $~lib/env/abort
@@ -62,7 +62,7 @@
i64.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 15
i32.const 0
call $~lib/env/abort
@@ -78,7 +78,7 @@
f64.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 17
i32.const 0
call $~lib/env/abort
@@ -94,7 +94,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 23
i32.const 0
call $~lib/env/abort
@@ -110,7 +110,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 29
i32.const 0
call $~lib/env/abort
@@ -126,7 +126,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 35
i32.const 0
call $~lib/env/abort
@@ -157,7 +157,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 41
i32.const 0
call $~lib/env/abort
@@ -173,7 +173,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 42
i32.const 0
call $~lib/env/abort

@@ -8,13 +8,13 @@
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\11\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00t\00y\00p\00e\00s\00.\00t\00s\00")
(data (i32.const 8) "\01\00\00\00\"\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00t\00y\00p\00e\00s\00.\00t\00s\00")
(table $0 5 funcref)
(elem (i32.const 0) $null $function-types/makeAdder<i32>~anonymous|0 $function-types/makeAdder<i64>~anonymous|0 $function-types/makeAdder<f64>~anonymous|0 $function-types/addI32)
(global $function-types/i32Adder (mut i32) (i32.const 0))
(global $~lib/argc (mut i32) (i32.const 0))
(global $function-types/i64Adder (mut i32) (i32.const 0))
(global $~lib/memory/HEAP_BASE i32 (i32.const 48))
(global $~lib/memory/HEAP_BASE i32 (i32.const 52))
(export "memory" (memory $0))
(export "table" (table $0))
(start $start)
@@ -106,7 +106,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 11
i32.const 0
call $~lib/env/abort
@@ -127,7 +127,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 15
i32.const 0
call $~lib/env/abort
@@ -146,7 +146,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 17
i32.const 0
call $~lib/env/abort
@@ -161,7 +161,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 23
i32.const 0
call $~lib/env/abort
@@ -175,7 +175,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 29
i32.const 0
call $~lib/env/abort
@@ -190,7 +190,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 35
i32.const 0
call $~lib/env/abort
@@ -209,7 +209,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 41
i32.const 0
call $~lib/env/abort
@@ -224,7 +224,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 42
i32.const 0
call $~lib/env/abort

@@ -1,6 +1,7 @@
(module
(type $FUNCSIG$v (func))
(type $FUNCSIG$i (func (result i32)))
(type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$v (func))
(memory $0 0)
(table $0 2 funcref)
(elem (i32.const 0) $null $getter-call/C#get:x~anonymous|0)
@@ -11,18 +12,30 @@
(export "table" (table $0))
(export "test" (func $getter-call/test))
(start $start)
(func $~lib/allocator/arena/__memory_allocate (; 0 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32)
(func $~lib/memory/memory.allocate (; 0 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
local.get $0
i32.const 1073741824
i32.gt_u
if
unreachable
end
global.get $~lib/allocator/arena/offset
local.tee $0
i32.const 8
local.tee $1
local.get $0
i32.const 1
local.get $0
i32.const 1
i32.gt_u
select
i32.add
i32.const 7
i32.add
i32.const -8
i32.and
local.tee $1
local.tee $0
current_memory
local.tee $2
i32.const 16
@@ -30,8 +43,8 @@
i32.gt_u
if
local.get $2
local.get $1
local.get $0
local.get $1
i32.sub
i32.const 65535
i32.add
@@ -57,16 +70,23 @@
end
end
end
local.get $1
global.set $~lib/allocator/arena/offset
local.get $0
global.set $~lib/allocator/arena/offset
local.get $1
)
(func $getter-call/C#get:x~anonymous|0 (; 1 ;) (type $FUNCSIG$i) (result i32)
i32.const 42
)
(func $getter-call/test (; 2 ;) (type $FUNCSIG$i) (result i32)
call $~lib/allocator/arena/__memory_allocate
drop
(local $0 i32)
i32.const 8
call $~lib/memory/memory.allocate
local.tee $0
i32.const -1520547049
i32.store
local.get $0
i32.const 0
i32.store offset=4
i32.const 0
global.set $~lib/argc
i32.const 1

@@ -1,10 +1,13 @@
(module
(type $FUNCSIG$v (func))
(type $FUNCSIG$i (func (result i32)))
(type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$v (func))
(memory $0 0)
(table $0 2 funcref)
(elem (i32.const 0) $null $getter-call/C#get:x~anonymous|0)
(global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0))
(global $~lib/runtime/HEADER_SIZE i32 (i32.const 8))
(global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049))
(global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0))
(global $~lib/allocator/arena/offset (mut i32) (i32.const 0))
(global $~lib/argc (mut i32) (i32.const 0))
@@ -13,7 +16,147 @@
(export "table" (table $0))
(export "test" (func $getter-call/test))
(start $start)
(func $start:~lib/allocator/arena (; 0 ;) (type $FUNCSIG$v)
(func $~lib/runtime/ADJUST (; 0 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
i32.const 1
i32.const 32
local.get $0
global.get $~lib/runtime/HEADER_SIZE
i32.add
i32.const 1
i32.sub
i32.clz
i32.sub
i32.shl
)
(func $~lib/memory/memory.allocate (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(local $6 i32)
(local $7 i32)
block $~lib/allocator/arena/__memory_allocate|inlined.0 (result i32)
local.get $0
local.set $1
local.get $1
i32.const 1073741824
i32.gt_u
if
unreachable
end
global.get $~lib/allocator/arena/offset
local.set $2
local.get $2
local.get $1
local.tee $3
i32.const 1
local.tee $4
local.get $3
local.get $4
i32.gt_u
select
i32.add
i32.const 7
i32.add
i32.const 7
i32.const -1
i32.xor
i32.and
local.set $3
current_memory
local.set $4
local.get $3
local.get $4
i32.const 16
i32.shl
i32.gt_u
if
local.get $3
local.get $2
i32.sub
i32.const 65535
i32.add
i32.const 65535
i32.const -1
i32.xor
i32.and
i32.const 16
i32.shr_u
local.set $5
local.get $4
local.tee $6
local.get $5
local.tee $7
local.get $6
local.get $7
i32.gt_s
select
local.set $6
local.get $6
grow_memory
i32.const 0
i32.lt_s
if
local.get $5
grow_memory
i32.const 0
i32.lt_s
if
unreachable
end
end
end
local.get $3
global.set $~lib/allocator/arena/offset
local.get $2
end
return
)
(func $~lib/runtime/ALLOCATE (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
local.get $0
call $~lib/runtime/ADJUST
call $~lib/memory/memory.allocate
local.set $1
local.get $1
global.get $~lib/runtime/HEADER_MAGIC
i32.store
local.get $1
local.get $0
i32.store offset=4
local.get $1
global.get $~lib/runtime/HEADER_SIZE
i32.add
)
(func $getter-call/C#constructor (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.eqz
if
i32.const 0
call $~lib/runtime/ALLOCATE
local.set $0
end
local.get $0
)
(func $getter-call/C#get:x~anonymous|0 (; 4 ;) (type $FUNCSIG$i) (result i32)
i32.const 42
)
(func $getter-call/C#get:x (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
i32.const 1
)
(func $getter-call/test (; 6 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32)
i32.const 0
call $getter-call/C#constructor
local.set $0
i32.const 0
global.set $~lib/argc
local.get $0
call $getter-call/C#get:x
call_indirect (type $FUNCSIG$i)
)
(func $start (; 7 ;) (type $FUNCSIG$v)
global.get $~lib/memory/HEAP_BASE
i32.const 7
i32.add
@@ -25,123 +168,6 @@
global.get $~lib/allocator/arena/startOffset
global.set $~lib/allocator/arena/offset
)
(func $start:getter-call (; 1 ;) (type $FUNCSIG$v)
call $start:~lib/allocator/arena
)
(func $~lib/allocator/arena/__memory_allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(local $6 i32)
local.get $0
i32.const 1073741824
i32.gt_u
if
unreachable
end
global.get $~lib/allocator/arena/offset
local.set $1
local.get $1
local.get $0
local.tee $2
i32.const 1
local.tee $3
local.get $2
local.get $3
i32.gt_u
select
i32.add
i32.const 7
i32.add
i32.const 7
i32.const -1
i32.xor
i32.and
local.set $4
current_memory
local.set $5
local.get $4
local.get $5
i32.const 16
i32.shl
i32.gt_u
if
local.get $4
local.get $1
i32.sub
i32.const 65535
i32.add
i32.const 65535
i32.const -1
i32.xor
i32.and
i32.const 16
i32.shr_u
local.set $2
local.get $5
local.tee $3
local.get $2
local.tee $6
local.get $3
local.get $6
i32.gt_s
select
local.set $3
local.get $3
grow_memory
i32.const 0
i32.lt_s
if
local.get $2
grow_memory
i32.const 0
i32.lt_s
if
unreachable
end
end
end
local.get $4
global.set $~lib/allocator/arena/offset
local.get $1
)
(func $~lib/memory/memory.allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
call $~lib/allocator/arena/__memory_allocate
return
)
(func $getter-call/C#constructor (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.eqz
if
i32.const 0
call $~lib/memory/memory.allocate
local.set $0
end
local.get $0
)
(func $getter-call/C#get:x~anonymous|0 (; 5 ;) (type $FUNCSIG$i) (result i32)
i32.const 42
)
(func $getter-call/C#get:x (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
i32.const 1
)
(func $getter-call/test (; 7 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32)
i32.const 0
call $getter-call/C#constructor
local.set $0
i32.const 0
global.set $~lib/argc
local.get $0
call $getter-call/C#get:x
call_indirect (type $FUNCSIG$i)
)
(func $start (; 8 ;) (type $FUNCSIG$v)
call $start:getter-call
)
(func $null (; 9 ;) (type $FUNCSIG$v)
(func $null (; 8 ;) (type $FUNCSIG$v)
)
)

@@ -3,7 +3,7 @@
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\10\00\00\00g\00e\00t\00t\00e\00r\00-\00s\00e\00t\00t\00e\00r\00.\00t\00s")
(data (i32.const 8) "\01\00\00\00 \00\00\00g\00e\00t\00t\00e\00r\00-\00s\00e\00t\00t\00e\00r\00.\00t\00s")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $getter-setter/Foo._bar (mut i32) (i32.const 0))
@@ -14,7 +14,7 @@
global.get $getter-setter/Foo._bar
if
i32.const 0
i32.const 8
i32.const 16
i32.const 13
i32.const 0
call $~lib/env/abort
@@ -27,7 +27,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 15
i32.const 0
call $~lib/env/abort
@@ -40,7 +40,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 16
i32.const 0
call $~lib/env/abort

@@ -5,11 +5,11 @@
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\10\00\00\00g\00e\00t\00t\00e\00r\00-\00s\00e\00t\00t\00e\00r\00.\00t\00s\00")
(data (i32.const 8) "\01\00\00\00 \00\00\00g\00e\00t\00t\00e\00r\00-\00s\00e\00t\00t\00e\00r\00.\00t\00s\00")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $getter-setter/Foo._bar (mut i32) (i32.const 0))
(global $~lib/memory/HEAP_BASE i32 (i32.const 44))
(global $~lib/memory/HEAP_BASE i32 (i32.const 48))
(export "memory" (memory $0))
(export "table" (table $0))
(start $start)
@@ -27,7 +27,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 13
i32.const 0
call $~lib/env/abort
@@ -41,7 +41,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 15
i32.const 0
call $~lib/env/abort
@@ -57,7 +57,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 16
i32.const 0
call $~lib/env/abort

@@ -4,7 +4,7 @@
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\05\00\00\00i\00f\00.\00t\00s")
(data (i32.const 8) "\01\00\00\00\n\00\00\00i\00f\00.\00t\00s")
(table $0 1 funcref)
(elem (i32.const 0) $start)
(export "memory" (memory $0))
@@ -33,7 +33,7 @@
i32.const 1
else
i32.const 0
i32.const 8
i32.const 16
i32.const 37
i32.const 4
call $~lib/env/abort

@@ -4,10 +4,10 @@
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\05\00\00\00i\00f\00.\00t\00s\00")
(data (i32.const 8) "\01\00\00\00\n\00\00\00i\00f\00.\00t\00s\00")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $~lib/memory/HEAP_BASE i32 (i32.const 24))
(global $~lib/memory/HEAP_BASE i32 (i32.const 28))
(export "memory" (memory $0))
(export "table" (table $0))
(export "ifThenElse" (func $if/ifThenElse))
@@ -55,7 +55,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 8
i32.const 0
call $~lib/env/abort
@@ -68,7 +68,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 9
i32.const 0
call $~lib/env/abort
@@ -81,7 +81,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 17
i32.const 0
call $~lib/env/abort
@@ -94,7 +94,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 18
i32.const 0
call $~lib/env/abort
@@ -107,7 +107,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 30
i32.const 0
call $~lib/env/abort
@@ -120,7 +120,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 31
i32.const 0
call $~lib/env/abort
@@ -134,7 +134,7 @@
return
else
i32.const 0
i32.const 8
i32.const 16
i32.const 37
i32.const 4
call $~lib/env/abort

@@ -1,7 +1,7 @@
(module
(type $FUNCSIG$v (func))
(memory $0 1)
(data (i32.const 8) "\0d\00\00\00i\00n\00f\00e\00r\00-\00t\00y\00p\00e\00.\00t\00s")
(data (i32.const 8) "\01\00\00\00\1a\00\00\00i\00n\00f\00e\00r\00-\00t\00y\00p\00e\00.\00t\00s")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $infer-type/ri (mut i32) (i32.const 0))

@@ -7,7 +7,7 @@
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\0d\00\00\00i\00n\00f\00e\00r\00-\00t\00y\00p\00e\00.\00t\00s\00")
(data (i32.const 8) "\01\00\00\00\1a\00\00\00i\00n\00f\00e\00r\00-\00t\00y\00p\00e\00.\00t\00s\00")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $infer-type/i i32 (i32.const 10))
@@ -19,7 +19,7 @@
(global $infer-type/rF (mut f64) (f64.const 0))
(global $infer-type/inferi (mut i32) (i32.const -2147483648))
(global $infer-type/inferu (mut i32) (i32.const 2147483647))
(global $~lib/memory/HEAP_BASE i32 (i32.const 40))
(global $~lib/memory/HEAP_BASE i32 (i32.const 44))
(export "memory" (memory $0))
(export "table" (table $0))
(start $start)
@@ -109,7 +109,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 49
i32.const 0
call $~lib/env/abort
@@ -119,7 +119,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 52
i32.const 0
call $~lib/env/abort

@@ -5,7 +5,7 @@
(type $FUNCSIG$ii (func (param i32) (result i32)))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\0b\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00.\00t\00s")
(data (i32.const 8) "\01\00\00\00\16\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00.\00t\00s")
(table $0 2 funcref)
(elem (i32.const 0) $null $inlining/func_fe~anonymous|0)
(global $~lib/argc (mut i32) (i32.const 0))
@@ -31,14 +31,14 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 68
i32.const 2
call $~lib/env/abort
unreachable
end
)
(func $~lib/allocator/arena/__memory_allocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(func $~lib/memory/memory.allocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@@ -61,15 +61,15 @@
i32.add
i32.const -8
i32.and
local.tee $2
local.tee $0
current_memory
local.tee $3
local.tee $2
i32.const 16
i32.shl
i32.gt_u
if
local.get $3
local.get $2
local.get $0
local.get $1
i32.sub
i32.const 65535
@@ -78,16 +78,16 @@
i32.and
i32.const 16
i32.shr_u
local.tee $0
local.tee $3
local.get $2
local.get $3
local.get $0
i32.gt_s
select
grow_memory
i32.const 0
i32.lt_s
if
local.get $0
local.get $3
grow_memory
i32.const 0
i32.lt_s
@@ -96,19 +96,40 @@
end
end
end
local.get $2
local.get $0
global.set $~lib/allocator/arena/offset
local.get $1
)
(func $inlining/test_ctor (; 5 ;) (type $FUNCSIG$v)
(func $~lib/runtime/ALLOCATE (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
i32.const 1
i32.const 32
local.get $0
i32.const 7
i32.add
i32.clz
i32.sub
i32.shl
call $~lib/memory/memory.allocate
local.tee $1
i32.const -1520547049
i32.store
local.get $1
local.get $0
i32.store offset=4
local.get $1
i32.const 8
i32.add
)
(func $inlining/test_ctor (; 6 ;) (type $FUNCSIG$v)
(local $0 i32)
i32.const 16
call $~lib/allocator/arena/__memory_allocate
call $~lib/runtime/ALLOCATE
local.tee $0
i32.eqz
if
i32.const 8
call $~lib/allocator/arena/__memory_allocate
call $~lib/runtime/ALLOCATE
local.set $0
end
local.get $0
@@ -135,7 +156,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 97
i32.const 2
call $~lib/env/abort
@@ -147,7 +168,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 98
i32.const 2
call $~lib/env/abort
@@ -159,7 +180,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 99
i32.const 2
call $~lib/env/abort
@@ -171,14 +192,14 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 100
i32.const 2
call $~lib/env/abort
unreachable
end
)
(func $start (; 6 ;) (type $FUNCSIG$v)
(func $start (; 7 ;) (type $FUNCSIG$v)
call $inlining/test_funcs
i32.const 40
global.set $~lib/allocator/arena/startOffset
@@ -186,7 +207,7 @@
global.set $~lib/allocator/arena/offset
call $inlining/test_ctor
)
(func $null (; 7 ;) (type $FUNCSIG$v)
(func $null (; 8 ;) (type $FUNCSIG$v)
nop
)
)

@@ -5,14 +5,17 @@
(type $FUNCSIG$ii (func (param i32) (result i32)))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\0b\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00.\00t\00s\00")
(data (i32.const 8) "\01\00\00\00\16\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00.\00t\00s\00")
(table $0 2 funcref)
(elem (i32.const 0) $null $inlining/func_fe~anonymous|0)
(global $inlining/constantGlobal i32 (i32.const 1))
(global $~lib/argc (mut i32) (i32.const 0))
(global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0))
(global $~lib/runtime/HEADER_SIZE i32 (i32.const 8))
(global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049))
(global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0))
(global $~lib/allocator/arena/offset (mut i32) (i32.const 0))
(global $~lib/memory/HEAP_BASE i32 (i32.const 36))
(global $~lib/memory/HEAP_BASE i32 (i32.const 40))
(export "memory" (memory $0))
(export "table" (table $0))
(export "test" (func $inlining/test))
@@ -62,7 +65,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 60
i32.const 2
call $~lib/env/abort
@@ -92,7 +95,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 61
i32.const 2
call $~lib/env/abort
@@ -122,7 +125,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 62
i32.const 2
call $~lib/env/abort
@@ -138,7 +141,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 63
i32.const 2
call $~lib/env/abort
@@ -154,7 +157,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 64
i32.const 2
call $~lib/env/abort
@@ -180,7 +183,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 65
i32.const 2
call $~lib/env/abort
@@ -206,7 +209,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 66
i32.const 2
call $~lib/env/abort
@@ -230,7 +233,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 68
i32.const 2
call $~lib/env/abort
@@ -250,7 +253,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 69
i32.const 2
call $~lib/env/abort
@@ -272,47 +275,51 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 71
i32.const 2
call $~lib/env/abort
unreachable
end
)
(func $start:~lib/allocator/arena (; 4 ;) (type $FUNCSIG$v)
global.get $~lib/memory/HEAP_BASE
i32.const 7
(func $~lib/runtime/ADJUST (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
i32.const 1
i32.const 32
local.get $0
global.get $~lib/runtime/HEADER_SIZE
i32.add
i32.const 7
i32.const -1
i32.xor
i32.and
global.set $~lib/allocator/arena/startOffset
global.get $~lib/allocator/arena/startOffset
global.set $~lib/allocator/arena/offset
i32.const 1
i32.sub
i32.clz
i32.sub
i32.shl
)
(func $~lib/allocator/arena/__memory_allocate (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(func $~lib/memory/memory.allocate (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(local $6 i32)
(local $7 i32)
block $~lib/allocator/arena/__memory_allocate|inlined.0 (result i32)
local.get $0
local.set $1
local.get $1
i32.const 1073741824
i32.gt_u
if
unreachable
end
global.get $~lib/allocator/arena/offset
local.set $1
local.get $1
local.get $0
local.tee $2
i32.const 1
local.tee $3
local.set $2
local.get $2
local.get $1
local.tee $3
i32.const 1
local.tee $4
local.get $3
local.get $4
i32.gt_u
select
i32.add
@@ -322,17 +329,17 @@
i32.const -1
i32.xor
i32.and
local.set $4
local.set $3
current_memory
local.set $5
local.set $4
local.get $3
local.get $4
local.get $5
i32.const 16
i32.shl
i32.gt_u
if
local.get $4
local.get $1
local.get $3
local.get $2
i32.sub
i32.const 65535
i32.add
@@ -342,22 +349,22 @@
i32.and
i32.const 16
i32.shr_u
local.set $2
local.get $5
local.tee $3
local.get $2
local.set $5
local.get $4
local.tee $6
local.get $3
local.get $5
local.tee $7
local.get $6
local.get $7
i32.gt_s
select
local.set $3
local.get $3
local.set $6
local.get $6
grow_memory
i32.const 0
i32.lt_s
if
local.get $2
local.get $5
grow_memory
i32.const 0
i32.lt_s
@@ -366,15 +373,28 @@
end
end
end
local.get $4
local.get $3
global.set $~lib/allocator/arena/offset
local.get $1
)
(func $~lib/memory/memory.allocate (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
call $~lib/allocator/arena/__memory_allocate
local.get $2
end
return
)
(func $~lib/runtime/ALLOCATE (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
local.get $0
call $~lib/runtime/ADJUST
call $~lib/memory/memory.allocate
local.set $1
local.get $1
global.get $~lib/runtime/HEADER_MAGIC
i32.store
local.get $1
local.get $0
i32.store offset=4
local.get $1
global.get $~lib/runtime/HEADER_SIZE
i32.add
)
(func $inlining/test_ctor (; 7 ;) (type $FUNCSIG$v)
(local $0 i32)
(local $1 i32)
@@ -392,7 +412,7 @@
local.get $0
else
i32.const 16
call $~lib/memory/memory.allocate
call $~lib/runtime/ALLOCATE
end
local.set $2
i32.const 2
@@ -402,7 +422,7 @@
i32.eqz
if
i32.const 8
call $~lib/memory/memory.allocate
call $~lib/runtime/ALLOCATE
local.set $2
end
local.get $2
@@ -437,7 +457,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 97
i32.const 2
call $~lib/env/abort
@@ -450,7 +470,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 98
i32.const 2
call $~lib/env/abort
@@ -463,7 +483,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 99
i32.const 2
call $~lib/env/abort
@@ -476,7 +496,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 100
i32.const 2
call $~lib/env/abort
@@ -490,14 +510,23 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 10
i32.const 0
call $~lib/env/abort
unreachable
end
call $inlining/test_funcs
call $start:~lib/allocator/arena
global.get $~lib/memory/HEAP_BASE
i32.const 7
i32.add
i32.const 7
i32.const -1
i32.xor
i32.and
global.set $~lib/allocator/arena/startOffset
global.get $~lib/allocator/arena/startOffset
global.set $~lib/allocator/arena/offset
call $inlining/test_ctor
)
(func $start (; 9 ;) (type $FUNCSIG$v)

@@ -3,7 +3,7 @@
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\0d\00\00\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s")
(data (i32.const 8) "\01\00\00\00\1a\00\00\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $instanceof/an (mut i32) (i32.const 0))
@@ -14,7 +14,7 @@
global.get $instanceof/an
if
i32.const 0
i32.const 8
i32.const 16
i32.const 68
i32.const 0
call $~lib/env/abort
@@ -26,7 +26,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 71
i32.const 0
call $~lib/env/abort

@@ -5,7 +5,7 @@
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\0d\00\00\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s\00")
(data (i32.const 8) "\01\00\00\00\1a\00\00\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s\00")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $instanceof/a (mut i32) (i32.const 0))
@@ -15,7 +15,7 @@
(global $instanceof/f (mut f32) (f32.const 0))
(global $instanceof/F (mut f64) (f64.const 0))
(global $instanceof/an (mut i32) (i32.const 0))
(global $~lib/memory/HEAP_BASE i32 (i32.const 40))
(global $~lib/memory/HEAP_BASE i32 (i32.const 44))
(export "memory" (memory $0))
(export "table" (table $0))
(start $start)
@@ -40,7 +40,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 11
i32.const 0
call $~lib/env/abort
@@ -50,7 +50,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 12
i32.const 0
call $~lib/env/abort
@@ -61,7 +61,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 13
i32.const 0
call $~lib/env/abort
@@ -72,7 +72,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 14
i32.const 0
call $~lib/env/abort
@@ -83,7 +83,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 15
i32.const 0
call $~lib/env/abort
@@ -94,7 +94,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 16
i32.const 0
call $~lib/env/abort
@@ -105,7 +105,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 18
i32.const 0
call $~lib/env/abort
@@ -115,7 +115,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 19
i32.const 0
call $~lib/env/abort
@@ -126,7 +126,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 20
i32.const 0
call $~lib/env/abort
@@ -137,7 +137,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 21
i32.const 0
call $~lib/env/abort
@@ -148,7 +148,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 22
i32.const 0
call $~lib/env/abort
@@ -159,7 +159,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 23
i32.const 0
call $~lib/env/abort
@@ -170,7 +170,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 25
i32.const 0
call $~lib/env/abort
@@ -181,7 +181,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 26
i32.const 0
call $~lib/env/abort
@@ -191,7 +191,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 27
i32.const 0
call $~lib/env/abort
@@ -202,7 +202,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 28
i32.const 0
call $~lib/env/abort
@@ -213,7 +213,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 29
i32.const 0
call $~lib/env/abort
@@ -224,7 +224,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 30
i32.const 0
call $~lib/env/abort
@@ -235,7 +235,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 32
i32.const 0
call $~lib/env/abort
@@ -246,7 +246,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 33
i32.const 0
call $~lib/env/abort
@@ -257,7 +257,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 34
i32.const 0
call $~lib/env/abort
@@ -267,7 +267,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 35
i32.const 0
call $~lib/env/abort
@@ -278,7 +278,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 36
i32.const 0
call $~lib/env/abort
@@ -289,7 +289,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 37
i32.const 0
call $~lib/env/abort
@@ -300,7 +300,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 39
i32.const 0
call $~lib/env/abort
@@ -311,7 +311,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 40
i32.const 0
call $~lib/env/abort
@@ -322,7 +322,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 41
i32.const 0
call $~lib/env/abort
@@ -333,7 +333,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 42
i32.const 0
call $~lib/env/abort
@@ -343,7 +343,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 43
i32.const 0
call $~lib/env/abort
@@ -354,7 +354,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 44
i32.const 0
call $~lib/env/abort
@@ -365,7 +365,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 46
i32.const 0
call $~lib/env/abort
@@ -376,7 +376,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 47
i32.const 0
call $~lib/env/abort
@@ -387,7 +387,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 48
i32.const 0
call $~lib/env/abort
@@ -398,7 +398,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 49
i32.const 0
call $~lib/env/abort
@@ -409,7 +409,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 50
i32.const 0
call $~lib/env/abort
@@ -419,7 +419,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 51
i32.const 0
call $~lib/env/abort
@@ -430,7 +430,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 62
i32.const 0
call $~lib/env/abort
@@ -442,7 +442,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 63
i32.const 0
call $~lib/env/abort
@@ -454,7 +454,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 64
i32.const 0
call $~lib/env/abort
@@ -466,7 +466,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 65
i32.const 0
call $~lib/env/abort
@@ -479,7 +479,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 68
i32.const 0
call $~lib/env/abort
@@ -489,7 +489,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 69
i32.const 0
call $~lib/env/abort
@@ -503,7 +503,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 71
i32.const 0
call $~lib/env/abort
@@ -513,7 +513,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 72
i32.const 0
call $~lib/env/abort

@@ -3,7 +3,7 @@
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\n\00\00\00l\00o\00g\00i\00c\00a\00l\00.\00t\00s")
(data (i32.const 8) "\01\00\00\00\14\00\00\00l\00o\00g\00i\00c\00a\00l\00.\00t\00s")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $logical/i (mut i32) (i32.const 0))
@@ -21,7 +21,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 12
i32.const 0
call $~lib/env/abort
@@ -34,7 +34,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 15
i32.const 0
call $~lib/env/abort
@@ -47,7 +47,7 @@
i64.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 20
i32.const 0
call $~lib/env/abort
@@ -60,7 +60,7 @@
i64.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 23
i32.const 0
call $~lib/env/abort
@@ -73,7 +73,7 @@
f32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 28
i32.const 0
call $~lib/env/abort
@@ -86,7 +86,7 @@
f32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 31
i32.const 0
call $~lib/env/abort
@@ -99,7 +99,7 @@
f64.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 36
i32.const 0
call $~lib/env/abort
@@ -112,7 +112,7 @@
f64.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 39
i32.const 0
call $~lib/env/abort

@@ -3,14 +3,14 @@
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\n\00\00\00l\00o\00g\00i\00c\00a\00l\00.\00t\00s\00")
(data (i32.const 8) "\01\00\00\00\14\00\00\00l\00o\00g\00i\00c\00a\00l\00.\00t\00s\00")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $logical/i (mut i32) (i32.const 0))
(global $logical/I (mut i64) (i64.const 0))
(global $logical/f (mut f32) (f32.const 0))
(global $logical/F (mut f64) (f64.const 0))
(global $~lib/memory/HEAP_BASE i32 (i32.const 32))
(global $~lib/memory/HEAP_BASE i32 (i32.const 36))
(export "memory" (memory $0))
(export "table" (table $0))
(start $start)
@@ -92,7 +92,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 12
i32.const 0
call $~lib/env/abort
@@ -111,7 +111,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 15
i32.const 0
call $~lib/env/abort
@@ -132,7 +132,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 20
i32.const 0
call $~lib/env/abort
@@ -153,7 +153,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 23
i32.const 0
call $~lib/env/abort
@@ -174,7 +174,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 28
i32.const 0
call $~lib/env/abort
@@ -195,7 +195,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 31
i32.const 0
call $~lib/env/abort
@@ -216,7 +216,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 36
i32.const 0
call $~lib/env/abort
@@ -237,7 +237,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 39
i32.const 0
call $~lib/env/abort

@@ -2,7 +2,7 @@
(type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$v (func))
(memory $0 1)
(data (i32.const 8) "\0e\00\00\00m\00a\00n\00y\00-\00l\00o\00c\00a\00l\00s\00.\00t\00s")
(data (i32.const 8) "\01\00\00\00\1c\00\00\00m\00a\00n\00y\00-\00l\00o\00c\00a\00l\00s\00.\00t\00s")
(table $0 1 funcref)
(elem (i32.const 0) $start)
(export "memory" (memory $0))

@@ -4,10 +4,10 @@
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\0e\00\00\00m\00a\00n\00y\00-\00l\00o\00c\00a\00l\00s\00.\00t\00s\00")
(data (i32.const 8) "\01\00\00\00\1c\00\00\00m\00a\00n\00y\00-\00l\00o\00c\00a\00l\00s\00.\00t\00s\00")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $~lib/memory/HEAP_BASE i32 (i32.const 40))
(global $~lib/memory/HEAP_BASE i32 (i32.const 44))
(export "memory" (memory $0))
(export "table" (table $0))
(export "testI32" (func $many-locals/testI32))
@@ -799,7 +799,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 133
i32.const 0
call $~lib/env/abort
@@ -812,7 +812,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 267
i32.const 0
call $~lib/env/abort

@@ -4,7 +4,7 @@
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\t\00\00\00m\00e\00m\00c\00p\00y\00.\00t\00s")
(data (i32.const 8) "\01\00\00\00\12\00\00\00m\00e\00m\00c\00p\00y\00.\00t\00s")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $memcpy/dest (mut i32) (i32.const 0))
@@ -937,7 +937,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 151
i32.const 0
call $~lib/env/abort
@@ -949,7 +949,7 @@
i64.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 152
i32.const 0
call $~lib/env/abort
@@ -965,7 +965,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 155
i32.const 0
call $~lib/env/abort
@@ -977,7 +977,7 @@
i64.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 156
i32.const 0
call $~lib/env/abort
@@ -989,7 +989,7 @@
i64.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 157
i32.const 0
call $~lib/env/abort
@@ -1001,7 +1001,7 @@
i64.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 158
i32.const 0
call $~lib/env/abort
@@ -1013,7 +1013,7 @@
i64.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 159
i32.const 0
call $~lib/env/abort
@@ -1030,7 +1030,7 @@
i64.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 162
i32.const 0
call $~lib/env/abort
@@ -1047,7 +1047,7 @@
i64.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 165
i32.const 0
call $~lib/env/abort
@@ -1059,7 +1059,7 @@
i64.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 166
i32.const 0
call $~lib/env/abort
@@ -1071,7 +1071,7 @@
i64.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 167
i32.const 0
call $~lib/env/abort
@@ -1083,7 +1083,7 @@
i64.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 168
i32.const 0
call $~lib/env/abort

@@ -4,12 +4,12 @@
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\t\00\00\00m\00e\00m\00c\00p\00y\00.\00t\00s\00")
(data (i32.const 8) "\01\00\00\00\12\00\00\00m\00e\00m\00c\00p\00y\00.\00t\00s\00")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $memcpy/base i32 (i32.const 8))
(global $memcpy/dest (mut i32) (i32.const 0))
(global $~lib/memory/HEAP_BASE i32 (i32.const 32))
(global $~lib/memory/HEAP_BASE i32 (i32.const 36))
(export "memory" (memory $0))
(export "table" (table $0))
(export "memcpy" (func $memcpy/memcpy))
@@ -1244,7 +1244,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 151
i32.const 0
call $~lib/env/abort
@@ -1257,7 +1257,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 152
i32.const 0
call $~lib/env/abort
@@ -1274,7 +1274,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 155
i32.const 0
call $~lib/env/abort
@@ -1287,7 +1287,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 156
i32.const 0
call $~lib/env/abort
@@ -1302,7 +1302,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 157
i32.const 0
call $~lib/env/abort
@@ -1317,7 +1317,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 158
i32.const 0
call $~lib/env/abort
@@ -1332,7 +1332,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 159
i32.const 0
call $~lib/env/abort
@@ -1354,7 +1354,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 162
i32.const 0
call $~lib/env/abort
@@ -1376,7 +1376,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 165
i32.const 0
call $~lib/env/abort
@@ -1391,7 +1391,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 166
i32.const 0
call $~lib/env/abort
@@ -1406,7 +1406,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 167
i32.const 0
call $~lib/env/abort
@@ -1421,7 +1421,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 168
i32.const 0
call $~lib/env/abort

@@ -4,7 +4,7 @@
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\n\00\00\00m\00e\00m\00m\00o\00v\00e\00.\00t\00s")
(data (i32.const 8) "\01\00\00\00\14\00\00\00m\00e\00m\00m\00o\00v\00e\00.\00t\00s")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $memmove/dest (mut i32) (i32.const 0))
@@ -216,7 +216,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 55
i32.const 0
call $~lib/env/abort
@@ -228,7 +228,7 @@
i64.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 56
i32.const 0
call $~lib/env/abort
@@ -244,7 +244,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 59
i32.const 0
call $~lib/env/abort
@@ -256,7 +256,7 @@
i64.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 60
i32.const 0
call $~lib/env/abort
@@ -268,7 +268,7 @@
i64.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 61
i32.const 0
call $~lib/env/abort
@@ -280,7 +280,7 @@
i64.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 62
i32.const 0
call $~lib/env/abort
@@ -292,7 +292,7 @@
i64.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 63
i32.const 0
call $~lib/env/abort
@@ -309,7 +309,7 @@
i64.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 66
i32.const 0
call $~lib/env/abort
@@ -326,7 +326,7 @@
i64.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 69
i32.const 0
call $~lib/env/abort
@@ -338,7 +338,7 @@
i64.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 70
i32.const 0
call $~lib/env/abort
@@ -350,7 +350,7 @@
i64.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 71
i32.const 0
call $~lib/env/abort
@@ -362,7 +362,7 @@
i64.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 72
i32.const 0
call $~lib/env/abort

@@ -4,12 +4,12 @@
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\n\00\00\00m\00e\00m\00m\00o\00v\00e\00.\00t\00s\00")
(data (i32.const 8) "\01\00\00\00\14\00\00\00m\00e\00m\00m\00o\00v\00e\00.\00t\00s\00")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $memmove/base i32 (i32.const 8))
(global $memmove/dest (mut i32) (i32.const 0))
(global $~lib/memory/HEAP_BASE i32 (i32.const 32))
(global $~lib/memory/HEAP_BASE i32 (i32.const 36))
(export "memory" (memory $0))
(export "table" (table $0))
(start $start)
@@ -261,7 +261,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 55
i32.const 0
call $~lib/env/abort
@@ -274,7 +274,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 56
i32.const 0
call $~lib/env/abort
@@ -291,7 +291,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 59
i32.const 0
call $~lib/env/abort
@@ -304,7 +304,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 60
i32.const 0
call $~lib/env/abort
@@ -319,7 +319,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 61
i32.const 0
call $~lib/env/abort
@@ -334,7 +334,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 62
i32.const 0
call $~lib/env/abort
@@ -349,7 +349,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 63
i32.const 0
call $~lib/env/abort
@@ -371,7 +371,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 66
i32.const 0
call $~lib/env/abort
@@ -393,7 +393,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 69
i32.const 0
call $~lib/env/abort
@@ -408,7 +408,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 70
i32.const 0
call $~lib/env/abort
@@ -423,7 +423,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 71
i32.const 0
call $~lib/env/abort
@@ -438,7 +438,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 72
i32.const 0
call $~lib/env/abort

@@ -4,7 +4,7 @@
(type $FUNCSIG$viii (func (param i32 i32 i32)))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\t\00\00\00m\00e\00m\00s\00e\00t\00.\00t\00s")
(data (i32.const 8) "\01\00\00\00\12\00\00\00m\00e\00m\00s\00e\00t\00.\00t\00s")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $memset/dest (mut i32) (i32.const 0))
@@ -240,7 +240,7 @@
end
)
(func $start:memset (; 2 ;) (type $FUNCSIG$v)
i32.const 32
i32.const 36
global.set $memset/dest
global.get $memset/dest
i32.const 1
@@ -252,7 +252,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 72
i32.const 0
call $~lib/env/abort
@@ -266,7 +266,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 73
i32.const 0
call $~lib/env/abort
@@ -284,7 +284,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 77
i32.const 0
call $~lib/env/abort
@@ -298,7 +298,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 78
i32.const 0
call $~lib/env/abort
@@ -312,7 +312,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 79
i32.const 0
call $~lib/env/abort
@@ -326,7 +326,7 @@
i32.ne
if
i32.const 0
i32.const 8
i32.const 16
i32.const 80
i32.const 0
call $~lib/env/abort

@@ -4,11 +4,11 @@
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\t\00\00\00m\00e\00m\00s\00e\00t\00.\00t\00s\00")
(data (i32.const 8) "\01\00\00\00\12\00\00\00m\00e\00m\00s\00e\00t\00.\00t\00s\00")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $memset/dest (mut i32) (i32.const 0))
(global $~lib/memory/HEAP_BASE i32 (i32.const 32))
(global $~lib/memory/HEAP_BASE i32 (i32.const 36))
(export "memory" (memory $0))
(export "table" (table $0))
(start $start)
@@ -291,7 +291,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 72
i32.const 0
call $~lib/env/abort
@@ -306,7 +306,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 73
i32.const 0
call $~lib/env/abort
@@ -326,7 +326,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 77
i32.const 0
call $~lib/env/abort
@@ -341,7 +341,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 78
i32.const 0
call $~lib/env/abort
@@ -356,7 +356,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 79
i32.const 0
call $~lib/env/abort
@@ -371,7 +371,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 80
i32.const 0
call $~lib/env/abort

@@ -5,30 +5,61 @@
(memory $0 0)
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0))
(global $~lib/runtime/HEADER_SIZE i32 (i32.const 8))
(global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049))
(global $~lib/memory/HEAP_BASE i32 (i32.const 8))
(export "memory" (memory $0))
(export "table" (table $0))
(export "test" (func $new-without-allocator/test))
(func $~lib/memory/memory.allocate (; 0 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(func $~lib/runtime/ADJUST (; 0 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
i32.const 1
i32.const 32
local.get $0
global.get $~lib/runtime/HEADER_SIZE
i32.add
i32.const 1
i32.sub
i32.clz
i32.sub
i32.shl
)
(func $~lib/memory/memory.allocate (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
unreachable
)
(func $new-without-allocator/A#constructor (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(func $~lib/runtime/ALLOCATE (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
local.get $0
call $~lib/runtime/ADJUST
call $~lib/memory/memory.allocate
local.set $1
local.get $1
global.get $~lib/runtime/HEADER_MAGIC
i32.store
local.get $1
local.get $0
i32.store offset=4
local.get $1
global.get $~lib/runtime/HEADER_SIZE
i32.add
)
(func $new-without-allocator/A#constructor (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.eqz
if
i32.const 0
call $~lib/memory/memory.allocate
call $~lib/runtime/ALLOCATE
local.set $0
end
local.get $0
)
(func $new-without-allocator/test (; 2 ;) (type $FUNCSIG$i) (result i32)
(func $new-without-allocator/test (; 4 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32)
i32.const 0
call $new-without-allocator/A#constructor
local.set $0
i32.const 3
)
(func $null (; 3 ;) (type $FUNCSIG$v)
(func $null (; 5 ;) (type $FUNCSIG$v)
)
)

@@ -1,13 +1,13 @@
(module
(type $FUNCSIG$v (func))
(type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$vi (func (param i32)))
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(type $FUNCSIG$v (func))
(type $FUNCSIG$iii (func (param i32 i32) (result i32)))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\0b\00\00\00h\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d")
(data (i32.const 40) "\11\00\00\00o\00b\00j\00e\00c\00t\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s")
(data (i32.const 8) "\01\00\00\00\16\00\00\00h\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d")
(data (i32.const 40) "\01\00\00\00\"\00\00\00o\00b\00j\00e\00c\00t\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0))
@@ -15,7 +15,7 @@
(export "memory" (memory $0))
(export "table" (table $0))
(start $start)
(func $~lib/allocator/arena/__memory_allocate (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(func $~lib/memory/memory.allocate (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@@ -38,15 +38,15 @@
i32.add
i32.const -8
i32.and
local.tee $2
local.tee $0
current_memory
local.tee $3
local.tee $2
i32.const 16
i32.shl
i32.gt_u
if
local.get $3
local.get $2
local.get $0
local.get $1
i32.sub
i32.const 65535
@@ -55,16 +55,16 @@
i32.and
i32.const 16
i32.shr_u
local.tee $0
local.tee $3
local.get $2
local.get $3
local.get $0
i32.gt_s
select
grow_memory
i32.const 0
i32.lt_s
if
local.get $0
local.get $3
grow_memory
i32.const 0
i32.lt_s
@@ -73,22 +73,43 @@
end
end
end
local.get $2
local.get $0
global.set $~lib/allocator/arena/offset
local.get $1
)
(func $~lib/internal/string/compareUnsafe (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/runtime/ALLOCATE (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
i32.const 1
i32.const 32
local.get $0
i32.const 7
i32.add
i32.clz
i32.sub
i32.shl
call $~lib/memory/memory.allocate
local.tee $1
i32.const -1520547049
i32.store
local.get $1
local.get $0
i32.store offset=4
local.get $1
i32.const 8
i32.add
)
(func $~lib/util/string/compareImpl (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
i32.const 8
i32.const 16
local.set $2
loop $continue|0
local.get $1
if (result i32)
local.get $0
i32.load16_u offset=4
i32.load16_u
local.get $2
i32.load16_u offset=4
i32.load16_u
i32.sub
local.tee $3
i32.eqz
@@ -113,10 +134,10 @@
end
local.get $3
)
(func $~lib/string/String.__eq (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(func $~lib/string/String.eq (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
local.get $0
i32.const 8
i32.const 16
i32.eq
if
i32.const 1
@@ -125,20 +146,27 @@
local.get $0
i32.eqz
local.tee $1
if (result i32)
local.get $1
else
i32.eqz
if
i32.const 0
local.set $1
end
local.get $1
if
i32.const 0
return
end
local.get $0
i32.load
local.tee $1
i32.const 8
i32.sub
i32.load offset=4
i32.const 1
i32.shr_u
local.tee $1
i32.const 12
i32.load
i32.const 1
i32.shr_u
i32.ne
if
i32.const 0
@@ -146,17 +174,17 @@
end
local.get $0
local.get $1
call $~lib/internal/string/compareUnsafe
call $~lib/util/string/compareImpl
i32.eqz
)
(func $object-literal/bar (; 4 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $object-literal/bar (; 5 ;) (type $FUNCSIG$vi) (param $0 i32)
local.get $0
i32.load
i32.const 1
i32.ne
if
i32.const 0
i32.const 40
i32.const 48
i32.const 9
i32.const 2
call $~lib/env/abort
@@ -164,35 +192,35 @@
end
local.get $0
i32.load offset=4
call $~lib/string/String.__eq
call $~lib/string/String.eq
i32.eqz
if
i32.const 0
i32.const 40
i32.const 48
i32.const 10
i32.const 2
call $~lib/env/abort
unreachable
end
)
(func $start:object-literal (; 5 ;) (type $FUNCSIG$v)
(func $start:object-literal (; 6 ;) (type $FUNCSIG$v)
(local $0 i32)
i32.const 80
i32.const 88
global.set $~lib/allocator/arena/startOffset
global.get $~lib/allocator/arena/startOffset
global.set $~lib/allocator/arena/offset
i32.const 8
call $~lib/allocator/arena/__memory_allocate
call $~lib/runtime/ALLOCATE
local.tee $0
i32.const 1
i32.store
local.get $0
i32.const 8
i32.const 16
i32.store offset=4
local.get $0
call $object-literal/bar
i32.const 4
call $~lib/allocator/arena/__memory_allocate
call $~lib/runtime/ALLOCATE
local.tee $0
i32.const 2
i32.store
@@ -202,14 +230,14 @@
i32.ne
if
i32.const 0
i32.const 40
i32.const 48
i32.const 26
i32.const 2
call $~lib/env/abort
unreachable
end
i32.const 4
call $~lib/allocator/arena/__memory_allocate
call $~lib/runtime/ALLOCATE
local.tee $0
i32.const 3
i32.store
@@ -219,17 +247,17 @@
i32.ne
if
i32.const 0
i32.const 40
i32.const 48
i32.const 21
i32.const 4
call $~lib/env/abort
unreachable
end
)
(func $start (; 6 ;) (type $FUNCSIG$v)
(func $start (; 7 ;) (type $FUNCSIG$v)
call $start:object-literal
)
(func $null (; 7 ;) (type $FUNCSIG$v)
(func $null (; 8 ;) (type $FUNCSIG$v)
nop
)
)

@@ -1,56 +1,63 @@
(module
(type $FUNCSIG$v (func))
(type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$vi (func (param i32)))
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(type $FUNCSIG$iii (func (param i32 i32) (result i32)))
(type $FUNCSIG$iiiiii (func (param i32 i32 i32 i32 i32) (result i32)))
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\0b\00\00\00h\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d\00")
(data (i32.const 40) "\11\00\00\00o\00b\00j\00e\00c\00t\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s\00")
(data (i32.const 8) "\01\00\00\00\16\00\00\00h\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d\00")
(data (i32.const 40) "\01\00\00\00\"\00\00\00o\00b\00j\00e\00c\00t\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s\00")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0))
(global $~lib/runtime/HEADER_SIZE i32 (i32.const 8))
(global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049))
(global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0))
(global $~lib/allocator/arena/offset (mut i32) (i32.const 0))
(global $~lib/memory/HEAP_BASE i32 (i32.const 80))
(global $~lib/memory/HEAP_BASE i32 (i32.const 84))
(export "memory" (memory $0))
(export "table" (table $0))
(start $start)
(func $start:~lib/allocator/arena (; 1 ;) (type $FUNCSIG$v)
global.get $~lib/memory/HEAP_BASE
i32.const 7
(func $~lib/runtime/ADJUST (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
i32.const 1
i32.const 32
local.get $0
global.get $~lib/runtime/HEADER_SIZE
i32.add
i32.const 7
i32.const -1
i32.xor
i32.and
global.set $~lib/allocator/arena/startOffset
global.get $~lib/allocator/arena/startOffset
global.set $~lib/allocator/arena/offset
i32.const 1
i32.sub
i32.clz
i32.sub
i32.shl
)
(func $~lib/allocator/arena/__memory_allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(func $~lib/memory/memory.allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(local $6 i32)
(local $7 i32)
block $~lib/allocator/arena/__memory_allocate|inlined.0 (result i32)
local.get $0
local.set $1
local.get $1
i32.const 1073741824
i32.gt_u
if
unreachable
end
global.get $~lib/allocator/arena/offset
local.set $1
local.get $1
local.get $0
local.tee $2
i32.const 1
local.tee $3
local.set $2
local.get $2
local.get $1
local.tee $3
i32.const 1
local.tee $4
local.get $3
local.get $4
i32.gt_u
select
i32.add
@@ -60,17 +67,17 @@
i32.const -1
i32.xor
i32.and
local.set $4
local.set $3
current_memory
local.set $5
local.set $4
local.get $3
local.get $4
local.get $5
i32.const 16
i32.shl
i32.gt_u
if
local.get $4
local.get $1
local.get $3
local.get $2
i32.sub
i32.const 65535
i32.add
@@ -80,22 +87,22 @@
i32.and
i32.const 16
i32.shr_u
local.set $2
local.get $5
local.tee $3
local.get $2
local.set $5
local.get $4
local.tee $6
local.get $3
local.get $5
local.tee $7
local.get $6
local.get $7
i32.gt_s
select
local.set $3
local.get $3
local.set $6
local.get $6
grow_memory
i32.const 0
i32.lt_s
if
local.get $2
local.get $5
grow_memory
i32.const 0
i32.lt_s
@@ -104,16 +111,37 @@
end
end
end
local.get $4
local.get $3
global.set $~lib/allocator/arena/offset
local.get $1
)
(func $~lib/memory/memory.allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
call $~lib/allocator/arena/__memory_allocate
local.get $2
end
return
)
(func $~lib/internal/string/compareUnsafe (; 4 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32)
(func $~lib/runtime/ALLOCATE (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
local.get $0
call $~lib/runtime/ADJUST
call $~lib/memory/memory.allocate
local.set $1
local.get $1
global.get $~lib/runtime/HEADER_MAGIC
i32.store
local.get $1
local.get $0
i32.store offset=4
local.get $1
global.get $~lib/runtime/HEADER_SIZE
i32.add
)
(func $~lib/string/String#get:length (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
global.get $~lib/runtime/HEADER_SIZE
i32.sub
i32.load offset=4
i32.const 1
i32.shr_u
)
(func $~lib/util/string/compareImpl (; 5 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32)
(local $5 i32)
(local $6 i32)
(local $7 i32)
@@ -136,9 +164,9 @@
local.get $4
if (result i32)
local.get $6
i32.load16_u offset=4
i32.load16_u
local.get $7
i32.load16_u offset=4
i32.load16_u
i32.sub
local.tee $5
i32.eqz
@@ -166,7 +194,7 @@
end
local.get $5
)
(func $~lib/string/String.__eq (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/string/String.eq (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
local.get $0
@@ -192,11 +220,11 @@
return
end
local.get $0
i32.load
call $~lib/string/String#get:length
local.set $3
local.get $3
local.get $1
i32.load
call $~lib/string/String#get:length
i32.ne
if
i32.const 0
@@ -207,10 +235,10 @@
local.get $1
i32.const 0
local.get $3
call $~lib/internal/string/compareUnsafe
call $~lib/util/string/compareImpl
i32.eqz
)
(func $object-literal/bar (; 6 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $object-literal/bar (; 7 ;) (type $FUNCSIG$vi) (param $0 i32)
local.get $0
i32.load
i32.const 1
@@ -218,7 +246,7 @@
i32.eqz
if
i32.const 0
i32.const 40
i32.const 48
i32.const 9
i32.const 2
call $~lib/env/abort
@@ -226,19 +254,19 @@
end
local.get $0
i32.load offset=4
i32.const 8
call $~lib/string/String.__eq
i32.const 16
call $~lib/string/String.eq
i32.eqz
if
i32.const 0
i32.const 40
i32.const 48
i32.const 10
i32.const 2
call $~lib/env/abort
unreachable
end
)
(func $object-literal/bar2 (; 7 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $object-literal/bar2 (; 8 ;) (type $FUNCSIG$vi) (param $0 i32)
local.get $0
i32.load
i32.const 2
@@ -246,14 +274,14 @@
i32.eqz
if
i32.const 0
i32.const 40
i32.const 48
i32.const 26
i32.const 2
call $~lib/env/abort
unreachable
end
)
(func $object-literal/Foo2#test (; 8 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $object-literal/Foo2#test (; 9 ;) (type $FUNCSIG$vi) (param $0 i32)
local.get $0
i32.load
i32.const 3
@@ -261,34 +289,43 @@
i32.eqz
if
i32.const 0
i32.const 40
i32.const 48
i32.const 21
i32.const 4
call $~lib/env/abort
unreachable
end
)
(func $start:object-literal (; 9 ;) (type $FUNCSIG$v)
(func $start:object-literal (; 10 ;) (type $FUNCSIG$v)
(local $0 i32)
(local $1 i32)
(local $2 i32)
call $start:~lib/allocator/arena
global.get $~lib/memory/HEAP_BASE
i32.const 7
i32.add
i32.const 7
i32.const -1
i32.xor
i32.and
global.set $~lib/allocator/arena/startOffset
global.get $~lib/allocator/arena/startOffset
global.set $~lib/allocator/arena/offset
block (result i32)
i32.const 8
call $~lib/memory/memory.allocate
call $~lib/runtime/ALLOCATE
local.set $0
local.get $0
i32.const 1
i32.store
local.get $0
i32.const 8
i32.const 16
i32.store offset=4
local.get $0
end
call $object-literal/bar
block (result i32)
i32.const 4
call $~lib/memory/memory.allocate
call $~lib/runtime/ALLOCATE
local.set $1
local.get $1
i32.const 2
@@ -298,7 +335,7 @@
call $object-literal/bar2
block (result i32)
i32.const 4
call $~lib/memory/memory.allocate
call $~lib/runtime/ALLOCATE
local.set $2
local.get $2
i32.const 3
@@ -307,9 +344,9 @@
end
call $object-literal/Foo2#test
)
(func $start (; 10 ;) (type $FUNCSIG$v)
(func $start (; 11 ;) (type $FUNCSIG$v)
call $start:object-literal
)
(func $null (; 11 ;) (type $FUNCSIG$v)
(func $null (; 12 ;) (type $FUNCSIG$v)
)
)

@@ -1,4 +1,5 @@
(module
(type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$v (func))
(type $FUNCSIG$i (func (result i32)))
(memory $0 0)
@@ -11,18 +12,30 @@
(export "memory" (memory $0))
(export "table" (table $0))
(start $start)
(func $~lib/allocator/arena/__memory_allocate (; 0 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32)
(func $~lib/memory/memory.allocate (; 0 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
local.get $0
i32.const 1073741824
i32.gt_u
if
unreachable
end
global.get $~lib/allocator/arena/offset
local.tee $0
i32.const 8
local.tee $1
local.get $0
i32.const 1
local.get $0
i32.const 1
i32.gt_u
select
i32.add
i32.const 7
i32.add
i32.const -8
i32.and
local.tee $1
local.tee $0
current_memory
local.tee $2
i32.const 16
@@ -30,8 +43,8 @@
i32.gt_u
if
local.get $2
local.get $1
local.get $0
local.get $1
i32.sub
i32.const 65535
i32.add
@@ -57,21 +70,35 @@
end
end
end
local.get $1
global.set $~lib/allocator/arena/offset
local.get $0
global.set $~lib/allocator/arena/offset
local.get $1
)
(func $start (; 1 ;) (type $FUNCSIG$v)
(func $~lib/runtime/ALLOCATE (; 1 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32)
i32.const 8
call $~lib/memory/memory.allocate
local.tee $0
i32.const -1520547049
i32.store
local.get $0
i32.const 0
i32.store offset=4
local.get $0
i32.const 8
i32.add
)
(func $start (; 2 ;) (type $FUNCSIG$v)
i32.const 8
global.set $~lib/allocator/arena/startOffset
global.get $~lib/allocator/arena/startOffset
global.set $~lib/allocator/arena/offset
call $~lib/allocator/arena/__memory_allocate
call $~lib/runtime/ALLOCATE
global.set $optional-typeparameters/tConcrete
call $~lib/allocator/arena/__memory_allocate
call $~lib/runtime/ALLOCATE
global.set $optional-typeparameters/tDerived
)
(func $null (; 2 ;) (type $FUNCSIG$v)
(func $null (; 3 ;) (type $FUNCSIG$v)
nop
)
)

@@ -1,11 +1,14 @@
(module
(type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$v (func))
(type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32)))
(type $FUNCSIG$didd (func (param i32 f64 f64) (result f64)))
(type $FUNCSIG$v (func))
(memory $0 0)
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0))
(global $~lib/runtime/HEADER_SIZE i32 (i32.const 8))
(global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049))
(global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0))
(global $~lib/allocator/arena/offset (mut i32) (i32.const 0))
(global $optional-typeparameters/tConcrete (mut i32) (i32.const 0))
@@ -20,40 +23,44 @@
(func $optional-typeparameters/testDerived<i32,i32> (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
)
(func $start:~lib/allocator/arena (; 2 ;) (type $FUNCSIG$v)
global.get $~lib/memory/HEAP_BASE
i32.const 7
(func $~lib/runtime/ADJUST (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
i32.const 1
i32.const 32
local.get $0
global.get $~lib/runtime/HEADER_SIZE
i32.add
i32.const 7
i32.const -1
i32.xor
i32.and
global.set $~lib/allocator/arena/startOffset
global.get $~lib/allocator/arena/startOffset
global.set $~lib/allocator/arena/offset
i32.const 1
i32.sub
i32.clz
i32.sub
i32.shl
)
(func $~lib/allocator/arena/__memory_allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(func $~lib/memory/memory.allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(local $6 i32)
(local $7 i32)
block $~lib/allocator/arena/__memory_allocate|inlined.0 (result i32)
local.get $0
local.set $1
local.get $1
i32.const 1073741824
i32.gt_u
if
unreachable
end
global.get $~lib/allocator/arena/offset
local.set $1
local.get $1
local.get $0
local.tee $2
i32.const 1
local.tee $3
local.set $2
local.get $2
local.get $1
local.tee $3
i32.const 1
local.tee $4
local.get $3
local.get $4
i32.gt_u
select
i32.add
@@ -63,17 +70,17 @@
i32.const -1
i32.xor
i32.and
local.set $4
local.set $3
current_memory
local.set $5
local.set $4
local.get $3
local.get $4
local.get $5
i32.const 16
i32.shl
i32.gt_u
if
local.get $4
local.get $1
local.get $3
local.get $2
i32.sub
i32.const 65535
i32.add
@@ -83,22 +90,22 @@
i32.and
i32.const 16
i32.shr_u
local.set $2
local.get $5
local.tee $3
local.get $2
local.set $5
local.get $4
local.tee $6
local.get $3
local.get $5
local.tee $7
local.get $6
local.get $7
i32.gt_s
select
local.set $3
local.get $3
local.set $6
local.get $6
grow_memory
i32.const 0
i32.lt_s
if
local.get $2
local.get $5
grow_memory
i32.const 0
i32.lt_s
@@ -107,21 +114,34 @@
end
end
end
local.get $4
local.get $3
global.set $~lib/allocator/arena/offset
local.get $1
)
(func $~lib/memory/memory.allocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
call $~lib/allocator/arena/__memory_allocate
local.get $2
end
return
)
(func $~lib/runtime/ALLOCATE (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
local.get $0
call $~lib/runtime/ADJUST
call $~lib/memory/memory.allocate
local.set $1
local.get $1
global.get $~lib/runtime/HEADER_MAGIC
i32.store
local.get $1
local.get $0
i32.store offset=4
local.get $1
global.get $~lib/runtime/HEADER_SIZE
i32.add
)
(func $optional-typeparameters/TestConcrete<i32,i32>#constructor (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.eqz
if
i32.const 0
call $~lib/memory/memory.allocate
call $~lib/runtime/ALLOCATE
local.set $0
end
local.get $0
@@ -136,7 +156,7 @@
i32.eqz
if
i32.const 0
call $~lib/memory/memory.allocate
call $~lib/runtime/ALLOCATE
local.set $0
end
local.get $0
@@ -153,7 +173,16 @@
i32.const 2
call $optional-typeparameters/testDerived<i32,i32>
drop
call $start:~lib/allocator/arena
global.get $~lib/memory/HEAP_BASE
i32.const 7
i32.add
i32.const 7
i32.const -1
i32.xor
i32.and
global.set $~lib/allocator/arena/startOffset
global.get $~lib/allocator/arena/startOffset
global.set $~lib/allocator/arena/offset
i32.const 0
call $optional-typeparameters/TestConcrete<i32,i32>#constructor
global.set $optional-typeparameters/tConcrete

@@ -1,7 +1,7 @@
(module
(type $FUNCSIG$v (func))
(memory $0 1)
(data (i32.const 8) "\0b\00\00\00o\00v\00e\00r\00f\00l\00o\00w\00.\00t\00s")
(data (i32.const 8) "\01\00\00\00\16\00\00\00o\00v\00e\00r\00f\00l\00o\00w\00.\00t\00s")
(table $0 1 funcref)
(elem (i32.const 0) $start)
(export "memory" (memory $0))

@@ -3,10 +3,10 @@
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\0b\00\00\00o\00v\00e\00r\00f\00l\00o\00w\00.\00t\00s\00")
(data (i32.const 8) "\01\00\00\00\16\00\00\00o\00v\00e\00r\00f\00l\00o\00w\00.\00t\00s\00")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $~lib/memory/HEAP_BASE i32 (i32.const 36))
(global $~lib/memory/HEAP_BASE i32 (i32.const 40))
(export "memory" (memory $0))
(export "table" (table $0))
(start $start)
@@ -31,7 +31,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 10
i32.const 2
call $~lib/env/abort
@@ -51,7 +51,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 13
i32.const 2
call $~lib/env/abort
@@ -76,7 +76,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 16
i32.const 2
call $~lib/env/abort
@@ -101,7 +101,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 19
i32.const 2
call $~lib/env/abort
@@ -121,7 +121,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 22
i32.const 2
call $~lib/env/abort
@@ -141,7 +141,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 25
i32.const 2
call $~lib/env/abort
@@ -162,7 +162,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 28
i32.const 2
call $~lib/env/abort
@@ -183,7 +183,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 31
i32.const 2
call $~lib/env/abort
@@ -201,7 +201,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 33
i32.const 2
call $~lib/env/abort
@@ -225,7 +225,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 42
i32.const 2
call $~lib/env/abort
@@ -245,7 +245,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 45
i32.const 2
call $~lib/env/abort
@@ -270,7 +270,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 48
i32.const 2
call $~lib/env/abort
@@ -295,7 +295,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 51
i32.const 2
call $~lib/env/abort
@@ -315,7 +315,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 54
i32.const 2
call $~lib/env/abort
@@ -335,7 +335,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 57
i32.const 2
call $~lib/env/abort
@@ -356,7 +356,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 60
i32.const 2
call $~lib/env/abort
@@ -377,7 +377,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 63
i32.const 2
call $~lib/env/abort
@@ -395,7 +395,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 65
i32.const 2
call $~lib/env/abort
@@ -417,7 +417,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 74
i32.const 2
call $~lib/env/abort
@@ -435,7 +435,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 77
i32.const 2
call $~lib/env/abort
@@ -458,7 +458,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 80
i32.const 2
call $~lib/env/abort
@@ -481,7 +481,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 83
i32.const 2
call $~lib/env/abort
@@ -499,7 +499,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 86
i32.const 2
call $~lib/env/abort
@@ -517,7 +517,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 89
i32.const 2
call $~lib/env/abort
@@ -536,7 +536,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 92
i32.const 2
call $~lib/env/abort
@@ -555,7 +555,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 95
i32.const 2
call $~lib/env/abort
@@ -571,7 +571,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 97
i32.const 2
call $~lib/env/abort
@@ -593,7 +593,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 106
i32.const 2
call $~lib/env/abort
@@ -611,7 +611,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 109
i32.const 2
call $~lib/env/abort
@@ -634,7 +634,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 112
i32.const 2
call $~lib/env/abort
@@ -657,7 +657,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 115
i32.const 2
call $~lib/env/abort
@@ -675,7 +675,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 118
i32.const 2
call $~lib/env/abort
@@ -693,7 +693,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 121
i32.const 2
call $~lib/env/abort
@@ -712,7 +712,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 124
i32.const 2
call $~lib/env/abort
@@ -731,7 +731,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 127
i32.const 2
call $~lib/env/abort
@@ -747,7 +747,7 @@
i32.eqz
if
i32.const 0
i32.const 8
i32.const 16
i32.const 129
i32.const 2
call $~lib/env/abort

@@ -1,4 +1,4 @@
import { HASH } from "internal/hash";
import { HASH } from "util/hash";
function check(hash: u32): bool {
return true;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@@ -3,14 +3,14 @@
(type $FUNCSIG$v (func))
(import "env" "trace" (func $~lib/env/trace (param i32 i32 f64 f64 f64 f64 f64)))
(memory $0 1)
(data (i32.const 8) "\0d\00\00\00z\00e\00r\00o\00_\00i\00m\00p\00l\00i\00c\00i\00t")
(data (i32.const 40) "\0d\00\00\00z\00e\00r\00o\00_\00e\00x\00p\00l\00i\00c\00i\00t")
(data (i32.const 72) "\07\00\00\00o\00n\00e\00_\00i\00n\00t")
(data (i32.const 96) "\07\00\00\00t\00w\00o\00_\00i\00n\00t")
(data (i32.const 120) "\t\00\00\00t\00h\00r\00e\00e\00_\00i\00n\00t")
(data (i32.const 144) "\08\00\00\00f\00o\00u\00r\00_\00i\00n\00t")
(data (i32.const 168) "\08\00\00\00f\00i\00v\00e\00_\00i\00n\00t")
(data (i32.const 192) "\08\00\00\00f\00i\00v\00e\00_\00d\00b\00l")
(data (i32.const 8) "\01\00\00\00\1a\00\00\00z\00e\00r\00o\00_\00i\00m\00p\00l\00i\00c\00i\00t")
(data (i32.const 48) "\01\00\00\00\1a\00\00\00z\00e\00r\00o\00_\00e\00x\00p\00l\00i\00c\00i\00t")
(data (i32.const 88) "\01\00\00\00\0e\00\00\00o\00n\00e\00_\00i\00n\00t")
(data (i32.const 112) "\01\00\00\00\0e\00\00\00t\00w\00o\00_\00i\00n\00t")
(data (i32.const 136) "\01\00\00\00\12\00\00\00t\00h\00r\00e\00e\00_\00i\00n\00t")
(data (i32.const 168) "\01\00\00\00\10\00\00\00f\00o\00u\00r\00_\00i\00n\00t")
(data (i32.const 192) "\01\00\00\00\10\00\00\00f\00i\00v\00e\00_\00i\00n\00t")
(data (i32.const 216) "\01\00\00\00\10\00\00\00f\00i\00v\00e\00_\00d\00b\00l")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $~lib/started (mut i32) (i32.const 0))
@@ -18,7 +18,7 @@
(export "table" (table $0))
(export "main" (func $std/trace/main))
(func $start:std/trace (; 1 ;) (type $FUNCSIG$v)
i32.const 8
i32.const 16
i32.const 0
f64.const 0
f64.const 0
@@ -26,7 +26,7 @@
f64.const 0
f64.const 0
call $~lib/env/trace
i32.const 40
i32.const 56
i32.const 0
f64.const 0
f64.const 0
@@ -34,7 +34,7 @@
f64.const 0
f64.const 0
call $~lib/env/trace
i32.const 72
i32.const 96
i32.const 1
f64.const 1
f64.const 0
@@ -42,7 +42,7 @@
f64.const 0
f64.const 0
call $~lib/env/trace
i32.const 96
i32.const 120
i32.const 2
f64.const 1
f64.const 2
@@ -50,7 +50,7 @@
f64.const 0
f64.const 0
call $~lib/env/trace
i32.const 120
i32.const 144
i32.const 3
f64.const 1
f64.const 2
@@ -58,7 +58,7 @@
f64.const 0
f64.const 0
call $~lib/env/trace
i32.const 144
i32.const 176
i32.const 4
f64.const 1
f64.const 2
@@ -66,7 +66,7 @@
f64.const 4
f64.const 0
call $~lib/env/trace
i32.const 168
i32.const 200
i32.const 5
f64.const 1
f64.const 2
@@ -74,7 +74,7 @@
f64.const 4
f64.const 5
call $~lib/env/trace
i32.const 192
i32.const 224
i32.const 5
f64.const 1.1
f64.const 2.2

@@ -3,23 +3,23 @@
(type $FUNCSIG$v (func))
(import "env" "trace" (func $~lib/env/trace (param i32 i32 f64 f64 f64 f64 f64)))
(memory $0 1)
(data (i32.const 8) "\0d\00\00\00z\00e\00r\00o\00_\00i\00m\00p\00l\00i\00c\00i\00t\00")
(data (i32.const 40) "\0d\00\00\00z\00e\00r\00o\00_\00e\00x\00p\00l\00i\00c\00i\00t\00")
(data (i32.const 72) "\07\00\00\00o\00n\00e\00_\00i\00n\00t\00")
(data (i32.const 96) "\07\00\00\00t\00w\00o\00_\00i\00n\00t\00")
(data (i32.const 120) "\t\00\00\00t\00h\00r\00e\00e\00_\00i\00n\00t\00")
(data (i32.const 144) "\08\00\00\00f\00o\00u\00r\00_\00i\00n\00t\00")
(data (i32.const 168) "\08\00\00\00f\00i\00v\00e\00_\00i\00n\00t\00")
(data (i32.const 192) "\08\00\00\00f\00i\00v\00e\00_\00d\00b\00l\00")
(data (i32.const 8) "\01\00\00\00\1a\00\00\00z\00e\00r\00o\00_\00i\00m\00p\00l\00i\00c\00i\00t\00")
(data (i32.const 48) "\01\00\00\00\1a\00\00\00z\00e\00r\00o\00_\00e\00x\00p\00l\00i\00c\00i\00t\00")
(data (i32.const 88) "\01\00\00\00\0e\00\00\00o\00n\00e\00_\00i\00n\00t\00")
(data (i32.const 112) "\01\00\00\00\0e\00\00\00t\00w\00o\00_\00i\00n\00t\00")
(data (i32.const 136) "\01\00\00\00\12\00\00\00t\00h\00r\00e\00e\00_\00i\00n\00t\00")
(data (i32.const 168) "\01\00\00\00\10\00\00\00f\00o\00u\00r\00_\00i\00n\00t\00")
(data (i32.const 192) "\01\00\00\00\10\00\00\00f\00i\00v\00e\00_\00i\00n\00t\00")
(data (i32.const 216) "\01\00\00\00\10\00\00\00f\00i\00v\00e\00_\00d\00b\00l\00")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $~lib/started (mut i32) (i32.const 0))
(global $~lib/memory/HEAP_BASE i32 (i32.const 212))
(global $~lib/memory/HEAP_BASE i32 (i32.const 240))
(export "memory" (memory $0))
(export "table" (table $0))
(export "main" (func $std/trace/main))
(func $start:std/trace (; 1 ;) (type $FUNCSIG$v)
i32.const 8
i32.const 16
i32.const 0
f64.const 0
f64.const 0
@@ -27,7 +27,7 @@
f64.const 0
f64.const 0
call $~lib/env/trace
i32.const 40
i32.const 56
i32.const 0
f64.const 0
f64.const 0
@@ -35,7 +35,7 @@
f64.const 0
f64.const 0
call $~lib/env/trace
i32.const 72
i32.const 96
i32.const 1
f64.const 1
f64.const 0
@@ -43,7 +43,7 @@
f64.const 0
f64.const 0
call $~lib/env/trace
i32.const 96
i32.const 120
i32.const 2
f64.const 1
f64.const 2
@@ -51,7 +51,7 @@
f64.const 0
f64.const 0
call $~lib/env/trace
i32.const 120
i32.const 144
i32.const 3
f64.const 1
f64.const 2
@@ -59,7 +59,7 @@
f64.const 0
f64.const 0
call $~lib/env/trace
i32.const 144
i32.const 176
i32.const 4
f64.const 1
f64.const 2
@@ -67,7 +67,7 @@
f64.const 4
f64.const 0
call $~lib/env/trace
i32.const 168
i32.const 200
i32.const 5
f64.const 1
f64.const 2
@@ -75,7 +75,7 @@
f64.const 4
f64.const 5
call $~lib/env/trace
i32.const 192
i32.const 224
i32.const 5
f64.const 1.1
f64.const 2.2