diff --git a/src/builtins.ts b/src/builtins.ts index 94b0ec3f..45de8eea 100644 --- a/src/builtins.ts +++ b/src/builtins.ts @@ -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; } } diff --git a/src/common.ts b/src/common.ts index f79dcd40..566df231 100644 --- a/src/common.ts +++ b/src/common.ts @@ -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"; diff --git a/src/compiler.ts b/src/compiler.ts index 1a2c1863..d26a4244 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -6693,27 +6693,43 @@ export class Compiler extends DiagnosticEmitter { } var arrayPrototype = assert(this.program.arrayPrototype); - var arrayInstance = assert(this.resolver.resolveClass( - 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( - allocateInstance.internalName, [ - options.isWasm64 - ? module.createI64(classInstance.currentMemoryOffset) - : module.createI32(classInstance.currentMemoryOffset) - // module.createI32( - // ensureGCHook(this, classInstance) - // ) - ], - nativeSizeType - ); - - // REGISTER(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); + if (!this.compileFunction(allocateInstance)) { + this.currentType = classInstance.type; + return module.createUnreachable(); } - this.currentType = classInstance.type; - return alloc; + // REGISTER(ref: usize) -> usize + var registerPrototype = assert(program.registerPrototype); + var registerInstance = this.resolver.resolveFunction(registerPrototype, [ classType ]); + if (!registerInstance) { + this.currentType = classType; + return module.createUnreachable(); + } + + // REGISTER(ALLOCATE(sizeof())) + 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) + ], + nativeSizeType + ) + ) + ); + previousFlow.freeTempLocal(tempLocal); + this.currentFlow = previousFlow; + this.currentType = classType; + return module.createBlock(flow.inlineReturnLabel, body, nativeSizeType); } /** Makes the initializers for a class's fields. */ diff --git a/src/flow.ts b/src/flow.ts index ceae0a1b..51b16a9e 100644 --- a/src/flow.ts +++ b/src/flow.ts @@ -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); diff --git a/src/program.ts b/src/program.ts index 1d8f9ef5..681c4f6e 100644 --- a/src/program.ts +++ b/src/program.ts @@ -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(element, null); } + if (element = this.lookupGlobal(LibrarySymbols.REGISTER)) { + assert(element.kind == ElementKind.FUNCTION_PROTOTYPE); + this.registerPrototype = element; + } + if (element = this.lookupGlobal(LibrarySymbols.LINK)) { + assert(element.kind == ElementKind.FUNCTION_PROTOTYPE); + this.linkPrototype = element; + } + if (element = this.lookupGlobal(LibrarySymbols.WRAPARRAY)) { + assert(element.kind == ElementKind.FUNCTION_PROTOTYPE); + this.wrapArrayPrototype = element; + } } // mark module exports, i.e. to apply proper wrapping behavior on the boundaries diff --git a/std/assembly/gc.ts b/std/assembly/gc.ts index 7dbc069d..7da225a4 100644 --- a/std/assembly/gc.ts +++ b/std/assembly/gc.ts @@ -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. */ diff --git a/std/assembly/map.ts b/std/assembly/map.ts index 5005ce33..c57658d8 100644 --- a/std/assembly/map.ts +++ b/std/assembly/map.ts @@ -65,7 +65,9 @@ export class Map { get size(): i32 { return this.entriesCount; } - constructor() { this.clear(); } + constructor() { + this.clear(); + } clear(): void { const bucketsSize = INITIAL_CAPACITY * BUCKET_SIZE; diff --git a/std/assembly/memory.ts b/std/assembly/memory.ts index 022cfaed..190e995f 100644 --- a/std/assembly/memory.ts +++ b/std/assembly/memory.ts @@ -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 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. */ diff --git a/std/assembly/runtime.ts b/std/assembly/runtime.ts index c943ccf8..2aed821d 100644 --- a/std/assembly/runtime.ts +++ b/std/assembly/runtime.ts @@ -138,6 +138,33 @@ export function DISCARD(ref: usize): void { memory.free(changetype(ref - HEADER_SIZE)); } +/** Wraps a static buffer within an array by copying its contents. */ +// @ts-ignore: decorator +@unsafe @inline +export function WRAPARRAY(buffer: ArrayBuffer): T[] { + // TODO: this is quite a lot to compile inline + var array = REGISTER(ALLOCATE(offsetof())); + var bufferSize = buffer.byteLength; + var newBuffer = REGISTER(ALLOCATE(bufferSize)); + changetype(array).data = newBuffer; // links + changetype(array).dataStart = changetype(newBuffer); + changetype(array).dataEnd = changetype(newBuffer) + bufferSize; + store(changetype(array), (bufferSize >>> alignof()), offsetof("length_")); + if (isManaged()) { + ERROR("unexpected managed type"); // not used currently + let dataOffset: usize = 0; + while (dataOffset < bufferSize) { + let element: T = load(changetype(buffer) + dataOffset); + store(changetype(newBuffer) + dataOffset, element); + LINK(element, array); + dataOffset += sizeof(); + } + } else { + memory.copy(changetype(newBuffer), changetype(buffer), bufferSize); + } + return array; +} + // Helpers /** Asserts that a managed object is still unregistered. */ diff --git a/tests/compiler.js b/tests/compiler.js index 11687949..5b5c1405 100644 --- a/tests/compiler.js +++ b/tests/compiler.js @@ -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(); diff --git a/tests/compiler/abi.optimized.wat b/tests/compiler/abi.optimized.wat index d8df07cd..2bfee2fa 100644 --- a/tests/compiler/abi.optimized.wat +++ b/tests/compiler/abi.optimized.wat @@ -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 diff --git a/tests/compiler/abi.untouched.wat b/tests/compiler/abi.untouched.wat index f0b87c25..7271f11b 100644 --- a/tests/compiler/abi.untouched.wat +++ b/tests/compiler/abi.untouched.wat @@ -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 diff --git a/tests/compiler/assert.optimized.wat b/tests/compiler/assert.optimized.wat index 56e77c21..f2e82a1c 100644 --- a/tests/compiler/assert.optimized.wat +++ b/tests/compiler/assert.optimized.wat @@ -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)) diff --git a/tests/compiler/assert.untouched.wat b/tests/compiler/assert.untouched.wat index c9f2eafc..8ab49937 100644 --- a/tests/compiler/assert.untouched.wat +++ b/tests/compiler/assert.untouched.wat @@ -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 diff --git a/tests/compiler/bool.optimized.wat b/tests/compiler/bool.optimized.wat index 8389baed..cc711a85 100644 --- a/tests/compiler/bool.optimized.wat +++ b/tests/compiler/bool.optimized.wat @@ -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 diff --git a/tests/compiler/bool.untouched.wat b/tests/compiler/bool.untouched.wat index 1c460405..4ef282c1 100644 --- a/tests/compiler/bool.untouched.wat +++ b/tests/compiler/bool.untouched.wat @@ -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 diff --git a/tests/compiler/call-inferred.optimized.wat b/tests/compiler/call-inferred.optimized.wat index 5b82cabf..7bc28d53 100644 --- a/tests/compiler/call-inferred.optimized.wat +++ b/tests/compiler/call-inferred.optimized.wat @@ -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)) diff --git a/tests/compiler/call-inferred.untouched.wat b/tests/compiler/call-inferred.untouched.wat index dbda18ce..cf45f819 100644 --- a/tests/compiler/call-inferred.untouched.wat +++ b/tests/compiler/call-inferred.untouched.wat @@ -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 diff --git a/tests/compiler/call-optional.optimized.wat b/tests/compiler/call-optional.optimized.wat index 57463721..e8313e40 100644 --- a/tests/compiler/call-optional.optimized.wat +++ b/tests/compiler/call-optional.optimized.wat @@ -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 diff --git a/tests/compiler/call-optional.untouched.wat b/tests/compiler/call-optional.untouched.wat index 1bd4adf5..63db1a24 100644 --- a/tests/compiler/call-optional.untouched.wat +++ b/tests/compiler/call-optional.untouched.wat @@ -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 diff --git a/tests/compiler/call-super.optimized.wat b/tests/compiler/call-super.optimized.wat index 58900ea9..62f482b3 100644 --- a/tests/compiler/call-super.optimized.wat +++ b/tests/compiler/call-super.optimized.wat @@ -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 ) ) diff --git a/tests/compiler/call-super.untouched.wat b/tests/compiler/call-super.untouched.wat index 5005235d..cbbae6fa 100644 --- a/tests/compiler/call-super.untouched.wat +++ b/tests/compiler/call-super.untouched.wat @@ -4,118 +4,138 @@ (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.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 $7 i32) + block $~lib/allocator/arena/__memory_allocate|inlined.0 (result i32) + local.get $0 + local.set $1 local.get $1 - i32.sub - i32.const 65535 + 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 65535 + i32.const 7 + i32.add + i32.const 7 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 + current_memory + local.set $4 local.get $3 - grow_memory - i32.const 0 - i32.lt_s + 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 - unreachable + 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 - 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 $~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 diff --git a/tests/compiler/class.optimized.wat b/tests/compiler/class.optimized.wat index 56082bcd..7531e170 100644 --- a/tests/compiler/class.optimized.wat +++ b/tests/compiler/class.optimized.wat @@ -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)) diff --git a/tests/compiler/class.untouched.wat b/tests/compiler/class.untouched.wat index 4f077de8..bd5155a7 100644 --- a/tests/compiler/class.untouched.wat +++ b/tests/compiler/class.untouched.wat @@ -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 diff --git a/tests/compiler/comma.optimized.wat b/tests/compiler/comma.optimized.wat index 8b11cbe4..c7af0887 100644 --- a/tests/compiler/comma.optimized.wat +++ b/tests/compiler/comma.optimized.wat @@ -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 diff --git a/tests/compiler/comma.untouched.wat b/tests/compiler/comma.untouched.wat index dc8c2f29..21671a42 100644 --- a/tests/compiler/comma.untouched.wat +++ b/tests/compiler/comma.untouched.wat @@ -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 diff --git a/tests/compiler/constructor.optimized.wat b/tests/compiler/constructor.optimized.wat index 6fe3e155..29c159fc 100644 --- a/tests/compiler/constructor.optimized.wat +++ b/tests/compiler/constructor.optimized.wat @@ -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 + call $~lib/runtime/ALLOCATE + else + local.get $0 end - local.get $0 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 ) ) diff --git a/tests/compiler/constructor.untouched.wat b/tests/compiler/constructor.untouched.wat index f1a500b8..ad1e648b 100644 --- a/tests/compiler/constructor.untouched.wat +++ b/tests/compiler/constructor.untouched.wat @@ -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,108 +24,125 @@ (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.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 $7 i32) + block $~lib/allocator/arena/__memory_allocate|inlined.0 (result i32) + local.get $0 + local.set $1 local.get $1 - i32.sub - i32.const 65535 + 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 65535 + i32.const 7 + i32.add + i32.const 7 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 + current_memory + local.set $4 local.get $3 - grow_memory - i32.const 0 - i32.lt_s + 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 - unreachable + 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 - local.get $4 - 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 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 + i32.const 0 + 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 + i32.const 0 + 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 diff --git a/tests/compiler/declare.optimized.wat b/tests/compiler/declare.optimized.wat index ef4530a9..8d9f46b6 100644 --- a/tests/compiler/declare.optimized.wat +++ b/tests/compiler/declare.optimized.wat @@ -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 diff --git a/tests/compiler/declare.untouched.wat b/tests/compiler/declare.untouched.wat index ab37d9bb..65646b05 100644 --- a/tests/compiler/declare.untouched.wat +++ b/tests/compiler/declare.untouched.wat @@ -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 diff --git a/tests/compiler/do.optimized.wat b/tests/compiler/do.optimized.wat index 0705d6fa..cbe1030f 100644 --- a/tests/compiler/do.optimized.wat +++ b/tests/compiler/do.optimized.wat @@ -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 diff --git a/tests/compiler/do.untouched.wat b/tests/compiler/do.untouched.wat index b26b20c5..8977815a 100644 --- a/tests/compiler/do.untouched.wat +++ b/tests/compiler/do.untouched.wat @@ -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 diff --git a/tests/compiler/empty.ts b/tests/compiler/empty.ts index e69de29b..26349bc9 100644 --- a/tests/compiler/empty.ts +++ b/tests/compiler/empty.ts @@ -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); diff --git a/tests/compiler/exports.optimized.wat b/tests/compiler/exports.optimized.wat index 7f2e633d..1e718a58 100644 --- a/tests/compiler/exports.optimized.wat +++ b/tests/compiler/exports.optimized.wat @@ -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 diff --git a/tests/compiler/exports.untouched.wat b/tests/compiler/exports.untouched.wat index 2fee8385..79bd9656 100644 --- a/tests/compiler/exports.untouched.wat +++ b/tests/compiler/exports.untouched.wat @@ -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 diff --git a/tests/compiler/for.optimized.wat b/tests/compiler/for.optimized.wat index 11e8c603..a7bed008 100644 --- a/tests/compiler/for.optimized.wat +++ b/tests/compiler/for.optimized.wat @@ -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 diff --git a/tests/compiler/for.untouched.wat b/tests/compiler/for.untouched.wat index 9502a234..45e07de2 100644 --- a/tests/compiler/for.untouched.wat +++ b/tests/compiler/for.untouched.wat @@ -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 diff --git a/tests/compiler/function-expression.optimized.wat b/tests/compiler/function-expression.optimized.wat index 1a71339c..f90052aa 100644 --- a/tests/compiler/function-expression.optimized.wat +++ b/tests/compiler/function-expression.optimized.wat @@ -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 diff --git a/tests/compiler/function-expression.untouched.wat b/tests/compiler/function-expression.untouched.wat index a3747b79..1e02707c 100644 --- a/tests/compiler/function-expression.untouched.wat +++ b/tests/compiler/function-expression.untouched.wat @@ -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 diff --git a/tests/compiler/function-types.optimized.wat b/tests/compiler/function-types.optimized.wat index 00fd577c..18a1abc6 100644 --- a/tests/compiler/function-types.optimized.wat +++ b/tests/compiler/function-types.optimized.wat @@ -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~anonymous|0 $function-types/makeAdder~anonymous|0 $function-types/makeAdder~anonymous|0 $function-types/makeAdder~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 diff --git a/tests/compiler/function-types.untouched.wat b/tests/compiler/function-types.untouched.wat index b63eaf82..70a30e4c 100644 --- a/tests/compiler/function-types.untouched.wat +++ b/tests/compiler/function-types.untouched.wat @@ -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~anonymous|0 $function-types/makeAdder~anonymous|0 $function-types/makeAdder~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 diff --git a/tests/compiler/getter-call.optimized.wat b/tests/compiler/getter-call.optimized.wat index e8a68bcf..d8ad0b6e 100644 --- a/tests/compiler/getter-call.optimized.wat +++ b/tests/compiler/getter-call.optimized.wat @@ -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 diff --git a/tests/compiler/getter-call.untouched.wat b/tests/compiler/getter-call.untouched.wat index a275537b..9d91f3f9 100644 --- a/tests/compiler/getter-call.untouched.wat +++ b/tests/compiler/getter-call.untouched.wat @@ -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) ) ) diff --git a/tests/compiler/getter-setter.optimized.wat b/tests/compiler/getter-setter.optimized.wat index 4cd6c0de..ca02235a 100644 --- a/tests/compiler/getter-setter.optimized.wat +++ b/tests/compiler/getter-setter.optimized.wat @@ -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 diff --git a/tests/compiler/getter-setter.untouched.wat b/tests/compiler/getter-setter.untouched.wat index a2b84349..e82b9ab3 100644 --- a/tests/compiler/getter-setter.untouched.wat +++ b/tests/compiler/getter-setter.untouched.wat @@ -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 diff --git a/tests/compiler/if.optimized.wat b/tests/compiler/if.optimized.wat index 45e0fc41..8415b7ea 100644 --- a/tests/compiler/if.optimized.wat +++ b/tests/compiler/if.optimized.wat @@ -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 diff --git a/tests/compiler/if.untouched.wat b/tests/compiler/if.untouched.wat index 689321a1..6ed4a226 100644 --- a/tests/compiler/if.untouched.wat +++ b/tests/compiler/if.untouched.wat @@ -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 diff --git a/tests/compiler/infer-type.optimized.wat b/tests/compiler/infer-type.optimized.wat index 1f64441e..6237556e 100644 --- a/tests/compiler/infer-type.optimized.wat +++ b/tests/compiler/infer-type.optimized.wat @@ -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)) diff --git a/tests/compiler/infer-type.untouched.wat b/tests/compiler/infer-type.untouched.wat index 10490e5e..8c89b18b 100644 --- a/tests/compiler/infer-type.untouched.wat +++ b/tests/compiler/infer-type.untouched.wat @@ -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 diff --git a/tests/compiler/inlining.optimized.wat b/tests/compiler/inlining.optimized.wat index db65ba02..5272d28c 100644 --- a/tests/compiler/inlining.optimized.wat +++ b/tests/compiler/inlining.optimized.wat @@ -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 ) ) diff --git a/tests/compiler/inlining.untouched.wat b/tests/compiler/inlining.untouched.wat index 39dc34d7..933dbae6 100644 --- a/tests/compiler/inlining.untouched.wat +++ b/tests/compiler/inlining.untouched.wat @@ -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,109 +275,126 @@ 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.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 $7 i32) + block $~lib/allocator/arena/__memory_allocate|inlined.0 (result i32) + local.get $0 + local.set $1 local.get $1 - i32.sub - i32.const 65535 + 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 65535 + i32.const 7 + i32.add + i32.const 7 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 + current_memory + local.set $4 local.get $3 - grow_memory - i32.const 0 - i32.lt_s + 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 - unreachable + 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 - local.get $4 - 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 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) diff --git a/tests/compiler/instanceof.optimized.wat b/tests/compiler/instanceof.optimized.wat index e49cba3a..dd62dccf 100644 --- a/tests/compiler/instanceof.optimized.wat +++ b/tests/compiler/instanceof.optimized.wat @@ -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 diff --git a/tests/compiler/instanceof.untouched.wat b/tests/compiler/instanceof.untouched.wat index 8dd1d677..ed9a4ef7 100644 --- a/tests/compiler/instanceof.untouched.wat +++ b/tests/compiler/instanceof.untouched.wat @@ -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 diff --git a/tests/compiler/logical.optimized.wat b/tests/compiler/logical.optimized.wat index 62d8c41c..d9c5e50c 100644 --- a/tests/compiler/logical.optimized.wat +++ b/tests/compiler/logical.optimized.wat @@ -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 diff --git a/tests/compiler/logical.untouched.wat b/tests/compiler/logical.untouched.wat index bd2d5637..64494942 100644 --- a/tests/compiler/logical.untouched.wat +++ b/tests/compiler/logical.untouched.wat @@ -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 diff --git a/tests/compiler/many-locals.optimized.wat b/tests/compiler/many-locals.optimized.wat index 8883c436..3769196f 100644 --- a/tests/compiler/many-locals.optimized.wat +++ b/tests/compiler/many-locals.optimized.wat @@ -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)) diff --git a/tests/compiler/many-locals.untouched.wat b/tests/compiler/many-locals.untouched.wat index 10bd0b5d..881677bd 100644 --- a/tests/compiler/many-locals.untouched.wat +++ b/tests/compiler/many-locals.untouched.wat @@ -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 diff --git a/tests/compiler/memcpy.optimized.wat b/tests/compiler/memcpy.optimized.wat index b2b5603b..7db58ce5 100644 --- a/tests/compiler/memcpy.optimized.wat +++ b/tests/compiler/memcpy.optimized.wat @@ -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 diff --git a/tests/compiler/memcpy.untouched.wat b/tests/compiler/memcpy.untouched.wat index 1bc3694e..0da94f6d 100644 --- a/tests/compiler/memcpy.untouched.wat +++ b/tests/compiler/memcpy.untouched.wat @@ -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 diff --git a/tests/compiler/memmove.optimized.wat b/tests/compiler/memmove.optimized.wat index af49c1b1..85d29306 100644 --- a/tests/compiler/memmove.optimized.wat +++ b/tests/compiler/memmove.optimized.wat @@ -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 diff --git a/tests/compiler/memmove.untouched.wat b/tests/compiler/memmove.untouched.wat index 0a0707b9..c361df18 100644 --- a/tests/compiler/memmove.untouched.wat +++ b/tests/compiler/memmove.untouched.wat @@ -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 diff --git a/tests/compiler/memset.optimized.wat b/tests/compiler/memset.optimized.wat index 398fcc3d..d08f087b 100644 --- a/tests/compiler/memset.optimized.wat +++ b/tests/compiler/memset.optimized.wat @@ -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 diff --git a/tests/compiler/memset.untouched.wat b/tests/compiler/memset.untouched.wat index e4acbbb5..7b9653e5 100644 --- a/tests/compiler/memset.untouched.wat +++ b/tests/compiler/memset.untouched.wat @@ -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 diff --git a/tests/compiler/new-without-allocator.untouched.wat b/tests/compiler/new-without-allocator.untouched.wat index 8f3933bc..4a524c05 100644 --- a/tests/compiler/new-without-allocator.untouched.wat +++ b/tests/compiler/new-without-allocator.untouched.wat @@ -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) ) ) diff --git a/tests/compiler/object-literal.optimized.wat b/tests/compiler/object-literal.optimized.wat index 788af7e4..081a7d2d 100644 --- a/tests/compiler/object-literal.optimized.wat +++ b/tests/compiler/object-literal.optimized.wat @@ -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 ) ) diff --git a/tests/compiler/object-literal.untouched.wat b/tests/compiler/object-literal.untouched.wat index f5dc9f1c..8d35bd3b 100644 --- a/tests/compiler/object-literal.untouched.wat +++ b/tests/compiler/object-literal.untouched.wat @@ -1,119 +1,147 @@ (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.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 $7 i32) + block $~lib/allocator/arena/__memory_allocate|inlined.0 (result i32) + local.get $0 + local.set $1 local.get $1 - i32.sub - i32.const 65535 + 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 65535 + i32.const 7 + i32.add + i32.const 7 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 + current_memory + local.set $4 local.get $3 - grow_memory - i32.const 0 - i32.lt_s + 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 - unreachable + 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 - 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 $~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) ) ) diff --git a/tests/compiler/optional-typeparameters.optimized.wat b/tests/compiler/optional-typeparameters.optimized.wat index 2364edb5..4fed4547 100644 --- a/tests/compiler/optional-typeparameters.optimized.wat +++ b/tests/compiler/optional-typeparameters.optimized.wat @@ -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 ) ) diff --git a/tests/compiler/optional-typeparameters.untouched.wat b/tests/compiler/optional-typeparameters.untouched.wat index 066794dc..2686e956 100644 --- a/tests/compiler/optional-typeparameters.untouched.wat +++ b/tests/compiler/optional-typeparameters.untouched.wat @@ -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,108 +23,125 @@ (func $optional-typeparameters/testDerived (; 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.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 $7 i32) + block $~lib/allocator/arena/__memory_allocate|inlined.0 (result i32) + local.get $0 + local.set $1 local.get $1 - i32.sub - i32.const 65535 + 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 65535 + i32.const 7 + i32.add + i32.const 7 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 + current_memory + local.set $4 local.get $3 - grow_memory - i32.const 0 - i32.lt_s + 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 - unreachable + 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 - local.get $4 - 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 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#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 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#constructor global.set $optional-typeparameters/tConcrete diff --git a/tests/compiler/overflow.optimized.wat b/tests/compiler/overflow.optimized.wat index 75d5ba71..601e9600 100644 --- a/tests/compiler/overflow.optimized.wat +++ b/tests/compiler/overflow.optimized.wat @@ -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)) diff --git a/tests/compiler/overflow.untouched.wat b/tests/compiler/overflow.untouched.wat index bae4097a..73c44a2f 100644 --- a/tests/compiler/overflow.untouched.wat +++ b/tests/compiler/overflow.untouched.wat @@ -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 diff --git a/tests/compiler/std/hash.ts b/tests/compiler/std/hash.ts index 731ab6d4..d700db6d 100644 --- a/tests/compiler/std/hash.ts +++ b/tests/compiler/std/hash.ts @@ -1,4 +1,4 @@ -import { HASH } from "internal/hash"; +import { HASH } from "util/hash"; function check(hash: u32): bool { return true; diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat index f33b16ea..b627392d 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -2,10 +2,10 @@ (type $FUNCSIG$v (func)) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$vi (func (param i32))) - (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$vii (func (param i32 i32))) (type $FUNCSIG$iij (func (param i32 i64) (result i32))) (type $FUNCSIG$ij (func (param i64) (result i32))) @@ -23,9 +23,9 @@ (type $FUNCSIG$vid (func (param i32 f64))) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\13\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 56) "\1c\00\00\00~\00l\00i\00b\00/\00i\00n\00t\00e\00r\00n\00a\00l\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 120) "\n\00\00\00s\00t\00d\00/\00m\00a\00p\00.\00t\00s") + (data (i32.const 8) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") + (data (i32.const 48) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data (i32.const 96) "\01\00\00\00\14\00\00\00s\00t\00d\00/\00m\00a\00p\00.\00t\00s") (table $0 1 funcref) (elem (i32.const 0) $null) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) @@ -33,7 +33,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) @@ -56,15 +56,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 @@ -73,16 +73,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 @@ -91,23 +91,12 @@ end end end - local.get $2 + local.get $0 global.set $~lib/allocator/arena/offset local.get $1 ) - (func $~lib/internal/arraybuffer/allocateUnsafe (; 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) - local.get $0 - i32.const 1073741816 - i32.gt_u - if - i32.const 0 - i32.const 56 - i32.const 26 - i32.const 2 - call $~lib/env/abort - unreachable - end i32.const 1 i32.const 32 local.get $0 @@ -116,262 +105,285 @@ i32.clz i32.sub i32.shl - call $~lib/allocator/arena/__memory_allocate + call $~lib/memory/memory.allocate local.tee $1 - local.get $0 + 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/internal/memory/memset (; 3 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/runtime/ASSERT_UNREGISTERED (; 3 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + i32.const 124 + i32.le_u + if + i32.const 0 + i32.const 16 + i32.const 172 + i32.const 2 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const -1520547049 + i32.ne + if + i32.const 0 + i32.const 16 + i32.const 173 + i32.const 2 + call $~lib/env/abort + unreachable + end + ) + (func $~lib/memory/memory.fill (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 2 - i32.le_u - if - return - end - local.get $0 - i32.const 1 - i32.add - i32.const 0 - i32.store8 - local.get $0 - i32.const 2 - i32.add - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $2 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 6 - i32.le_u - if - return - end - local.get $0 - i32.const 3 - i32.add - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.le_u - if - return - end - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $2 - local.get $0 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $1 - local.get $2 - i32.sub - i32.const -4 - i32.and - local.tee $1 - local.get $0 - i32.add - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 8 - i32.le_u - if - return - end - local.get $0 - i32.const 4 - i32.add - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.add - i32.const 0 - i32.store - local.get $0 - local.get $1 - i32.add - local.tee $2 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 24 - i32.le_u - if - return - end - local.get $0 - i32.const 12 - i32.add - i32.const 0 - i32.store - local.get $0 - i32.const 16 - i32.add - i32.const 0 - i32.store - local.get $0 - i32.const 20 - i32.add - i32.const 0 - i32.store - local.get $0 - i32.const 24 - i32.add - i32.const 0 - i32.store - local.get $0 - local.get $1 - i32.add - local.tee $2 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $2 - local.get $0 - i32.add - local.set $0 - local.get $1 - local.get $2 - i32.sub - local.set $1 - loop $continue|0 + block $~lib/util/memory/memset|inlined.0 local.get $1 - i32.const 32 - i32.ge_u - if - local.get $0 - i64.const 0 - i64.store - local.get $0 - i32.const 8 - i32.add - i64.const 0 - i64.store - local.get $0 - i32.const 16 - i32.add - i64.const 0 - i64.store - local.get $0 - i32.const 24 - i32.add - i64.const 0 - i64.store + i32.eqz + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 + i32.store8 + local.get $0 + local.get $1 + i32.add + i32.const 1 + i32.sub + i32.const 0 + i32.store8 + local.get $1 + i32.const 2 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 1 + i32.add + i32.const 0 + i32.store8 + local.get $0 + i32.const 2 + i32.add + i32.const 0 + i32.store8 + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 2 + i32.sub + i32.const 0 + i32.store8 + local.get $2 + i32.const 3 + i32.sub + i32.const 0 + i32.store8 + local.get $1 + i32.const 6 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 3 + i32.add + i32.const 0 + i32.store8 + local.get $0 + local.get $1 + i32.add + i32.const 4 + i32.sub + i32.const 0 + i32.store8 + local.get $1 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + local.get $0 + i32.sub + i32.const 3 + i32.and + local.tee $2 + i32.sub + local.set $1 + local.get $0 + local.get $2 + i32.add + local.tee $0 + i32.const 0 + i32.store + local.get $1 + i32.const -4 + i32.and + local.tee $1 + local.get $0 + i32.add + i32.const 4 + i32.sub + i32.const 0 + i32.store + local.get $1 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 4 + i32.add + i32.const 0 + i32.store + local.get $0 + i32.const 8 + i32.add + i32.const 0 + i32.store + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 12 + i32.sub + i32.const 0 + i32.store + local.get $2 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $1 + i32.const 24 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 12 + i32.add + i32.const 0 + i32.store + local.get $0 + i32.const 16 + i32.add + i32.const 0 + i32.store + local.get $0 + i32.const 20 + i32.add + i32.const 0 + i32.store + local.get $0 + i32.const 24 + i32.add + i32.const 0 + i32.store + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 28 + i32.sub + i32.const 0 + i32.store + local.get $2 + i32.const 24 + i32.sub + i32.const 0 + i32.store + local.get $2 + i32.const 20 + i32.sub + i32.const 0 + i32.store + local.get $2 + i32.const 16 + i32.sub + i32.const 0 + i32.store + local.get $0 + i32.const 4 + i32.and + i32.const 24 + i32.add + local.tee $2 + local.get $0 + i32.add + local.set $0 + local.get $1 + local.get $2 + i32.sub + local.set $1 + loop $continue|0 local.get $1 i32.const 32 - i32.sub - local.set $1 - local.get $0 - i32.const 32 - i32.add - local.set $0 - br $continue|0 + i32.ge_u + if + local.get $0 + i64.const 0 + i64.store + local.get $0 + i32.const 8 + i32.add + i64.const 0 + i64.store + local.get $0 + i32.const 16 + i32.add + i64.const 0 + i64.store + local.get $0 + i32.const 24 + i32.add + i64.const 0 + i64.store + local.get $1 + i32.const 32 + i32.sub + local.set $1 + local.get $0 + i32.const 32 + i32.add + local.set $0 + br $continue|0 + end end end ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/arraybuffer/ArrayBuffer#constructor (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) local.get $0 i32.const 1073741816 i32.gt_u if i32.const 0 - i32.const 8 - i32.const 47 - i32.const 40 + i32.const 56 + i32.const 24 + i32.const 43 call $~lib/env/abort unreachable end local.get $0 - call $~lib/internal/arraybuffer/allocateUnsafe - local.set $2 + call $~lib/runtime/ALLOCATE + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $1 + i32.const 8 + i32.sub + i32.const 3 + i32.store local.get $1 - i32.eqz - if - local.get $2 - i32.const 8 - i32.add - local.get $0 - call $~lib/internal/memory/memset - end - local.get $2 ) - (func $~lib/map/Map#clear (; 5 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 16 - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store local.get $0 @@ -379,7 +391,6 @@ i32.store offset=4 local.get $0 i32.const 48 - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store offset=8 local.get $0 @@ -392,11 +403,18 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 6 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/map/Map#constructor (; 7 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - call $~lib/allocator/arena/__memory_allocate + call $~lib/runtime/ALLOCATE local.tee $0 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $0 + i32.const 8 + i32.sub + i32.const 2 + i32.store + local.get $0 i32.const 0 i32.store local.get $0 @@ -418,7 +436,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 7 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 8 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -428,7 +446,7 @@ i32.const 2 i32.shl i32.add - i32.load offset=8 + i32.load local.set $2 loop $continue|0 local.get $2 @@ -463,7 +481,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -479,7 +497,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 9 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -490,13 +508,12 @@ local.get $1 i32.const 1 i32.add - local.tee $2 + local.tee $4 i32.const 2 i32.shl - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $2 + local.set $5 + local.get $4 f64.convert_i32_s f64.const 2.6666666666666665 f64.mul @@ -504,13 +521,10 @@ local.tee $6 i32.const 12 i32.mul - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + local.set $4 local.get $0 i32.load offset=8 - i32.const 8 - i32.add local.tee $2 local.get $0 i32.load offset=16 @@ -518,9 +532,7 @@ i32.mul i32.add local.set $7 - local.get $5 - i32.const 8 - i32.add + local.get $4 local.set $3 loop $continue|0 local.get $2 @@ -552,14 +564,14 @@ i32.and i32.const 2 i32.shl - local.get $4 + local.get $5 i32.add local.tee $8 - i32.load offset=8 + i32.load i32.store offset=8 local.get $8 local.get $3 - i32.store offset=8 + i32.store local.get $3 i32.const 12 i32.add @@ -573,13 +585,13 @@ end end local.get $0 - local.get $4 + local.get $5 i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 - local.get $5 + local.get $4 i32.store offset=8 local.get $0 local.get $6 @@ -589,7 +601,7 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 10 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -653,12 +665,10 @@ i32.const 1 i32.add i32.store offset=16 - local.get $3 - i32.const 8 - i32.add local.get $4 i32.const 12 i32.mul + local.get $3 i32.add local.tee $3 local.get $1 @@ -683,14 +693,14 @@ i32.shl i32.add local.tee $4 - i32.load offset=8 + i32.load i32.store offset=8 local.get $4 local.get $3 - i32.store offset=8 + i32.store end ) - (func $~lib/map/Map#get (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -711,7 +721,7 @@ unreachable end ) - (func $~lib/map/Map#delete (; 12 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#delete (; 13 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -778,7 +788,7 @@ call $~lib/map/Map#rehash end ) - (func $std/map/test (; 13 ;) (type $FUNCSIG$v) + (func $std/map/test (; 14 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) call $~lib/map/Map#constructor @@ -793,7 +803,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -815,7 +825,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -834,7 +844,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 11 i32.const 4 call $~lib/env/abort @@ -855,7 +865,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 13 i32.const 2 call $~lib/env/abort @@ -874,7 +884,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 17 i32.const 4 call $~lib/env/abort @@ -893,7 +903,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -915,7 +925,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 4 call $~lib/env/abort @@ -934,7 +944,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 21 i32.const 4 call $~lib/env/abort @@ -955,7 +965,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 23 i32.const 2 call $~lib/env/abort @@ -974,7 +984,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 27 i32.const 4 call $~lib/env/abort @@ -993,7 +1003,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 4 call $~lib/env/abort @@ -1007,7 +1017,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 30 i32.const 4 call $~lib/env/abort @@ -1028,7 +1038,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 2 call $~lib/env/abort @@ -1046,7 +1056,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -1068,7 +1078,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 4 call $~lib/env/abort @@ -1082,7 +1092,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 40 i32.const 4 call $~lib/env/abort @@ -1103,7 +1113,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort @@ -1115,14 +1125,47 @@ i32.load offset=20 if i32.const 0 - i32.const 120 + i32.const 104 i32.const 46 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/map/Map#has (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#constructor (; 15 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + call $~lib/runtime/ALLOCATE + local.tee $0 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $0 + i32.const 8 + i32.sub + i32.const 4 + i32.store + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/map/Map#has (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -1136,7 +1179,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 15 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 17 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1147,13 +1190,12 @@ local.get $1 i32.const 1 i32.add - local.tee $2 + local.tee $4 i32.const 2 i32.shl - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $2 + local.set $5 + local.get $4 f64.convert_i32_s f64.const 2.6666666666666665 f64.mul @@ -1161,13 +1203,10 @@ local.tee $6 i32.const 12 i32.mul - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + local.set $4 local.get $0 i32.load offset=8 - i32.const 8 - i32.add local.tee $2 local.get $0 i32.load offset=16 @@ -1175,9 +1214,7 @@ i32.mul i32.add local.set $7 - local.get $5 - i32.const 8 - i32.add + local.get $4 local.set $3 loop $continue|0 local.get $2 @@ -1209,14 +1246,14 @@ i32.and i32.const 2 i32.shl - local.get $4 + local.get $5 i32.add local.tee $8 - i32.load offset=8 + i32.load i32.store offset=8 local.get $8 local.get $3 - i32.store offset=8 + i32.store local.get $3 i32.const 12 i32.add @@ -1230,13 +1267,13 @@ end end local.get $0 - local.get $4 + local.get $5 i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 - local.get $5 + local.get $4 i32.store offset=8 local.get $0 local.get $6 @@ -1246,7 +1283,7 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 16 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 18 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1308,12 +1345,10 @@ i32.const 1 i32.add i32.store offset=16 - local.get $3 - i32.const 8 - i32.add local.get $4 i32.const 12 i32.mul + local.get $3 i32.add local.tee $3 local.get $1 @@ -1338,14 +1373,14 @@ i32.shl i32.add local.tee $4 - i32.load offset=8 + i32.load i32.store offset=8 local.get $4 local.get $3 - i32.store offset=8 + i32.store end ) - (func $~lib/map/Map#get (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -1364,7 +1399,7 @@ unreachable end ) - (func $~lib/map/Map#delete (; 18 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#delete (; 20 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -1429,10 +1464,10 @@ call $~lib/map/Map#rehash end ) - (func $std/map/test (; 19 ;) (type $FUNCSIG$v) + (func $std/map/test (; 21 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - call $~lib/map/Map#constructor + call $~lib/map/Map#constructor local.set $1 loop $repeat|0 local.get $0 @@ -1444,7 +1479,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -1464,7 +1499,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -1481,7 +1516,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 11 i32.const 4 call $~lib/env/abort @@ -1502,7 +1537,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 13 i32.const 2 call $~lib/env/abort @@ -1521,7 +1556,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 17 i32.const 4 call $~lib/env/abort @@ -1538,7 +1573,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -1558,7 +1593,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 4 call $~lib/env/abort @@ -1575,7 +1610,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 21 i32.const 4 call $~lib/env/abort @@ -1596,7 +1631,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 23 i32.const 2 call $~lib/env/abort @@ -1615,7 +1650,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 27 i32.const 4 call $~lib/env/abort @@ -1632,7 +1667,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 4 call $~lib/env/abort @@ -1646,7 +1681,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 30 i32.const 4 call $~lib/env/abort @@ -1667,7 +1702,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 2 call $~lib/env/abort @@ -1685,7 +1720,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -1705,7 +1740,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 4 call $~lib/env/abort @@ -1719,7 +1754,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 40 i32.const 4 call $~lib/env/abort @@ -1740,7 +1775,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort @@ -1752,14 +1787,47 @@ i32.load offset=20 if i32.const 0 - i32.const 120 + i32.const 104 i32.const 46 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/map/Map#find (; 20 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#constructor (; 22 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + call $~lib/runtime/ALLOCATE + local.tee $0 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $0 + i32.const 8 + i32.sub + i32.const 5 + i32.store + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/map/Map#find (; 23 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -1769,7 +1837,7 @@ i32.const 2 i32.shl i32.add - i32.load offset=8 + i32.load local.set $2 loop $continue|0 local.get $2 @@ -1804,7 +1872,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -1829,7 +1897,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 22 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 25 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1840,13 +1908,12 @@ local.get $1 i32.const 1 i32.add - local.tee $2 + local.tee $4 i32.const 2 i32.shl - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $2 + local.set $6 + local.get $4 f64.convert_i32_s f64.const 2.6666666666666665 f64.mul @@ -1854,13 +1921,10 @@ local.tee $7 i32.const 12 i32.mul - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $6 + local.set $4 local.get $0 i32.load offset=8 - i32.const 8 - i32.add local.tee $2 local.get $0 i32.load offset=16 @@ -1868,9 +1932,7 @@ i32.mul i32.add local.set $8 - local.get $6 - i32.const 8 - i32.add + local.get $4 local.set $3 loop $continue|0 local.get $2 @@ -1894,14 +1956,14 @@ local.get $3 local.get $2 i32.load16_s - local.tee $4 + local.tee $5 i32.const 255 i32.and i32.const -2128831035 i32.xor i32.const 16777619 i32.mul - local.get $4 + local.get $5 i32.const 8 i32.shr_u i32.xor @@ -1911,14 +1973,14 @@ i32.and i32.const 2 i32.shl - local.get $5 + local.get $6 i32.add - local.tee $4 - i32.load offset=8 + local.tee $5 + i32.load i32.store offset=8 - local.get $4 + local.get $5 local.get $3 - i32.store offset=8 + i32.store local.get $3 i32.const 12 i32.add @@ -1932,13 +1994,13 @@ end end local.get $0 - local.get $5 + local.get $6 i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 - local.get $6 + local.get $4 i32.store offset=8 local.get $0 local.get $7 @@ -1948,7 +2010,7 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 23 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 26 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2021,12 +2083,10 @@ i32.const 1 i32.add i32.store offset=16 - local.get $3 - i32.const 8 - i32.add local.get $4 i32.const 12 i32.mul + local.get $3 i32.add local.tee $3 local.get $1 @@ -2051,14 +2111,14 @@ i32.shl i32.add local.tee $4 - i32.load offset=8 + i32.load i32.store offset=8 local.get $4 local.get $3 - i32.store offset=8 + i32.store end ) - (func $~lib/map/Map#get (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -2088,7 +2148,7 @@ unreachable end ) - (func $~lib/map/Map#delete (; 25 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#delete (; 28 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -2164,10 +2224,10 @@ call $~lib/map/Map#rehash end ) - (func $std/map/test (; 26 ;) (type $FUNCSIG$v) + (func $std/map/test (; 29 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - call $~lib/map/Map#constructor + call $~lib/map/Map#constructor local.set $1 loop $repeat|0 local.get $0 @@ -2179,7 +2239,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -2201,7 +2261,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -2220,7 +2280,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 11 i32.const 4 call $~lib/env/abort @@ -2241,7 +2301,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 13 i32.const 2 call $~lib/env/abort @@ -2260,7 +2320,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 17 i32.const 4 call $~lib/env/abort @@ -2279,7 +2339,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -2301,7 +2361,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 4 call $~lib/env/abort @@ -2320,7 +2380,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 21 i32.const 4 call $~lib/env/abort @@ -2341,7 +2401,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 23 i32.const 2 call $~lib/env/abort @@ -2360,7 +2420,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 27 i32.const 4 call $~lib/env/abort @@ -2379,7 +2439,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 4 call $~lib/env/abort @@ -2393,7 +2453,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 30 i32.const 4 call $~lib/env/abort @@ -2414,7 +2474,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 2 call $~lib/env/abort @@ -2432,7 +2492,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -2454,7 +2514,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 4 call $~lib/env/abort @@ -2468,7 +2528,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 40 i32.const 4 call $~lib/env/abort @@ -2489,7 +2549,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort @@ -2501,14 +2561,47 @@ i32.load offset=20 if i32.const 0 - i32.const 120 + i32.const 104 i32.const 46 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/map/Map#has (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#constructor (; 30 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + call $~lib/runtime/ALLOCATE + local.tee $0 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $0 + i32.const 8 + i32.sub + i32.const 6 + i32.store + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/map/Map#has (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -2531,7 +2624,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 28 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 32 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2542,13 +2635,12 @@ local.get $1 i32.const 1 i32.add - local.tee $2 + local.tee $4 i32.const 2 i32.shl - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $2 + local.set $6 + local.get $4 f64.convert_i32_s f64.const 2.6666666666666665 f64.mul @@ -2556,13 +2648,10 @@ local.tee $7 i32.const 12 i32.mul - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $6 + local.set $4 local.get $0 i32.load offset=8 - i32.const 8 - i32.add local.tee $2 local.get $0 i32.load offset=16 @@ -2570,9 +2659,7 @@ i32.mul i32.add local.set $8 - local.get $6 - i32.const 8 - i32.add + local.get $4 local.set $3 loop $continue|0 local.get $2 @@ -2596,14 +2683,14 @@ local.get $3 local.get $2 i32.load16_u - local.tee $4 + local.tee $5 i32.const 255 i32.and i32.const -2128831035 i32.xor i32.const 16777619 i32.mul - local.get $4 + local.get $5 i32.const 8 i32.shr_u i32.xor @@ -2613,14 +2700,14 @@ i32.and i32.const 2 i32.shl - local.get $5 + local.get $6 i32.add - local.tee $4 - i32.load offset=8 + local.tee $5 + i32.load i32.store offset=8 - local.get $4 + local.get $5 local.get $3 - i32.store offset=8 + i32.store local.get $3 i32.const 12 i32.add @@ -2634,13 +2721,13 @@ end end local.get $0 - local.get $5 + local.get $6 i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 - local.get $6 + local.get $4 i32.store offset=8 local.get $0 local.get $7 @@ -2650,7 +2737,7 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 29 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 33 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2721,12 +2808,10 @@ i32.const 1 i32.add i32.store offset=16 - local.get $3 - i32.const 8 - i32.add local.get $4 i32.const 12 i32.mul + local.get $3 i32.add local.tee $3 local.get $1 @@ -2751,14 +2836,14 @@ i32.shl i32.add local.tee $4 - i32.load offset=8 + i32.load i32.store offset=8 local.get $4 local.get $3 - i32.store offset=8 + i32.store end ) - (func $~lib/map/Map#get (; 30 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 34 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -2786,7 +2871,7 @@ unreachable end ) - (func $~lib/map/Map#delete (; 31 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#delete (; 35 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -2860,10 +2945,10 @@ call $~lib/map/Map#rehash end ) - (func $std/map/test (; 32 ;) (type $FUNCSIG$v) + (func $std/map/test (; 36 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - call $~lib/map/Map#constructor + call $~lib/map/Map#constructor local.set $1 loop $repeat|0 local.get $0 @@ -2875,7 +2960,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -2895,7 +2980,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -2912,7 +2997,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 11 i32.const 4 call $~lib/env/abort @@ -2933,7 +3018,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 13 i32.const 2 call $~lib/env/abort @@ -2952,7 +3037,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 17 i32.const 4 call $~lib/env/abort @@ -2969,7 +3054,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -2989,7 +3074,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 4 call $~lib/env/abort @@ -3006,7 +3091,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 21 i32.const 4 call $~lib/env/abort @@ -3027,7 +3112,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 23 i32.const 2 call $~lib/env/abort @@ -3046,7 +3131,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 27 i32.const 4 call $~lib/env/abort @@ -3063,7 +3148,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 4 call $~lib/env/abort @@ -3077,7 +3162,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 30 i32.const 4 call $~lib/env/abort @@ -3098,7 +3183,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 2 call $~lib/env/abort @@ -3116,7 +3201,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -3136,7 +3221,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 4 call $~lib/env/abort @@ -3150,7 +3235,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 40 i32.const 4 call $~lib/env/abort @@ -3171,7 +3256,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort @@ -3183,14 +3268,47 @@ i32.load offset=20 if i32.const 0 - i32.const 120 + i32.const 104 i32.const 46 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/internal/hash/hash32 (; 33 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 37 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + call $~lib/runtime/ALLOCATE + local.tee $0 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $0 + i32.const 8 + i32.sub + i32.const 7 + i32.store + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/util/hash/hash32 (; 38 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 255 i32.and @@ -3221,7 +3339,7 @@ i32.const 16777619 i32.mul ) - (func $~lib/map/Map#find (; 34 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 39 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -3231,7 +3349,7 @@ i32.const 2 i32.shl i32.add - i32.load offset=8 + i32.load local.set $2 loop $continue|0 local.get $2 @@ -3264,16 +3382,16 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 35 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 40 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 - call $~lib/internal/hash/hash32 + call $~lib/util/hash/hash32 call $~lib/map/Map#find i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 36 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 41 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3284,13 +3402,12 @@ local.get $1 i32.const 1 i32.add - local.tee $2 + local.tee $4 i32.const 2 i32.shl - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $2 + local.set $5 + local.get $4 f64.convert_i32_s f64.const 2.6666666666666665 f64.mul @@ -3298,13 +3415,10 @@ local.tee $6 i32.const 12 i32.mul - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + local.set $4 local.get $0 i32.load offset=8 - i32.const 8 - i32.add local.tee $2 local.get $0 i32.load offset=16 @@ -3312,9 +3426,7 @@ i32.mul i32.add local.set $7 - local.get $5 - i32.const 8 - i32.add + local.get $4 local.set $3 loop $continue|0 local.get $2 @@ -3338,19 +3450,19 @@ local.get $3 local.get $2 i32.load - call $~lib/internal/hash/hash32 + call $~lib/util/hash/hash32 local.get $1 i32.and i32.const 2 i32.shl - local.get $4 + local.get $5 i32.add local.tee $8 - i32.load offset=8 + i32.load i32.store offset=8 local.get $8 local.get $3 - i32.store offset=8 + i32.store local.get $3 i32.const 12 i32.add @@ -3364,13 +3476,13 @@ end end local.get $0 - local.get $4 + local.get $5 i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 - local.get $5 + local.get $4 i32.store offset=8 local.get $0 local.get $6 @@ -3380,14 +3492,14 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 37 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 42 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) local.get $0 local.get $1 local.get $1 - call $~lib/internal/hash/hash32 + call $~lib/util/hash/hash32 local.tee $5 call $~lib/map/Map#find local.tee $3 @@ -3435,12 +3547,10 @@ i32.const 1 i32.add i32.store offset=16 - local.get $3 - i32.const 8 - i32.add local.get $4 i32.const 12 i32.mul + local.get $3 i32.add local.tee $3 local.get $1 @@ -3465,18 +3575,18 @@ i32.shl i32.add local.tee $4 - i32.load offset=8 + i32.load i32.store offset=8 local.get $4 local.get $3 - i32.store offset=8 + i32.store end ) - (func $~lib/map/Map#get (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 43 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 - call $~lib/internal/hash/hash32 + call $~lib/util/hash/hash32 call $~lib/map/Map#find local.tee $0 if (result i32) @@ -3486,12 +3596,12 @@ unreachable end ) - (func $~lib/map/Map#delete (; 39 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#delete (; 44 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 local.get $1 - call $~lib/internal/hash/hash32 + call $~lib/util/hash/hash32 call $~lib/map/Map#find local.tee $1 i32.eqz @@ -3546,10 +3656,10 @@ call $~lib/map/Map#rehash end ) - (func $std/map/test (; 40 ;) (type $FUNCSIG$v) + (func $std/map/test (; 45 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - call $~lib/map/Map#constructor + call $~lib/map/Map#constructor local.set $1 loop $repeat|0 local.get $0 @@ -3561,7 +3671,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -3579,7 +3689,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -3594,7 +3704,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 11 i32.const 4 call $~lib/env/abort @@ -3615,7 +3725,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 13 i32.const 2 call $~lib/env/abort @@ -3634,7 +3744,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 17 i32.const 4 call $~lib/env/abort @@ -3649,7 +3759,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -3667,7 +3777,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 4 call $~lib/env/abort @@ -3682,7 +3792,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 21 i32.const 4 call $~lib/env/abort @@ -3703,7 +3813,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 23 i32.const 2 call $~lib/env/abort @@ -3722,7 +3832,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 27 i32.const 4 call $~lib/env/abort @@ -3737,7 +3847,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 4 call $~lib/env/abort @@ -3751,7 +3861,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 30 i32.const 4 call $~lib/env/abort @@ -3772,7 +3882,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 2 call $~lib/env/abort @@ -3790,7 +3900,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -3808,7 +3918,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 4 call $~lib/env/abort @@ -3822,7 +3932,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 40 i32.const 4 call $~lib/env/abort @@ -3843,7 +3953,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort @@ -3855,17 +3965,50 @@ i32.load offset=20 if i32.const 0 - i32.const 120 + i32.const 104 i32.const 46 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/map/test (; 41 ;) (type $FUNCSIG$v) + (func $~lib/map/Map#constructor (; 46 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + call $~lib/runtime/ALLOCATE + local.tee $0 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $0 + i32.const 8 + i32.sub + i32.const 8 + i32.store + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $std/map/test (; 47 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - call $~lib/map/Map#constructor + call $~lib/map/Map#constructor local.set $1 loop $repeat|0 local.get $0 @@ -3877,7 +4020,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -3895,7 +4038,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -3910,7 +4053,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 11 i32.const 4 call $~lib/env/abort @@ -3931,7 +4074,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 13 i32.const 2 call $~lib/env/abort @@ -3950,7 +4093,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 17 i32.const 4 call $~lib/env/abort @@ -3965,7 +4108,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -3983,7 +4126,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 4 call $~lib/env/abort @@ -3998,7 +4141,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 21 i32.const 4 call $~lib/env/abort @@ -4019,7 +4162,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 23 i32.const 2 call $~lib/env/abort @@ -4038,7 +4181,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 27 i32.const 4 call $~lib/env/abort @@ -4053,7 +4196,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 4 call $~lib/env/abort @@ -4067,7 +4210,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 30 i32.const 4 call $~lib/env/abort @@ -4088,7 +4231,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 2 call $~lib/env/abort @@ -4106,7 +4249,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -4124,7 +4267,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 4 call $~lib/env/abort @@ -4138,7 +4281,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 40 i32.const 4 call $~lib/env/abort @@ -4159,7 +4302,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort @@ -4171,17 +4314,16 @@ i32.load offset=20 if i32.const 0 - i32.const 120 + i32.const 104 i32.const 46 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/map/Map#clear (; 42 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 48 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 16 - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store local.get $0 @@ -4189,7 +4331,6 @@ i32.store offset=4 local.get $0 i32.const 64 - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store offset=8 local.get $0 @@ -4202,11 +4343,18 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 43 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/map/Map#constructor (; 49 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - call $~lib/allocator/arena/__memory_allocate + call $~lib/runtime/ALLOCATE local.tee $0 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $0 + i32.const 8 + i32.sub + i32.const 9 + i32.store + local.get $0 i32.const 0 i32.store local.get $0 @@ -4228,7 +4376,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/internal/hash/hash64 (; 44 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/hash/hash64 (; 50 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) local.get $0 i32.wrap_i64 @@ -4294,7 +4442,7 @@ i32.const 16777619 i32.mul ) - (func $~lib/map/Map#find (; 45 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 51 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -4304,7 +4452,7 @@ i32.const 2 i32.shl i32.add - i32.load offset=8 + i32.load local.set $2 loop $continue|0 local.get $2 @@ -4337,16 +4485,16 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 46 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/map/Map#has (; 52 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) local.get $0 local.get $1 local.get $1 - call $~lib/internal/hash/hash64 + call $~lib/util/hash/hash64 call $~lib/map/Map#find i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 47 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 53 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4357,13 +4505,12 @@ local.get $1 i32.const 1 i32.add - local.tee $2 + local.tee $4 i32.const 2 i32.shl - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $2 + local.set $5 + local.get $4 f64.convert_i32_s f64.const 2.6666666666666665 f64.mul @@ -4371,13 +4518,10 @@ local.tee $6 i32.const 4 i32.shl - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + local.set $4 local.get $0 i32.load offset=8 - i32.const 8 - i32.add local.tee $2 local.get $0 i32.load offset=16 @@ -4385,9 +4529,7 @@ i32.shl i32.add local.set $7 - local.get $5 - i32.const 8 - i32.add + local.get $4 local.set $3 loop $continue|0 local.get $2 @@ -4411,19 +4553,19 @@ local.get $3 local.get $2 i64.load - call $~lib/internal/hash/hash64 + call $~lib/util/hash/hash64 local.get $1 i32.and i32.const 2 i32.shl - local.get $4 + local.get $5 i32.add local.tee $8 - i32.load offset=8 + i32.load i32.store offset=12 local.get $8 local.get $3 - i32.store offset=8 + i32.store local.get $3 i32.const 16 i32.add @@ -4437,13 +4579,13 @@ end end local.get $0 - local.get $4 + local.get $5 i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 - local.get $5 + local.get $4 i32.store offset=8 local.get $0 local.get $6 @@ -4453,14 +4595,14 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 48 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/map/Map#set (; 54 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) local.get $0 local.get $1 local.get $1 - call $~lib/internal/hash/hash64 + call $~lib/util/hash/hash64 local.tee $5 call $~lib/map/Map#find local.tee $3 @@ -4508,12 +4650,10 @@ i32.const 1 i32.add i32.store offset=16 - local.get $3 - i32.const 8 - i32.add local.get $4 i32.const 4 i32.shl + local.get $3 i32.add local.tee $3 local.get $1 @@ -4538,18 +4678,18 @@ i32.shl i32.add local.tee $4 - i32.load offset=8 + i32.load i32.store offset=12 local.get $4 local.get $3 - i32.store offset=8 + i32.store end ) - (func $~lib/map/Map#get (; 49 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/map/Map#get (; 55 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) local.get $0 local.get $1 local.get $1 - call $~lib/internal/hash/hash64 + call $~lib/util/hash/hash64 call $~lib/map/Map#find local.tee $0 if (result i32) @@ -4559,13 +4699,13 @@ unreachable end ) - (func $~lib/map/Map#delete (; 50 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) + (func $~lib/map/Map#delete (; 56 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) (local $2 i32) (local $3 i32) local.get $0 local.get $1 local.get $1 - call $~lib/internal/hash/hash64 + call $~lib/util/hash/hash64 call $~lib/map/Map#find local.tee $2 i32.eqz @@ -4620,7 +4760,7 @@ call $~lib/map/Map#rehash end ) - (func $std/map/test (; 51 ;) (type $FUNCSIG$v) + (func $std/map/test (; 57 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) call $~lib/map/Map#constructor @@ -4635,7 +4775,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -4654,7 +4794,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -4670,7 +4810,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 11 i32.const 4 call $~lib/env/abort @@ -4691,7 +4831,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 13 i32.const 2 call $~lib/env/abort @@ -4710,7 +4850,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 17 i32.const 4 call $~lib/env/abort @@ -4726,7 +4866,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -4745,7 +4885,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 4 call $~lib/env/abort @@ -4761,7 +4901,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 21 i32.const 4 call $~lib/env/abort @@ -4782,7 +4922,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 23 i32.const 2 call $~lib/env/abort @@ -4801,7 +4941,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 27 i32.const 4 call $~lib/env/abort @@ -4817,7 +4957,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 4 call $~lib/env/abort @@ -4831,7 +4971,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 30 i32.const 4 call $~lib/env/abort @@ -4852,7 +4992,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 2 call $~lib/env/abort @@ -4870,7 +5010,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -4889,7 +5029,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 4 call $~lib/env/abort @@ -4903,7 +5043,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 40 i32.const 4 call $~lib/env/abort @@ -4924,7 +5064,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort @@ -4936,17 +5076,50 @@ i32.load offset=20 if i32.const 0 - i32.const 120 + i32.const 104 i32.const 46 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/map/test (; 52 ;) (type $FUNCSIG$v) + (func $~lib/map/Map#constructor (; 58 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + call $~lib/runtime/ALLOCATE + local.tee $0 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $0 + i32.const 8 + i32.sub + i32.const 10 + i32.store + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $std/map/test (; 59 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) - call $~lib/map/Map#constructor + call $~lib/map/Map#constructor local.set $1 loop $repeat|0 local.get $0 @@ -4958,7 +5131,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -4977,7 +5150,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -4993,7 +5166,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 11 i32.const 4 call $~lib/env/abort @@ -5014,7 +5187,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 13 i32.const 2 call $~lib/env/abort @@ -5033,7 +5206,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 17 i32.const 4 call $~lib/env/abort @@ -5049,7 +5222,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -5068,7 +5241,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 4 call $~lib/env/abort @@ -5084,7 +5257,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 21 i32.const 4 call $~lib/env/abort @@ -5105,7 +5278,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 23 i32.const 2 call $~lib/env/abort @@ -5124,7 +5297,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 27 i32.const 4 call $~lib/env/abort @@ -5140,7 +5313,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 4 call $~lib/env/abort @@ -5154,7 +5327,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 30 i32.const 4 call $~lib/env/abort @@ -5175,7 +5348,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 2 call $~lib/env/abort @@ -5193,7 +5366,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -5212,7 +5385,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 4 call $~lib/env/abort @@ -5226,7 +5399,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 40 i32.const 4 call $~lib/env/abort @@ -5247,7 +5420,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort @@ -5259,14 +5432,47 @@ i32.load offset=20 if i32.const 0 - i32.const 120 + i32.const 104 i32.const 46 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/map/Map#find (; 53 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/map/Map#constructor (; 60 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + call $~lib/runtime/ALLOCATE + local.tee $0 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $0 + i32.const 8 + i32.sub + i32.const 11 + i32.store + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/map/Map#find (; 61 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -5276,7 +5482,7 @@ i32.const 2 i32.shl i32.add - i32.load offset=8 + i32.load local.set $2 loop $continue|0 local.get $2 @@ -5309,17 +5515,17 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 54 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/map/Map#has (; 62 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) local.get $0 local.get $1 local.get $1 i32.reinterpret_f32 - call $~lib/internal/hash/hash32 + call $~lib/util/hash/hash32 call $~lib/map/Map#find i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 55 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 63 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5330,13 +5536,12 @@ local.get $1 i32.const 1 i32.add - local.tee $2 + local.tee $4 i32.const 2 i32.shl - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $2 + local.set $5 + local.get $4 f64.convert_i32_s f64.const 2.6666666666666665 f64.mul @@ -5344,13 +5549,10 @@ local.tee $6 i32.const 12 i32.mul - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + local.set $4 local.get $0 i32.load offset=8 - i32.const 8 - i32.add local.tee $2 local.get $0 i32.load offset=16 @@ -5358,9 +5560,7 @@ i32.mul i32.add local.set $7 - local.get $5 - i32.const 8 - i32.add + local.get $4 local.set $3 loop $continue|0 local.get $2 @@ -5385,19 +5585,19 @@ local.get $2 f32.load i32.reinterpret_f32 - call $~lib/internal/hash/hash32 + call $~lib/util/hash/hash32 local.get $1 i32.and i32.const 2 i32.shl - local.get $4 + local.get $5 i32.add local.tee $8 - i32.load offset=8 + i32.load i32.store offset=8 local.get $8 local.get $3 - i32.store offset=8 + i32.store local.get $3 i32.const 12 i32.add @@ -5411,13 +5611,13 @@ end end local.get $0 - local.get $4 + local.get $5 i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 - local.get $5 + local.get $4 i32.store offset=8 local.get $0 local.get $6 @@ -5427,7 +5627,7 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 56 ;) (type $FUNCSIG$vifi) (param $0 i32) (param $1 f32) (param $2 i32) + (func $~lib/map/Map#set (; 64 ;) (type $FUNCSIG$vifi) (param $0 i32) (param $1 f32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5435,7 +5635,7 @@ local.get $1 local.get $1 i32.reinterpret_f32 - call $~lib/internal/hash/hash32 + call $~lib/util/hash/hash32 local.tee $5 call $~lib/map/Map#find local.tee $3 @@ -5483,12 +5683,10 @@ i32.const 1 i32.add i32.store offset=16 - local.get $3 - i32.const 8 - i32.add local.get $4 i32.const 12 i32.mul + local.get $3 i32.add local.tee $3 local.get $1 @@ -5513,19 +5711,19 @@ i32.shl i32.add local.tee $4 - i32.load offset=8 + i32.load i32.store offset=8 local.get $4 local.get $3 - i32.store offset=8 + i32.store end ) - (func $~lib/map/Map#get (; 57 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/map/Map#get (; 65 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) local.get $0 local.get $1 local.get $1 i32.reinterpret_f32 - call $~lib/internal/hash/hash32 + call $~lib/util/hash/hash32 call $~lib/map/Map#find local.tee $0 if (result i32) @@ -5535,14 +5733,14 @@ unreachable end ) - (func $~lib/map/Map#delete (; 58 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32) + (func $~lib/map/Map#delete (; 66 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32) (local $2 i32) (local $3 i32) local.get $0 local.get $1 local.get $1 i32.reinterpret_f32 - call $~lib/internal/hash/hash32 + call $~lib/util/hash/hash32 call $~lib/map/Map#find local.tee $2 i32.eqz @@ -5597,10 +5795,10 @@ call $~lib/map/Map#rehash end ) - (func $std/map/test (; 59 ;) (type $FUNCSIG$v) + (func $std/map/test (; 67 ;) (type $FUNCSIG$v) (local $0 f32) (local $1 i32) - call $~lib/map/Map#constructor + call $~lib/map/Map#constructor local.set $1 loop $repeat|0 local.get $0 @@ -5612,7 +5810,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -5631,7 +5829,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -5647,7 +5845,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 11 i32.const 4 call $~lib/env/abort @@ -5668,7 +5866,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 13 i32.const 2 call $~lib/env/abort @@ -5687,7 +5885,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 17 i32.const 4 call $~lib/env/abort @@ -5703,7 +5901,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -5722,7 +5920,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 4 call $~lib/env/abort @@ -5738,7 +5936,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 21 i32.const 4 call $~lib/env/abort @@ -5759,7 +5957,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 23 i32.const 2 call $~lib/env/abort @@ -5778,7 +5976,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 27 i32.const 4 call $~lib/env/abort @@ -5794,7 +5992,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 4 call $~lib/env/abort @@ -5808,7 +6006,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 30 i32.const 4 call $~lib/env/abort @@ -5829,7 +6027,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 2 call $~lib/env/abort @@ -5847,7 +6045,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -5866,7 +6064,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 4 call $~lib/env/abort @@ -5880,7 +6078,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 40 i32.const 4 call $~lib/env/abort @@ -5901,7 +6099,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort @@ -5913,14 +6111,47 @@ i32.load offset=20 if i32.const 0 - i32.const 120 + i32.const 104 i32.const 46 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/map/Map#find (; 60 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/map/Map#constructor (; 68 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + call $~lib/runtime/ALLOCATE + local.tee $0 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $0 + i32.const 8 + i32.sub + i32.const 12 + i32.store + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/map/Map#find (; 69 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -5930,7 +6161,7 @@ i32.const 2 i32.shl i32.add - i32.load offset=8 + i32.load local.set $2 loop $continue|0 local.get $2 @@ -5963,17 +6194,17 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 61 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/map/Map#has (; 70 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) local.get $0 local.get $1 local.get $1 i64.reinterpret_f64 - call $~lib/internal/hash/hash64 + call $~lib/util/hash/hash64 call $~lib/map/Map#find i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 62 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 71 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5984,13 +6215,12 @@ local.get $1 i32.const 1 i32.add - local.tee $2 + local.tee $4 i32.const 2 i32.shl - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $2 + local.set $5 + local.get $4 f64.convert_i32_s f64.const 2.6666666666666665 f64.mul @@ -5998,13 +6228,10 @@ local.tee $6 i32.const 4 i32.shl - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + local.set $4 local.get $0 i32.load offset=8 - i32.const 8 - i32.add local.tee $2 local.get $0 i32.load offset=16 @@ -6012,9 +6239,7 @@ i32.shl i32.add local.set $7 - local.get $5 - i32.const 8 - i32.add + local.get $4 local.set $3 loop $continue|0 local.get $2 @@ -6039,19 +6264,19 @@ local.get $2 f64.load i64.reinterpret_f64 - call $~lib/internal/hash/hash64 + call $~lib/util/hash/hash64 local.get $1 i32.and i32.const 2 i32.shl - local.get $4 + local.get $5 i32.add local.tee $8 - i32.load offset=8 + i32.load i32.store offset=12 local.get $8 local.get $3 - i32.store offset=8 + i32.store local.get $3 i32.const 16 i32.add @@ -6065,13 +6290,13 @@ end end local.get $0 - local.get $4 + local.get $5 i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 - local.get $5 + local.get $4 i32.store offset=8 local.get $0 local.get $6 @@ -6081,7 +6306,7 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 63 ;) (type $FUNCSIG$vidi) (param $0 i32) (param $1 f64) (param $2 i32) + (func $~lib/map/Map#set (; 72 ;) (type $FUNCSIG$vidi) (param $0 i32) (param $1 f64) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6089,7 +6314,7 @@ local.get $1 local.get $1 i64.reinterpret_f64 - call $~lib/internal/hash/hash64 + call $~lib/util/hash/hash64 local.tee $5 call $~lib/map/Map#find local.tee $3 @@ -6137,12 +6362,10 @@ i32.const 1 i32.add i32.store offset=16 - local.get $3 - i32.const 8 - i32.add local.get $4 i32.const 4 i32.shl + local.get $3 i32.add local.tee $3 local.get $1 @@ -6167,19 +6390,19 @@ i32.shl i32.add local.tee $4 - i32.load offset=8 + i32.load i32.store offset=12 local.get $4 local.get $3 - i32.store offset=8 + i32.store end ) - (func $~lib/map/Map#get (; 64 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/map/Map#get (; 73 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) local.get $0 local.get $1 local.get $1 i64.reinterpret_f64 - call $~lib/internal/hash/hash64 + call $~lib/util/hash/hash64 call $~lib/map/Map#find local.tee $0 if (result i32) @@ -6189,14 +6412,14 @@ unreachable end ) - (func $~lib/map/Map#delete (; 65 ;) (type $FUNCSIG$vid) (param $0 i32) (param $1 f64) + (func $~lib/map/Map#delete (; 74 ;) (type $FUNCSIG$vid) (param $0 i32) (param $1 f64) (local $2 i32) (local $3 i32) local.get $0 local.get $1 local.get $1 i64.reinterpret_f64 - call $~lib/internal/hash/hash64 + call $~lib/util/hash/hash64 call $~lib/map/Map#find local.tee $2 i32.eqz @@ -6251,10 +6474,10 @@ call $~lib/map/Map#rehash end ) - (func $std/map/test (; 66 ;) (type $FUNCSIG$v) + (func $std/map/test (; 75 ;) (type $FUNCSIG$v) (local $0 f64) (local $1 i32) - call $~lib/map/Map#constructor + call $~lib/map/Map#constructor local.set $1 loop $repeat|0 local.get $0 @@ -6266,7 +6489,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -6285,7 +6508,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -6301,7 +6524,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 11 i32.const 4 call $~lib/env/abort @@ -6322,7 +6545,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 13 i32.const 2 call $~lib/env/abort @@ -6341,7 +6564,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 17 i32.const 4 call $~lib/env/abort @@ -6357,7 +6580,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -6376,7 +6599,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 4 call $~lib/env/abort @@ -6392,7 +6615,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 21 i32.const 4 call $~lib/env/abort @@ -6413,7 +6636,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 23 i32.const 2 call $~lib/env/abort @@ -6432,7 +6655,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 27 i32.const 4 call $~lib/env/abort @@ -6448,7 +6671,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 4 call $~lib/env/abort @@ -6462,7 +6685,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 30 i32.const 4 call $~lib/env/abort @@ -6483,7 +6706,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 2 call $~lib/env/abort @@ -6501,7 +6724,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -6520,7 +6743,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 4 call $~lib/env/abort @@ -6534,7 +6757,7 @@ call $~lib/map/Map#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 40 i32.const 4 call $~lib/env/abort @@ -6555,7 +6778,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort @@ -6567,15 +6790,15 @@ i32.load offset=20 if i32.const 0 - i32.const 120 + i32.const 104 i32.const 46 i32.const 2 call $~lib/env/abort unreachable end ) - (func $start (; 67 ;) (type $FUNCSIG$v) - i32.const 144 + (func $start (; 76 ;) (type $FUNCSIG$v) + i32.const 128 global.set $~lib/allocator/arena/startOffset global.get $~lib/allocator/arena/startOffset global.set $~lib/allocator/arena/offset @@ -6590,7 +6813,7 @@ call $std/map/test call $std/map/test ) - (func $null (; 68 ;) (type $FUNCSIG$v) + (func $null (; 77 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/map.untouched.wat b/tests/compiler/std/map.untouched.wat index b9cf6436..596e1c82 100644 --- a/tests/compiler/std/map.untouched.wat +++ b/tests/compiler/std/map.untouched.wat @@ -2,10 +2,10 @@ (type $FUNCSIG$v (func)) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$vi (func (param i32))) - (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$vii (func (param i32 i32))) (type $FUNCSIG$iij (func (param i32 i64) (result i32))) (type $FUNCSIG$ij (func (param i64) (result i32))) @@ -19,118 +19,26 @@ (type $FUNCSIG$vidi (func (param i32 f64 i32))) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\13\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 56) "\1c\00\00\00~\00l\00i\00b\00/\00i\00n\00t\00e\00r\00n\00a\00l\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 120) "\n\00\00\00s\00t\00d\00/\00m\00a\00p\00.\00t\00s\00") + (data (i32.const 8) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") + (data (i32.const 48) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") + (data (i32.const 96) "\01\00\00\00\14\00\00\00s\00t\00d\00/\00m\00a\00p\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) + (global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0)) + (global $~lib/runtime/HEADER_SIZE i32 (i32.const 8)) + (global $~lib/runtime/HEADER_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 144)) + (global $~lib/runtime/MAX_BYTELENGTH i32 (i32.const 1073741816)) + (global $~lib/memory/HEAP_BASE i32 (i32.const 124)) (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 - 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 - ) - (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 $~lib/internal/arraybuffer/computeSize (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/ADJUST (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 1 i32.const 32 local.get $0 - i32.const 8 + global.get $~lib/runtime/HEADER_SIZE i32.add i32.const 1 i32.sub @@ -138,333 +46,439 @@ i32.sub i32.shl ) - (func $~lib/internal/arraybuffer/allocateUnsafe (; 5 ;) (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.get $0 - i32.const 1073741816 - i32.le_u - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 26 - i32.const 2 - call $~lib/env/abort - unreachable - end - block $~lib/memory/memory.allocate|inlined.0 (result i32) - local.get $0 - call $~lib/internal/arraybuffer/computeSize - local.set $2 - local.get $2 - call $~lib/allocator/arena/__memory_allocate - br $~lib/memory/memory.allocate|inlined.0 - end - local.set $1 - local.get $1 - local.get $0 - i32.store - local.get $1 - ) - (func $~lib/internal/memory/memset (; 6 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - local.get $2 - i32.eqz - if - return - end - local.get $0 - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.add - i32.const 1 - i32.sub - local.get $1 - i32.store8 - local.get $2 - i32.const 2 - i32.le_u - if - return - end - local.get $0 - i32.const 1 - i32.add - local.get $1 - i32.store8 - local.get $0 - i32.const 2 - i32.add - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.add - i32.const 2 - i32.sub - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.add - i32.const 3 - i32.sub - local.get $1 - i32.store8 - local.get $2 - i32.const 6 - i32.le_u - if - return - end - local.get $0 - i32.const 3 - i32.add - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.add - i32.const 4 - i32.sub - local.get $1 - i32.store8 - local.get $2 - i32.const 8 - i32.le_u - if - return - end - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.set $3 - local.get $0 - local.get $3 - i32.add - local.set $0 - local.get $2 - local.get $3 - i32.sub - local.set $2 - local.get $2 - i32.const -4 - i32.and - local.set $2 - i32.const -1 - i32.const 255 - i32.div_u - local.get $1 - i32.const 255 - i32.and - i32.mul - local.set $4 - local.get $0 - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 4 - i32.sub - local.get $4 - i32.store - local.get $2 - i32.const 8 - i32.le_u - if - return - end - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 12 - i32.sub - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 8 - i32.sub - local.get $4 - i32.store - local.get $2 - i32.const 24 - i32.le_u - if - return - end - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.store - local.get $0 - i32.const 16 - i32.add - local.get $4 - i32.store - local.get $0 - i32.const 20 - i32.add - local.get $4 - i32.store - local.get $0 - i32.const 24 - i32.add - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 28 - i32.sub - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 24 - i32.sub - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 20 - i32.sub - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.get $4 - i32.store - i32.const 24 - local.get $0 - i32.const 4 - i32.and - i32.add - local.set $3 - local.get $0 - local.get $3 - i32.add - local.set $0 - local.get $2 - local.get $3 - i32.sub - local.set $2 - local.get $4 - i64.extend_i32_u - local.get $4 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $5 - block $break|0 - loop $continue|0 - local.get $2 - i32.const 32 - i32.ge_u - if - block - local.get $0 - local.get $5 - i64.store - local.get $0 - i32.const 8 - i32.add - local.get $5 - i64.store - local.get $0 - i32.const 16 - i32.add - local.get $5 - i64.store - local.get $0 - i32.const 24 - i32.add - local.get $5 - i64.store - local.get $2 - i32.const 32 - i32.sub - local.set $2 - local.get $0 - i32.const 32 - i32.add - local.set $0 - end - br $continue|0 - end - end - end - ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 7 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) + 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 (; 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 - i32.const 1073741816 + 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/runtime/ASSERT_UNREGISTERED (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + global.get $~lib/memory/HEAP_BASE + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 16 + i32.const 172 + i32.const 2 + call $~lib/env/abort + unreachable + end + local.get $0 + global.get $~lib/runtime/HEADER_SIZE + i32.sub + i32.load + global.get $~lib/runtime/HEADER_MAGIC + i32.eq + i32.eqz + if + i32.const 0 + i32.const 16 + i32.const 173 + i32.const 2 + call $~lib/env/abort + unreachable + end + ) + (func $~lib/memory/memory.fill (; 5 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + block $~lib/util/memory/memset|inlined.0 + local.get $0 + local.set $3 + local.get $1 + local.set $4 + local.get $2 + local.set $5 + local.get $5 + i32.eqz + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $3 + local.get $4 + i32.store8 + local.get $3 + local.get $5 + i32.add + i32.const 1 + i32.sub + local.get $4 + i32.store8 + local.get $5 + i32.const 2 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $3 + i32.const 1 + i32.add + local.get $4 + i32.store8 + local.get $3 + i32.const 2 + i32.add + local.get $4 + i32.store8 + local.get $3 + local.get $5 + i32.add + i32.const 2 + i32.sub + local.get $4 + i32.store8 + local.get $3 + local.get $5 + i32.add + i32.const 3 + i32.sub + local.get $4 + i32.store8 + local.get $5 + i32.const 6 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $3 + i32.const 3 + i32.add + local.get $4 + i32.store8 + local.get $3 + local.get $5 + i32.add + i32.const 4 + i32.sub + local.get $4 + i32.store8 + local.get $5 + i32.const 8 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + i32.const 0 + local.get $3 + i32.sub + i32.const 3 + i32.and + local.set $6 + local.get $3 + local.get $6 + i32.add + local.set $3 + local.get $5 + local.get $6 + i32.sub + local.set $5 + local.get $5 + i32.const -4 + i32.and + local.set $5 + i32.const -1 + i32.const 255 + i32.div_u + local.get $4 + i32.const 255 + i32.and + i32.mul + local.set $7 + local.get $3 + local.get $7 + i32.store + local.get $3 + local.get $5 + i32.add + i32.const 4 + i32.sub + local.get $7 + i32.store + local.get $5 + i32.const 8 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $3 + i32.const 4 + i32.add + local.get $7 + i32.store + local.get $3 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $3 + local.get $5 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $3 + local.get $5 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store + local.get $5 + i32.const 24 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $3 + i32.const 12 + i32.add + local.get $7 + i32.store + local.get $3 + i32.const 16 + i32.add + local.get $7 + i32.store + local.get $3 + i32.const 20 + i32.add + local.get $7 + i32.store + local.get $3 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $3 + local.get $5 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $3 + local.get $5 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $3 + local.get $5 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $3 + local.get $5 + i32.add + i32.const 16 + i32.sub + local.get $7 + i32.store + i32.const 24 + local.get $3 + i32.const 4 + i32.and + i32.add + local.set $6 + local.get $3 + local.get $6 + i32.add + local.set $3 + local.get $5 + local.get $6 + i32.sub + local.set $5 + local.get $7 + i64.extend_i32_u + local.get $7 + i64.extend_i32_u + i64.const 32 + i64.shl + i64.or + local.set $8 + block $break|0 + loop $continue|0 + local.get $5 + i32.const 32 + i32.ge_u + if + block + local.get $3 + local.get $8 + i64.store + local.get $3 + i32.const 8 + i32.add + local.get $8 + i64.store + local.get $3 + i32.const 16 + i32.add + local.get $8 + i64.store + local.get $3 + i32.const 24 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 32 + i32.sub + local.set $5 + local.get $3 + i32.const 32 + i32.add + local.set $3 + end + br $continue|0 + end + end + end + end + ) + (func $~lib/arraybuffer/ArrayBuffer#constructor (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + global.get $~lib/runtime/MAX_BYTELENGTH i32.gt_u if i32.const 0 - i32.const 8 - i32.const 47 - i32.const 40 + i32.const 56 + i32.const 24 + i32.const 43 call $~lib/env/abort unreachable end local.get $1 - call $~lib/internal/arraybuffer/allocateUnsafe - local.set $3 + call $~lib/runtime/ALLOCATE + local.set $2 local.get $2 i32.const 0 - i32.ne - i32.eqz - if + local.get $1 + call $~lib/memory/memory.fill + block $~lib/runtime/REGISTER|inlined.0 (result i32) + local.get $2 + local.set $3 + local.get $3 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $3 + global.get $~lib/runtime/HEADER_SIZE + i32.sub + i32.const 3 + i32.store local.get $3 - i32.const 8 - i32.add - local.set $4 - i32.const 0 - local.set $5 - local.get $1 - local.set $6 - local.get $4 - local.get $5 - local.get $6 - call $~lib/internal/memory/memset end - local.get $3 ) - (func $~lib/map/Map#clear (; 8 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 7 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 0 i32.const 16 - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store local.get $0 @@ -475,7 +489,6 @@ local.get $0 i32.const 0 i32.const 48 - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store offset=8 local.get $0 @@ -488,13 +501,25 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) block (result i32) local.get $0 i32.eqz if - i32.const 24 - call $~lib/memory/memory.allocate + block $~lib/runtime/REGISTER>|inlined.0 (result i32) + i32.const 24 + call $~lib/runtime/ALLOCATE + local.set $1 + local.get $1 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $1 + global.get $~lib/runtime/HEADER_SIZE + i32.sub + i32.const 2 + i32.store + local.get $1 + end local.set $0 end local.get $0 @@ -520,14 +545,14 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/internal/hash/hash8 (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hash8 (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const -2128831035 local.get $0 i32.xor i32.const 16777619 i32.mul ) - (func $~lib/map/Map#find (; 11 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 10 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -539,7 +564,7 @@ i32.const 4 i32.mul i32.add - i32.load offset=8 + i32.load local.set $3 block $break|0 loop $continue|0 @@ -582,11 +607,11 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.0 (result i32) + block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 local.get $2 @@ -594,14 +619,14 @@ i32.shl i32.const 24 i32.shr_s - call $~lib/internal/hash/hash8 - br $~lib/internal/hash/HASH|inlined.0 + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.0 end call $~lib/map/Map#find i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 13 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 12 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -621,7 +646,6 @@ local.get $2 i32.const 4 i32.mul - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $3 local.get $2 @@ -636,13 +660,10 @@ i32.const 12 end i32.mul - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 local.get $0 i32.load offset=8 - i32.const 8 - i32.add local.set $6 local.get $6 local.get $0 @@ -654,8 +675,6 @@ i32.add local.set $7 local.get $5 - i32.const 8 - i32.add local.set $8 block $break|0 loop $continue|0 @@ -682,13 +701,13 @@ local.get $9 i32.load offset=4 i32.store offset=4 - block $~lib/internal/hash/HASH|inlined.2 (result i32) + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $9 i32.load8_s local.set $11 local.get $11 - call $~lib/internal/hash/hash8 - br $~lib/internal/hash/HASH|inlined.2 + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and @@ -701,11 +720,11 @@ local.set $12 local.get $10 local.get $12 - i32.load offset=8 + i32.load i32.store offset=8 local.get $12 local.get $8 - i32.store offset=8 + i32.store local.get $8 block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) i32.const 12 @@ -741,12 +760,12 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 14 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 13 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - block $~lib/internal/hash/HASH|inlined.1 (result i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $3 local.get $3 @@ -754,8 +773,8 @@ i32.shl i32.const 24 i32.shr_s - call $~lib/internal/hash/hash8 - br $~lib/internal/hash/HASH|inlined.1 + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.1 end local.set $4 local.get $0 @@ -802,8 +821,6 @@ i32.load offset=8 local.set $3 local.get $3 - i32.const 8 - i32.add block (result i32) local.get $0 local.get $0 @@ -844,19 +861,19 @@ local.set $6 local.get $5 local.get $6 - i32.load offset=8 + i32.load i32.store offset=8 local.get $6 local.get $5 - i32.store offset=8 + i32.store end ) - (func $~lib/map/Map#get (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.3 (result i32) + block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 local.get $2 @@ -864,8 +881,8 @@ i32.shl i32.const 24 i32.shr_s - call $~lib/internal/hash/hash8 - br $~lib/internal/hash/HASH|inlined.3 + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.3 end call $~lib/map/Map#find local.set $3 @@ -877,18 +894,18 @@ unreachable end ) - (func $~lib/map/Map#get:size (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#delete (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.4 (result i32) + block $~lib/util/hash/HASH|inlined.4 (result i32) local.get $1 local.set $2 local.get $2 @@ -896,8 +913,8 @@ i32.shl i32.const 24 i32.shr_s - call $~lib/internal/hash/hash8 - br $~lib/internal/hash/HASH|inlined.4 + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.4 end call $~lib/map/Map#find local.set $3 @@ -958,7 +975,7 @@ end i32.const 1 ) - (func $std/map/test (; 18 ;) (type $FUNCSIG$v) + (func $std/map/test (; 17 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -981,7 +998,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -1003,7 +1020,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -1023,7 +1040,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 11 i32.const 4 call $~lib/env/abort @@ -1046,7 +1063,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 13 i32.const 2 call $~lib/env/abort @@ -1068,7 +1085,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 17 i32.const 4 call $~lib/env/abort @@ -1088,7 +1105,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -1110,7 +1127,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 4 call $~lib/env/abort @@ -1130,7 +1147,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 21 i32.const 4 call $~lib/env/abort @@ -1153,7 +1170,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 23 i32.const 2 call $~lib/env/abort @@ -1175,7 +1192,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 27 i32.const 4 call $~lib/env/abort @@ -1195,7 +1212,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 4 call $~lib/env/abort @@ -1212,7 +1229,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 30 i32.const 4 call $~lib/env/abort @@ -1235,7 +1252,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 2 call $~lib/env/abort @@ -1258,7 +1275,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -1280,7 +1297,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 4 call $~lib/env/abort @@ -1297,7 +1314,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 40 i32.const 4 call $~lib/env/abort @@ -1320,7 +1337,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort @@ -1335,18 +1352,17 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 46 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/map/Map#clear (; 19 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 18 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 0 i32.const 16 - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store local.get $0 @@ -1357,7 +1373,6 @@ local.get $0 i32.const 0 i32.const 48 - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store offset=8 local.get $0 @@ -1370,13 +1385,25 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) block (result i32) local.get $0 i32.eqz if - i32.const 24 - call $~lib/memory/memory.allocate + block $~lib/runtime/REGISTER>|inlined.0 (result i32) + i32.const 24 + call $~lib/runtime/ALLOCATE + local.set $1 + local.get $1 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $1 + global.get $~lib/runtime/HEADER_SIZE + i32.sub + i32.const 4 + i32.store + local.get $1 + end local.set $0 end local.get $0 @@ -1402,7 +1429,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 21 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 20 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -1414,7 +1441,7 @@ i32.const 4 i32.mul i32.add - i32.load offset=8 + i32.load local.set $3 block $break|0 loop $continue|0 @@ -1455,24 +1482,24 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.0 (result i32) + block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 local.get $2 i32.const 255 i32.and - call $~lib/internal/hash/hash8 - br $~lib/internal/hash/HASH|inlined.0 + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.0 end call $~lib/map/Map#find i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 23 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 22 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1492,7 +1519,6 @@ local.get $2 i32.const 4 i32.mul - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $3 local.get $2 @@ -1507,13 +1533,10 @@ i32.const 12 end i32.mul - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 local.get $0 i32.load offset=8 - i32.const 8 - i32.add local.set $6 local.get $6 local.get $0 @@ -1525,8 +1548,6 @@ i32.add local.set $7 local.get $5 - i32.const 8 - i32.add local.set $8 block $break|0 loop $continue|0 @@ -1553,13 +1574,13 @@ local.get $9 i32.load offset=4 i32.store offset=4 - block $~lib/internal/hash/HASH|inlined.2 (result i32) + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $9 i32.load8_u local.set $11 local.get $11 - call $~lib/internal/hash/hash8 - br $~lib/internal/hash/HASH|inlined.2 + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and @@ -1572,11 +1593,11 @@ local.set $12 local.get $10 local.get $12 - i32.load offset=8 + i32.load i32.store offset=8 local.get $12 local.get $8 - i32.store offset=8 + i32.store local.get $8 block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) i32.const 12 @@ -1612,19 +1633,19 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 24 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 23 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - block $~lib/internal/hash/HASH|inlined.1 (result i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $3 local.get $3 i32.const 255 i32.and - call $~lib/internal/hash/hash8 - br $~lib/internal/hash/HASH|inlined.1 + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.1 end local.set $4 local.get $0 @@ -1671,8 +1692,6 @@ i32.load offset=8 local.set $3 local.get $3 - i32.const 8 - i32.add block (result i32) local.get $0 local.get $0 @@ -1713,26 +1732,26 @@ local.set $6 local.get $5 local.get $6 - i32.load offset=8 + i32.load i32.store offset=8 local.get $6 local.get $5 - i32.store offset=8 + i32.store end ) - (func $~lib/map/Map#get (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.3 (result i32) + block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 local.get $2 i32.const 255 i32.and - call $~lib/internal/hash/hash8 - br $~lib/internal/hash/HASH|inlined.3 + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.3 end call $~lib/map/Map#find local.set $3 @@ -1744,25 +1763,25 @@ unreachable end ) - (func $~lib/map/Map#get:size (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 25 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#delete (; 26 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.4 (result i32) + block $~lib/util/hash/HASH|inlined.4 (result i32) local.get $1 local.set $2 local.get $2 i32.const 255 i32.and - call $~lib/internal/hash/hash8 - br $~lib/internal/hash/HASH|inlined.4 + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.4 end call $~lib/map/Map#find local.set $3 @@ -1823,7 +1842,7 @@ end i32.const 1 ) - (func $std/map/test (; 28 ;) (type $FUNCSIG$v) + (func $std/map/test (; 27 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -1846,7 +1865,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -1866,7 +1885,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -1884,7 +1903,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 11 i32.const 4 call $~lib/env/abort @@ -1907,7 +1926,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 13 i32.const 2 call $~lib/env/abort @@ -1929,7 +1948,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 17 i32.const 4 call $~lib/env/abort @@ -1947,7 +1966,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -1967,7 +1986,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 4 call $~lib/env/abort @@ -1985,7 +2004,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 21 i32.const 4 call $~lib/env/abort @@ -2008,7 +2027,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 23 i32.const 2 call $~lib/env/abort @@ -2030,7 +2049,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 27 i32.const 4 call $~lib/env/abort @@ -2048,7 +2067,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 4 call $~lib/env/abort @@ -2065,7 +2084,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 30 i32.const 4 call $~lib/env/abort @@ -2088,7 +2107,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 2 call $~lib/env/abort @@ -2111,7 +2130,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -2131,7 +2150,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 4 call $~lib/env/abort @@ -2148,7 +2167,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 40 i32.const 4 call $~lib/env/abort @@ -2171,7 +2190,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort @@ -2186,18 +2205,17 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 46 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/map/Map#clear (; 29 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 28 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 0 i32.const 16 - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store local.get $0 @@ -2208,7 +2226,6 @@ local.get $0 i32.const 0 i32.const 48 - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store offset=8 local.get $0 @@ -2221,13 +2238,25 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 30 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 29 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) block (result i32) local.get $0 i32.eqz if - i32.const 24 - call $~lib/memory/memory.allocate + block $~lib/runtime/REGISTER>|inlined.0 (result i32) + i32.const 24 + call $~lib/runtime/ALLOCATE + local.set $1 + local.get $1 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $1 + global.get $~lib/runtime/HEADER_SIZE + i32.sub + i32.const 5 + i32.store + local.get $1 + end local.set $0 end local.get $0 @@ -2253,7 +2282,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/internal/hash/hash16 (; 31 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hash16 (; 30 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) i32.const -2128831035 local.set $1 @@ -2275,7 +2304,7 @@ local.set $1 local.get $1 ) - (func $~lib/map/Map#find (; 32 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 31 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -2287,7 +2316,7 @@ i32.const 4 i32.mul i32.add - i32.load offset=8 + i32.load local.set $3 block $break|0 loop $continue|0 @@ -2330,11 +2359,11 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.0 (result i32) + block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 local.get $2 @@ -2342,14 +2371,14 @@ i32.shl i32.const 16 i32.shr_s - call $~lib/internal/hash/hash16 - br $~lib/internal/hash/HASH|inlined.0 + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.0 end call $~lib/map/Map#find i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 34 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 33 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2369,7 +2398,6 @@ local.get $2 i32.const 4 i32.mul - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $3 local.get $2 @@ -2384,13 +2412,10 @@ i32.const 12 end i32.mul - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 local.get $0 i32.load offset=8 - i32.const 8 - i32.add local.set $6 local.get $6 local.get $0 @@ -2402,8 +2427,6 @@ i32.add local.set $7 local.get $5 - i32.const 8 - i32.add local.set $8 block $break|0 loop $continue|0 @@ -2430,13 +2453,13 @@ local.get $9 i32.load offset=4 i32.store offset=4 - block $~lib/internal/hash/HASH|inlined.2 (result i32) + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $9 i32.load16_s local.set $11 local.get $11 - call $~lib/internal/hash/hash16 - br $~lib/internal/hash/HASH|inlined.2 + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and @@ -2449,11 +2472,11 @@ local.set $12 local.get $10 local.get $12 - i32.load offset=8 + i32.load i32.store offset=8 local.get $12 local.get $8 - i32.store offset=8 + i32.store local.get $8 block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) i32.const 12 @@ -2489,12 +2512,12 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 35 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 34 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - block $~lib/internal/hash/HASH|inlined.1 (result i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $3 local.get $3 @@ -2502,8 +2525,8 @@ i32.shl i32.const 16 i32.shr_s - call $~lib/internal/hash/hash16 - br $~lib/internal/hash/HASH|inlined.1 + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.1 end local.set $4 local.get $0 @@ -2550,8 +2573,6 @@ i32.load offset=8 local.set $3 local.get $3 - i32.const 8 - i32.add block (result i32) local.get $0 local.get $0 @@ -2592,19 +2613,19 @@ local.set $6 local.get $5 local.get $6 - i32.load offset=8 + i32.load i32.store offset=8 local.get $6 local.get $5 - i32.store offset=8 + i32.store end ) - (func $~lib/map/Map#get (; 36 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 35 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.3 (result i32) + block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 local.get $2 @@ -2612,8 +2633,8 @@ i32.shl i32.const 16 i32.shr_s - call $~lib/internal/hash/hash16 - br $~lib/internal/hash/HASH|inlined.3 + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.3 end call $~lib/map/Map#find local.set $3 @@ -2625,18 +2646,18 @@ unreachable end ) - (func $~lib/map/Map#get:size (; 37 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 36 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#delete (; 37 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.4 (result i32) + block $~lib/util/hash/HASH|inlined.4 (result i32) local.get $1 local.set $2 local.get $2 @@ -2644,8 +2665,8 @@ i32.shl i32.const 16 i32.shr_s - call $~lib/internal/hash/hash16 - br $~lib/internal/hash/HASH|inlined.4 + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.4 end call $~lib/map/Map#find local.set $3 @@ -2706,7 +2727,7 @@ end i32.const 1 ) - (func $std/map/test (; 39 ;) (type $FUNCSIG$v) + (func $std/map/test (; 38 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -2729,7 +2750,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -2751,7 +2772,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -2771,7 +2792,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 11 i32.const 4 call $~lib/env/abort @@ -2794,7 +2815,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 13 i32.const 2 call $~lib/env/abort @@ -2816,7 +2837,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 17 i32.const 4 call $~lib/env/abort @@ -2836,7 +2857,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -2858,7 +2879,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 4 call $~lib/env/abort @@ -2878,7 +2899,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 21 i32.const 4 call $~lib/env/abort @@ -2901,7 +2922,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 23 i32.const 2 call $~lib/env/abort @@ -2923,7 +2944,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 27 i32.const 4 call $~lib/env/abort @@ -2943,7 +2964,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 4 call $~lib/env/abort @@ -2960,7 +2981,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 30 i32.const 4 call $~lib/env/abort @@ -2983,7 +3004,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 2 call $~lib/env/abort @@ -3006,7 +3027,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -3028,7 +3049,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 4 call $~lib/env/abort @@ -3045,7 +3066,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 40 i32.const 4 call $~lib/env/abort @@ -3068,7 +3089,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort @@ -3083,18 +3104,17 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 46 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/map/Map#clear (; 40 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 39 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 0 i32.const 16 - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store local.get $0 @@ -3105,7 +3125,6 @@ local.get $0 i32.const 0 i32.const 48 - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store offset=8 local.get $0 @@ -3118,13 +3137,25 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 41 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 40 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) block (result i32) local.get $0 i32.eqz if - i32.const 24 - call $~lib/memory/memory.allocate + block $~lib/runtime/REGISTER>|inlined.0 (result i32) + i32.const 24 + call $~lib/runtime/ALLOCATE + local.set $1 + local.get $1 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $1 + global.get $~lib/runtime/HEADER_SIZE + i32.sub + i32.const 6 + i32.store + local.get $1 + end local.set $0 end local.get $0 @@ -3150,7 +3181,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 42 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 41 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -3162,7 +3193,7 @@ i32.const 4 i32.mul i32.add - i32.load offset=8 + i32.load local.set $3 block $break|0 loop $continue|0 @@ -3203,24 +3234,24 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 43 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 42 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.0 (result i32) + block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 local.get $2 i32.const 65535 i32.and - call $~lib/internal/hash/hash16 - br $~lib/internal/hash/HASH|inlined.0 + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.0 end call $~lib/map/Map#find i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 44 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 43 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3240,7 +3271,6 @@ local.get $2 i32.const 4 i32.mul - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $3 local.get $2 @@ -3255,13 +3285,10 @@ i32.const 12 end i32.mul - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 local.get $0 i32.load offset=8 - i32.const 8 - i32.add local.set $6 local.get $6 local.get $0 @@ -3273,8 +3300,6 @@ i32.add local.set $7 local.get $5 - i32.const 8 - i32.add local.set $8 block $break|0 loop $continue|0 @@ -3301,13 +3326,13 @@ local.get $9 i32.load offset=4 i32.store offset=4 - block $~lib/internal/hash/HASH|inlined.2 (result i32) + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $9 i32.load16_u local.set $11 local.get $11 - call $~lib/internal/hash/hash16 - br $~lib/internal/hash/HASH|inlined.2 + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and @@ -3320,11 +3345,11 @@ local.set $12 local.get $10 local.get $12 - i32.load offset=8 + i32.load i32.store offset=8 local.get $12 local.get $8 - i32.store offset=8 + i32.store local.get $8 block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) i32.const 12 @@ -3360,19 +3385,19 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 45 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 44 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - block $~lib/internal/hash/HASH|inlined.1 (result i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $3 local.get $3 i32.const 65535 i32.and - call $~lib/internal/hash/hash16 - br $~lib/internal/hash/HASH|inlined.1 + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.1 end local.set $4 local.get $0 @@ -3419,8 +3444,6 @@ i32.load offset=8 local.set $3 local.get $3 - i32.const 8 - i32.add block (result i32) local.get $0 local.get $0 @@ -3461,26 +3484,26 @@ local.set $6 local.get $5 local.get $6 - i32.load offset=8 + i32.load i32.store offset=8 local.get $6 local.get $5 - i32.store offset=8 + i32.store end ) - (func $~lib/map/Map#get (; 46 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 45 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.3 (result i32) + block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 local.get $2 i32.const 65535 i32.and - call $~lib/internal/hash/hash16 - br $~lib/internal/hash/HASH|inlined.3 + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.3 end call $~lib/map/Map#find local.set $3 @@ -3492,25 +3515,25 @@ unreachable end ) - (func $~lib/map/Map#get:size (; 47 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 46 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 48 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#delete (; 47 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.4 (result i32) + block $~lib/util/hash/HASH|inlined.4 (result i32) local.get $1 local.set $2 local.get $2 i32.const 65535 i32.and - call $~lib/internal/hash/hash16 - br $~lib/internal/hash/HASH|inlined.4 + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.4 end call $~lib/map/Map#find local.set $3 @@ -3571,7 +3594,7 @@ end i32.const 1 ) - (func $std/map/test (; 49 ;) (type $FUNCSIG$v) + (func $std/map/test (; 48 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -3594,7 +3617,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -3614,7 +3637,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -3632,7 +3655,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 11 i32.const 4 call $~lib/env/abort @@ -3655,7 +3678,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 13 i32.const 2 call $~lib/env/abort @@ -3677,7 +3700,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 17 i32.const 4 call $~lib/env/abort @@ -3695,7 +3718,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -3715,7 +3738,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 4 call $~lib/env/abort @@ -3733,7 +3756,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 21 i32.const 4 call $~lib/env/abort @@ -3756,7 +3779,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 23 i32.const 2 call $~lib/env/abort @@ -3778,7 +3801,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 27 i32.const 4 call $~lib/env/abort @@ -3796,7 +3819,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 4 call $~lib/env/abort @@ -3813,7 +3836,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 30 i32.const 4 call $~lib/env/abort @@ -3836,7 +3859,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 2 call $~lib/env/abort @@ -3859,7 +3882,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -3879,7 +3902,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 4 call $~lib/env/abort @@ -3896,7 +3919,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 40 i32.const 4 call $~lib/env/abort @@ -3919,7 +3942,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort @@ -3934,18 +3957,17 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 46 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/map/Map#clear (; 50 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 49 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 0 i32.const 16 - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store local.get $0 @@ -3956,7 +3978,6 @@ local.get $0 i32.const 0 i32.const 48 - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store offset=8 local.get $0 @@ -3969,13 +3990,25 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 51 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 50 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) block (result i32) local.get $0 i32.eqz if - i32.const 24 - call $~lib/memory/memory.allocate + block $~lib/runtime/REGISTER>|inlined.0 (result i32) + i32.const 24 + call $~lib/runtime/ALLOCATE + local.set $1 + local.get $1 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $1 + global.get $~lib/runtime/HEADER_SIZE + i32.sub + i32.const 7 + i32.store + local.get $1 + end local.set $0 end local.get $0 @@ -4001,7 +4034,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/internal/hash/hash32 (; 52 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hash32 (; 51 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) i32.const -2128831035 local.set $1 @@ -4043,7 +4076,7 @@ local.set $1 local.get $1 ) - (func $~lib/map/Map#find (; 53 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 52 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -4055,7 +4088,7 @@ i32.const 4 i32.mul i32.add - i32.load offset=8 + i32.load local.set $3 block $break|0 loop $continue|0 @@ -4094,22 +4127,22 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 54 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 53 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.0 (result i32) + block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 local.get $2 - call $~lib/internal/hash/hash32 - br $~lib/internal/hash/HASH|inlined.0 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.0 end call $~lib/map/Map#find i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 55 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 54 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4129,7 +4162,6 @@ local.get $2 i32.const 4 i32.mul - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $3 local.get $2 @@ -4144,13 +4176,10 @@ i32.const 12 end i32.mul - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 local.get $0 i32.load offset=8 - i32.const 8 - i32.add local.set $6 local.get $6 local.get $0 @@ -4162,8 +4191,6 @@ i32.add local.set $7 local.get $5 - i32.const 8 - i32.add local.set $8 block $break|0 loop $continue|0 @@ -4190,13 +4217,13 @@ local.get $9 i32.load offset=4 i32.store offset=4 - block $~lib/internal/hash/HASH|inlined.2 (result i32) + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $9 i32.load local.set $11 local.get $11 - call $~lib/internal/hash/hash32 - br $~lib/internal/hash/HASH|inlined.2 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and @@ -4209,11 +4236,11 @@ local.set $12 local.get $10 local.get $12 - i32.load offset=8 + i32.load i32.store offset=8 local.get $12 local.get $8 - i32.store offset=8 + i32.store local.get $8 block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) i32.const 12 @@ -4249,17 +4276,17 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 56 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 55 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - block $~lib/internal/hash/HASH|inlined.1 (result i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $3 local.get $3 - call $~lib/internal/hash/hash32 - br $~lib/internal/hash/HASH|inlined.1 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.1 end local.set $4 local.get $0 @@ -4306,8 +4333,6 @@ i32.load offset=8 local.set $3 local.get $3 - i32.const 8 - i32.add block (result i32) local.get $0 local.get $0 @@ -4348,24 +4373,24 @@ local.set $6 local.get $5 local.get $6 - i32.load offset=8 + i32.load i32.store offset=8 local.get $6 local.get $5 - i32.store offset=8 + i32.store end ) - (func $~lib/map/Map#get (; 57 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 56 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.3 (result i32) + block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 local.get $2 - call $~lib/internal/hash/hash32 - br $~lib/internal/hash/HASH|inlined.3 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.3 end call $~lib/map/Map#find local.set $3 @@ -4377,23 +4402,23 @@ unreachable end ) - (func $~lib/map/Map#get:size (; 58 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 57 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 59 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#delete (; 58 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.4 (result i32) + block $~lib/util/hash/HASH|inlined.4 (result i32) local.get $1 local.set $2 local.get $2 - call $~lib/internal/hash/hash32 - br $~lib/internal/hash/HASH|inlined.4 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.4 end call $~lib/map/Map#find local.set $3 @@ -4454,7 +4479,7 @@ end i32.const 1 ) - (func $std/map/test (; 60 ;) (type $FUNCSIG$v) + (func $std/map/test (; 59 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -4477,7 +4502,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -4495,7 +4520,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -4511,7 +4536,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 11 i32.const 4 call $~lib/env/abort @@ -4534,7 +4559,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 13 i32.const 2 call $~lib/env/abort @@ -4556,7 +4581,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 17 i32.const 4 call $~lib/env/abort @@ -4572,7 +4597,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -4590,7 +4615,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 4 call $~lib/env/abort @@ -4606,7 +4631,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 21 i32.const 4 call $~lib/env/abort @@ -4629,7 +4654,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 23 i32.const 2 call $~lib/env/abort @@ -4651,7 +4676,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 27 i32.const 4 call $~lib/env/abort @@ -4667,7 +4692,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 4 call $~lib/env/abort @@ -4684,7 +4709,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 30 i32.const 4 call $~lib/env/abort @@ -4707,7 +4732,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 2 call $~lib/env/abort @@ -4730,7 +4755,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -4748,7 +4773,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 4 call $~lib/env/abort @@ -4765,7 +4790,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 40 i32.const 4 call $~lib/env/abort @@ -4788,7 +4813,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort @@ -4803,18 +4828,17 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 46 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/map/Map#clear (; 61 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 60 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 0 i32.const 16 - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store local.get $0 @@ -4825,7 +4849,6 @@ local.get $0 i32.const 0 i32.const 48 - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store offset=8 local.get $0 @@ -4838,13 +4861,25 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 62 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 61 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) block (result i32) local.get $0 i32.eqz if - i32.const 24 - call $~lib/memory/memory.allocate + block $~lib/runtime/REGISTER>|inlined.0 (result i32) + i32.const 24 + call $~lib/runtime/ALLOCATE + local.set $1 + local.get $1 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $1 + global.get $~lib/runtime/HEADER_SIZE + i32.sub + i32.const 8 + i32.store + local.get $1 + end local.set $0 end local.get $0 @@ -4870,7 +4905,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 63 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 62 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -4882,7 +4917,7 @@ i32.const 4 i32.mul i32.add - i32.load offset=8 + i32.load local.set $3 block $break|0 loop $continue|0 @@ -4921,22 +4956,22 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 64 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 63 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.0 (result i32) + block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 local.get $2 - call $~lib/internal/hash/hash32 - br $~lib/internal/hash/HASH|inlined.0 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.0 end call $~lib/map/Map#find i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 65 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 64 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4956,7 +4991,6 @@ local.get $2 i32.const 4 i32.mul - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $3 local.get $2 @@ -4971,13 +5005,10 @@ i32.const 12 end i32.mul - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 local.get $0 i32.load offset=8 - i32.const 8 - i32.add local.set $6 local.get $6 local.get $0 @@ -4989,8 +5020,6 @@ i32.add local.set $7 local.get $5 - i32.const 8 - i32.add local.set $8 block $break|0 loop $continue|0 @@ -5017,13 +5046,13 @@ local.get $9 i32.load offset=4 i32.store offset=4 - block $~lib/internal/hash/HASH|inlined.2 (result i32) + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $9 i32.load local.set $11 local.get $11 - call $~lib/internal/hash/hash32 - br $~lib/internal/hash/HASH|inlined.2 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and @@ -5036,11 +5065,11 @@ local.set $12 local.get $10 local.get $12 - i32.load offset=8 + i32.load i32.store offset=8 local.get $12 local.get $8 - i32.store offset=8 + i32.store local.get $8 block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) i32.const 12 @@ -5076,17 +5105,17 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 66 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 65 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - block $~lib/internal/hash/HASH|inlined.1 (result i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $3 local.get $3 - call $~lib/internal/hash/hash32 - br $~lib/internal/hash/HASH|inlined.1 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.1 end local.set $4 local.get $0 @@ -5133,8 +5162,6 @@ i32.load offset=8 local.set $3 local.get $3 - i32.const 8 - i32.add block (result i32) local.get $0 local.get $0 @@ -5175,24 +5202,24 @@ local.set $6 local.get $5 local.get $6 - i32.load offset=8 + i32.load i32.store offset=8 local.get $6 local.get $5 - i32.store offset=8 + i32.store end ) - (func $~lib/map/Map#get (; 67 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 66 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.3 (result i32) + block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 local.get $2 - call $~lib/internal/hash/hash32 - br $~lib/internal/hash/HASH|inlined.3 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.3 end call $~lib/map/Map#find local.set $3 @@ -5204,23 +5231,23 @@ unreachable end ) - (func $~lib/map/Map#get:size (; 68 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 67 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 69 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#delete (; 68 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.4 (result i32) + block $~lib/util/hash/HASH|inlined.4 (result i32) local.get $1 local.set $2 local.get $2 - call $~lib/internal/hash/hash32 - br $~lib/internal/hash/HASH|inlined.4 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.4 end call $~lib/map/Map#find local.set $3 @@ -5281,7 +5308,7 @@ end i32.const 1 ) - (func $std/map/test (; 70 ;) (type $FUNCSIG$v) + (func $std/map/test (; 69 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -5304,7 +5331,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -5322,7 +5349,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -5338,7 +5365,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 11 i32.const 4 call $~lib/env/abort @@ -5361,7 +5388,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 13 i32.const 2 call $~lib/env/abort @@ -5383,7 +5410,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 17 i32.const 4 call $~lib/env/abort @@ -5399,7 +5426,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -5417,7 +5444,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 4 call $~lib/env/abort @@ -5433,7 +5460,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 21 i32.const 4 call $~lib/env/abort @@ -5456,7 +5483,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 23 i32.const 2 call $~lib/env/abort @@ -5478,7 +5505,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 27 i32.const 4 call $~lib/env/abort @@ -5494,7 +5521,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 4 call $~lib/env/abort @@ -5511,7 +5538,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 30 i32.const 4 call $~lib/env/abort @@ -5534,7 +5561,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 2 call $~lib/env/abort @@ -5557,7 +5584,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -5575,7 +5602,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 4 call $~lib/env/abort @@ -5592,7 +5619,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 40 i32.const 4 call $~lib/env/abort @@ -5615,7 +5642,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort @@ -5630,18 +5657,17 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 46 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/map/Map#clear (; 71 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 70 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 0 i32.const 16 - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store local.get $0 @@ -5652,7 +5678,6 @@ local.get $0 i32.const 0 i32.const 64 - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store offset=8 local.get $0 @@ -5665,13 +5690,25 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 72 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 71 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) block (result i32) local.get $0 i32.eqz if - i32.const 24 - call $~lib/memory/memory.allocate + block $~lib/runtime/REGISTER>|inlined.0 (result i32) + i32.const 24 + call $~lib/runtime/ALLOCATE + local.set $1 + local.get $1 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $1 + global.get $~lib/runtime/HEADER_SIZE + i32.sub + i32.const 9 + i32.store + local.get $1 + end local.set $0 end local.get $0 @@ -5697,7 +5734,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/internal/hash/hash64 (; 73 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/hash/hash64 (; 72 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5785,7 +5822,7 @@ local.set $3 local.get $3 ) - (func $~lib/map/Map#find (; 74 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 73 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -5797,7 +5834,7 @@ i32.const 4 i32.mul i32.add - i32.load offset=8 + i32.load local.set $3 block $break|0 loop $continue|0 @@ -5836,22 +5873,22 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 75 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/map/Map#has (; 74 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.0 (result i32) + block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 local.get $2 - call $~lib/internal/hash/hash64 - br $~lib/internal/hash/HASH|inlined.0 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.0 end call $~lib/map/Map#find i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 76 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 75 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5872,7 +5909,6 @@ local.get $2 i32.const 4 i32.mul - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $3 local.get $2 @@ -5887,13 +5923,10 @@ i32.const 16 end i32.mul - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 local.get $0 i32.load offset=8 - i32.const 8 - i32.add local.set $6 local.get $6 local.get $0 @@ -5905,8 +5938,6 @@ i32.add local.set $7 local.get $5 - i32.const 8 - i32.add local.set $8 block $break|0 loop $continue|0 @@ -5933,13 +5964,13 @@ local.get $9 i32.load offset=8 i32.store offset=8 - block $~lib/internal/hash/HASH|inlined.2 (result i32) + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $9 i64.load local.set $11 local.get $11 - call $~lib/internal/hash/hash64 - br $~lib/internal/hash/HASH|inlined.2 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and @@ -5952,11 +5983,11 @@ local.set $13 local.get $10 local.get $13 - i32.load offset=8 + i32.load i32.store offset=12 local.get $13 local.get $8 - i32.store offset=8 + i32.store local.get $8 block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) i32.const 16 @@ -5992,18 +6023,18 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 77 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/map/Map#set (; 76 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i64) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - block $~lib/internal/hash/HASH|inlined.1 (result i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $3 local.get $3 - call $~lib/internal/hash/hash64 - br $~lib/internal/hash/HASH|inlined.1 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.1 end local.set $4 local.get $0 @@ -6050,8 +6081,6 @@ i32.load offset=8 local.set $6 local.get $6 - i32.const 8 - i32.add block (result i32) local.get $0 local.get $0 @@ -6092,24 +6121,24 @@ local.set $7 local.get $5 local.get $7 - i32.load offset=8 + i32.load i32.store offset=12 local.get $7 local.get $5 - i32.store offset=8 + i32.store end ) - (func $~lib/map/Map#get (; 78 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/map/Map#get (; 77 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) (local $3 i32) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.3 (result i32) + block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 local.get $2 - call $~lib/internal/hash/hash64 - br $~lib/internal/hash/HASH|inlined.3 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.3 end call $~lib/map/Map#find local.set $3 @@ -6121,11 +6150,11 @@ unreachable end ) - (func $~lib/map/Map#get:size (; 79 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 78 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 80 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/map/Map#delete (; 79 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) (local $3 i32) (local $4 i32) @@ -6133,12 +6162,12 @@ (local $6 i32) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.4 (result i32) + block $~lib/util/hash/HASH|inlined.4 (result i32) local.get $1 local.set $2 local.get $2 - call $~lib/internal/hash/hash64 - br $~lib/internal/hash/HASH|inlined.4 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.4 end call $~lib/map/Map#find local.set $3 @@ -6199,7 +6228,7 @@ end i32.const 1 ) - (func $std/map/test (; 81 ;) (type $FUNCSIG$v) + (func $std/map/test (; 80 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i64) i32.const 0 @@ -6222,7 +6251,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -6241,7 +6270,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -6258,7 +6287,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 11 i32.const 4 call $~lib/env/abort @@ -6281,7 +6310,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 13 i32.const 2 call $~lib/env/abort @@ -6303,7 +6332,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 17 i32.const 4 call $~lib/env/abort @@ -6320,7 +6349,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -6339,7 +6368,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 4 call $~lib/env/abort @@ -6356,7 +6385,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 21 i32.const 4 call $~lib/env/abort @@ -6379,7 +6408,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 23 i32.const 2 call $~lib/env/abort @@ -6401,7 +6430,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 27 i32.const 4 call $~lib/env/abort @@ -6418,7 +6447,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 4 call $~lib/env/abort @@ -6435,7 +6464,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 30 i32.const 4 call $~lib/env/abort @@ -6458,7 +6487,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 2 call $~lib/env/abort @@ -6481,7 +6510,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -6500,7 +6529,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 4 call $~lib/env/abort @@ -6517,7 +6546,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 40 i32.const 4 call $~lib/env/abort @@ -6540,7 +6569,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort @@ -6555,18 +6584,17 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 46 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/map/Map#clear (; 82 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 81 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 0 i32.const 16 - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store local.get $0 @@ -6577,7 +6605,6 @@ local.get $0 i32.const 0 i32.const 64 - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store offset=8 local.get $0 @@ -6590,13 +6617,25 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 83 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 82 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) block (result i32) local.get $0 i32.eqz if - i32.const 24 - call $~lib/memory/memory.allocate + block $~lib/runtime/REGISTER>|inlined.0 (result i32) + i32.const 24 + call $~lib/runtime/ALLOCATE + local.set $1 + local.get $1 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $1 + global.get $~lib/runtime/HEADER_SIZE + i32.sub + i32.const 10 + i32.store + local.get $1 + end local.set $0 end local.get $0 @@ -6622,7 +6661,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 84 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 83 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -6634,7 +6673,7 @@ i32.const 4 i32.mul i32.add - i32.load offset=8 + i32.load local.set $3 block $break|0 loop $continue|0 @@ -6673,22 +6712,22 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 85 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/map/Map#has (; 84 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.0 (result i32) + block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 local.get $2 - call $~lib/internal/hash/hash64 - br $~lib/internal/hash/HASH|inlined.0 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.0 end call $~lib/map/Map#find i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 86 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 85 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6709,7 +6748,6 @@ local.get $2 i32.const 4 i32.mul - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $3 local.get $2 @@ -6724,13 +6762,10 @@ i32.const 16 end i32.mul - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 local.get $0 i32.load offset=8 - i32.const 8 - i32.add local.set $6 local.get $6 local.get $0 @@ -6742,8 +6777,6 @@ i32.add local.set $7 local.get $5 - i32.const 8 - i32.add local.set $8 block $break|0 loop $continue|0 @@ -6770,13 +6803,13 @@ local.get $9 i32.load offset=8 i32.store offset=8 - block $~lib/internal/hash/HASH|inlined.2 (result i32) + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $9 i64.load local.set $11 local.get $11 - call $~lib/internal/hash/hash64 - br $~lib/internal/hash/HASH|inlined.2 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and @@ -6789,11 +6822,11 @@ local.set $13 local.get $10 local.get $13 - i32.load offset=8 + i32.load i32.store offset=12 local.get $13 local.get $8 - i32.store offset=8 + i32.store local.get $8 block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) i32.const 16 @@ -6829,18 +6862,18 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 87 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/map/Map#set (; 86 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i64) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - block $~lib/internal/hash/HASH|inlined.1 (result i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $3 local.get $3 - call $~lib/internal/hash/hash64 - br $~lib/internal/hash/HASH|inlined.1 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.1 end local.set $4 local.get $0 @@ -6887,8 +6920,6 @@ i32.load offset=8 local.set $6 local.get $6 - i32.const 8 - i32.add block (result i32) local.get $0 local.get $0 @@ -6929,24 +6960,24 @@ local.set $7 local.get $5 local.get $7 - i32.load offset=8 + i32.load i32.store offset=12 local.get $7 local.get $5 - i32.store offset=8 + i32.store end ) - (func $~lib/map/Map#get (; 88 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/map/Map#get (; 87 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) (local $3 i32) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.3 (result i32) + block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 local.get $2 - call $~lib/internal/hash/hash64 - br $~lib/internal/hash/HASH|inlined.3 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.3 end call $~lib/map/Map#find local.set $3 @@ -6958,11 +6989,11 @@ unreachable end ) - (func $~lib/map/Map#get:size (; 89 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 88 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 90 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/map/Map#delete (; 89 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) (local $3 i32) (local $4 i32) @@ -6970,12 +7001,12 @@ (local $6 i32) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.4 (result i32) + block $~lib/util/hash/HASH|inlined.4 (result i32) local.get $1 local.set $2 local.get $2 - call $~lib/internal/hash/hash64 - br $~lib/internal/hash/HASH|inlined.4 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.4 end call $~lib/map/Map#find local.set $3 @@ -7036,7 +7067,7 @@ end i32.const 1 ) - (func $std/map/test (; 91 ;) (type $FUNCSIG$v) + (func $std/map/test (; 90 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i64) i32.const 0 @@ -7059,7 +7090,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -7078,7 +7109,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -7095,7 +7126,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 11 i32.const 4 call $~lib/env/abort @@ -7118,7 +7149,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 13 i32.const 2 call $~lib/env/abort @@ -7140,7 +7171,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 17 i32.const 4 call $~lib/env/abort @@ -7157,7 +7188,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -7176,7 +7207,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 4 call $~lib/env/abort @@ -7193,7 +7224,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 21 i32.const 4 call $~lib/env/abort @@ -7216,7 +7247,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 23 i32.const 2 call $~lib/env/abort @@ -7238,7 +7269,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 27 i32.const 4 call $~lib/env/abort @@ -7255,7 +7286,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 4 call $~lib/env/abort @@ -7272,7 +7303,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 30 i32.const 4 call $~lib/env/abort @@ -7295,7 +7326,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 2 call $~lib/env/abort @@ -7318,7 +7349,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -7337,7 +7368,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 4 call $~lib/env/abort @@ -7354,7 +7385,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 40 i32.const 4 call $~lib/env/abort @@ -7377,7 +7408,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort @@ -7392,18 +7423,17 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 46 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/map/Map#clear (; 92 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 91 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 0 i32.const 16 - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store local.get $0 @@ -7414,7 +7444,6 @@ local.get $0 i32.const 0 i32.const 48 - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store offset=8 local.get $0 @@ -7427,13 +7456,25 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 93 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 92 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) block (result i32) local.get $0 i32.eqz if - i32.const 24 - call $~lib/memory/memory.allocate + block $~lib/runtime/REGISTER>|inlined.0 (result i32) + i32.const 24 + call $~lib/runtime/ALLOCATE + local.set $1 + local.get $1 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $1 + global.get $~lib/runtime/HEADER_SIZE + i32.sub + i32.const 11 + i32.store + local.get $1 + end local.set $0 end local.get $0 @@ -7459,7 +7500,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 94 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 93 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -7471,7 +7512,7 @@ i32.const 4 i32.mul i32.add - i32.load offset=8 + i32.load local.set $3 block $break|0 loop $continue|0 @@ -7510,23 +7551,23 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 95 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/map/Map#has (; 94 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) (local $2 f32) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.0 (result i32) + block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 local.get $2 i32.reinterpret_f32 - call $~lib/internal/hash/hash32 - br $~lib/internal/hash/HASH|inlined.0 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.0 end call $~lib/map/Map#find i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 96 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 95 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7547,7 +7588,6 @@ local.get $2 i32.const 4 i32.mul - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $3 local.get $2 @@ -7562,13 +7602,10 @@ i32.const 12 end i32.mul - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 local.get $0 i32.load offset=8 - i32.const 8 - i32.add local.set $6 local.get $6 local.get $0 @@ -7580,8 +7617,6 @@ i32.add local.set $7 local.get $5 - i32.const 8 - i32.add local.set $8 block $break|0 loop $continue|0 @@ -7608,14 +7643,14 @@ local.get $9 i32.load offset=4 i32.store offset=4 - block $~lib/internal/hash/HASH|inlined.2 (result i32) + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $9 f32.load local.set $11 local.get $11 i32.reinterpret_f32 - call $~lib/internal/hash/hash32 - br $~lib/internal/hash/HASH|inlined.2 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and @@ -7628,11 +7663,11 @@ local.set $13 local.get $10 local.get $13 - i32.load offset=8 + i32.load i32.store offset=8 local.get $13 local.get $8 - i32.store offset=8 + i32.store local.get $8 block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) i32.const 12 @@ -7668,19 +7703,19 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 97 ;) (type $FUNCSIG$vifi) (param $0 i32) (param $1 f32) (param $2 i32) + (func $~lib/map/Map#set (; 96 ;) (type $FUNCSIG$vifi) (param $0 i32) (param $1 f32) (param $2 i32) (local $3 f32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - block $~lib/internal/hash/HASH|inlined.1 (result i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $3 local.get $3 i32.reinterpret_f32 - call $~lib/internal/hash/hash32 - br $~lib/internal/hash/HASH|inlined.1 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.1 end local.set $4 local.get $0 @@ -7727,8 +7762,6 @@ i32.load offset=8 local.set $6 local.get $6 - i32.const 8 - i32.add block (result i32) local.get $0 local.get $0 @@ -7769,25 +7802,25 @@ local.set $7 local.get $5 local.get $7 - i32.load offset=8 + i32.load i32.store offset=8 local.get $7 local.get $5 - i32.store offset=8 + i32.store end ) - (func $~lib/map/Map#get (; 98 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/map/Map#get (; 97 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) (local $2 f32) (local $3 i32) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.3 (result i32) + block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 local.get $2 i32.reinterpret_f32 - call $~lib/internal/hash/hash32 - br $~lib/internal/hash/HASH|inlined.3 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.3 end call $~lib/map/Map#find local.set $3 @@ -7799,11 +7832,11 @@ unreachable end ) - (func $~lib/map/Map#get:size (; 99 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 98 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 100 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/map/Map#delete (; 99 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) (local $2 f32) (local $3 i32) (local $4 i32) @@ -7811,13 +7844,13 @@ (local $6 i32) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.4 (result i32) + block $~lib/util/hash/HASH|inlined.4 (result i32) local.get $1 local.set $2 local.get $2 i32.reinterpret_f32 - call $~lib/internal/hash/hash32 - br $~lib/internal/hash/HASH|inlined.4 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.4 end call $~lib/map/Map#find local.set $3 @@ -7878,7 +7911,7 @@ end i32.const 1 ) - (func $std/map/test (; 101 ;) (type $FUNCSIG$v) + (func $std/map/test (; 100 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 f32) i32.const 0 @@ -7901,7 +7934,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -7920,7 +7953,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -7937,7 +7970,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 11 i32.const 4 call $~lib/env/abort @@ -7960,7 +7993,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 13 i32.const 2 call $~lib/env/abort @@ -7982,7 +8015,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 17 i32.const 4 call $~lib/env/abort @@ -7999,7 +8032,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -8018,7 +8051,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 4 call $~lib/env/abort @@ -8035,7 +8068,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 21 i32.const 4 call $~lib/env/abort @@ -8058,7 +8091,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 23 i32.const 2 call $~lib/env/abort @@ -8080,7 +8113,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 27 i32.const 4 call $~lib/env/abort @@ -8097,7 +8130,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 4 call $~lib/env/abort @@ -8114,7 +8147,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 30 i32.const 4 call $~lib/env/abort @@ -8137,7 +8170,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 2 call $~lib/env/abort @@ -8160,7 +8193,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -8179,7 +8212,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 4 call $~lib/env/abort @@ -8196,7 +8229,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 40 i32.const 4 call $~lib/env/abort @@ -8219,7 +8252,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort @@ -8234,18 +8267,17 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 46 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/map/Map#clear (; 102 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 101 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 0 i32.const 16 - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store local.get $0 @@ -8256,7 +8288,6 @@ local.get $0 i32.const 0 i32.const 64 - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store offset=8 local.get $0 @@ -8269,13 +8300,25 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 103 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 102 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) block (result i32) local.get $0 i32.eqz if - i32.const 24 - call $~lib/memory/memory.allocate + block $~lib/runtime/REGISTER>|inlined.0 (result i32) + i32.const 24 + call $~lib/runtime/ALLOCATE + local.set $1 + local.get $1 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $1 + global.get $~lib/runtime/HEADER_SIZE + i32.sub + i32.const 12 + i32.store + local.get $1 + end local.set $0 end local.get $0 @@ -8301,7 +8344,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 104 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 103 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -8313,7 +8356,7 @@ i32.const 4 i32.mul i32.add - i32.load offset=8 + i32.load local.set $3 block $break|0 loop $continue|0 @@ -8352,23 +8395,23 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 105 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/map/Map#has (; 104 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 f64) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.0 (result i32) + block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 local.get $2 i64.reinterpret_f64 - call $~lib/internal/hash/hash64 - br $~lib/internal/hash/HASH|inlined.0 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.0 end call $~lib/map/Map#find i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 106 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 105 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8389,7 +8432,6 @@ local.get $2 i32.const 4 i32.mul - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $3 local.get $2 @@ -8404,13 +8446,10 @@ i32.const 16 end i32.mul - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 local.get $0 i32.load offset=8 - i32.const 8 - i32.add local.set $6 local.get $6 local.get $0 @@ -8422,8 +8461,6 @@ i32.add local.set $7 local.get $5 - i32.const 8 - i32.add local.set $8 block $break|0 loop $continue|0 @@ -8450,14 +8487,14 @@ local.get $9 i32.load offset=8 i32.store offset=8 - block $~lib/internal/hash/HASH|inlined.2 (result i32) + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $9 f64.load local.set $11 local.get $11 i64.reinterpret_f64 - call $~lib/internal/hash/hash64 - br $~lib/internal/hash/HASH|inlined.2 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and @@ -8470,11 +8507,11 @@ local.set $13 local.get $10 local.get $13 - i32.load offset=8 + i32.load i32.store offset=12 local.get $13 local.get $8 - i32.store offset=8 + i32.store local.get $8 block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) i32.const 16 @@ -8510,19 +8547,19 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 107 ;) (type $FUNCSIG$vidi) (param $0 i32) (param $1 f64) (param $2 i32) + (func $~lib/map/Map#set (; 106 ;) (type $FUNCSIG$vidi) (param $0 i32) (param $1 f64) (param $2 i32) (local $3 f64) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - block $~lib/internal/hash/HASH|inlined.1 (result i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $3 local.get $3 i64.reinterpret_f64 - call $~lib/internal/hash/hash64 - br $~lib/internal/hash/HASH|inlined.1 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.1 end local.set $4 local.get $0 @@ -8569,8 +8606,6 @@ i32.load offset=8 local.set $6 local.get $6 - i32.const 8 - i32.add block (result i32) local.get $0 local.get $0 @@ -8611,25 +8646,25 @@ local.set $7 local.get $5 local.get $7 - i32.load offset=8 + i32.load i32.store offset=12 local.get $7 local.get $5 - i32.store offset=8 + i32.store end ) - (func $~lib/map/Map#get (; 108 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/map/Map#get (; 107 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 f64) (local $3 i32) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.3 (result i32) + block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 local.get $2 i64.reinterpret_f64 - call $~lib/internal/hash/hash64 - br $~lib/internal/hash/HASH|inlined.3 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.3 end call $~lib/map/Map#find local.set $3 @@ -8641,11 +8676,11 @@ unreachable end ) - (func $~lib/map/Map#get:size (; 109 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 108 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 110 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/map/Map#delete (; 109 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 f64) (local $3 i32) (local $4 i32) @@ -8653,13 +8688,13 @@ (local $6 i32) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.4 (result i32) + block $~lib/util/hash/HASH|inlined.4 (result i32) local.get $1 local.set $2 local.get $2 i64.reinterpret_f64 - call $~lib/internal/hash/hash64 - br $~lib/internal/hash/HASH|inlined.4 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.4 end call $~lib/map/Map#find local.set $3 @@ -8720,7 +8755,7 @@ end i32.const 1 ) - (func $std/map/test (; 111 ;) (type $FUNCSIG$v) + (func $std/map/test (; 110 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 f64) i32.const 0 @@ -8743,7 +8778,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -8762,7 +8797,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -8779,7 +8814,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 11 i32.const 4 call $~lib/env/abort @@ -8802,7 +8837,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 13 i32.const 2 call $~lib/env/abort @@ -8824,7 +8859,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 17 i32.const 4 call $~lib/env/abort @@ -8841,7 +8876,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -8860,7 +8895,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 4 call $~lib/env/abort @@ -8877,7 +8912,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 21 i32.const 4 call $~lib/env/abort @@ -8900,7 +8935,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 23 i32.const 2 call $~lib/env/abort @@ -8922,7 +8957,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 27 i32.const 4 call $~lib/env/abort @@ -8939,7 +8974,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 4 call $~lib/env/abort @@ -8956,7 +8991,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 30 i32.const 4 call $~lib/env/abort @@ -8979,7 +9014,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 2 call $~lib/env/abort @@ -9002,7 +9037,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -9021,7 +9056,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 4 call $~lib/env/abort @@ -9038,7 +9073,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 40 i32.const 4 call $~lib/env/abort @@ -9061,7 +9096,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort @@ -9076,15 +9111,24 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 46 i32.const 2 call $~lib/env/abort unreachable end ) - (func $start:std/map (; 112 ;) (type $FUNCSIG$v) - call $start:~lib/allocator/arena + (func $start:std/map (; 111 ;) (type $FUNCSIG$v) + 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 $std/map/test call $std/map/test call $std/map/test @@ -9096,9 +9140,9 @@ call $std/map/test call $std/map/test ) - (func $start (; 113 ;) (type $FUNCSIG$v) + (func $start (; 112 ;) (type $FUNCSIG$v) call $start:std/map ) - (func $null (; 114 ;) (type $FUNCSIG$v) + (func $null (; 113 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/set.optimized.wat b/tests/compiler/std/set.optimized.wat index f8a147f4..c384219a 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.optimized.wat @@ -2,9 +2,9 @@ (type $FUNCSIG$v (func)) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$vi (func (param i32))) - (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$vii (func (param i32 i32))) (type $FUNCSIG$iij (func (param i32 i64) (result i32))) (type $FUNCSIG$ij (func (param i64) (result i32))) @@ -21,9 +21,9 @@ (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) "\13\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 56) "\1c\00\00\00~\00l\00i\00b\00/\00i\00n\00t\00e\00r\00n\00a\00l\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 120) "\n\00\00\00s\00t\00d\00/\00s\00e\00t\00.\00t\00s") + (data (i32.const 8) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") + (data (i32.const 48) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data (i32.const 96) "\01\00\00\00\14\00\00\00s\00t\00d\00/\00s\00e\00t\00.\00t\00s") (table $0 1 funcref) (elem (i32.const 0) $null) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) @@ -31,7 +31,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) @@ -54,15 +54,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 @@ -71,16 +71,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 @@ -89,23 +89,12 @@ end end end - local.get $2 + local.get $0 global.set $~lib/allocator/arena/offset local.get $1 ) - (func $~lib/internal/arraybuffer/allocateUnsafe (; 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) - local.get $0 - i32.const 1073741816 - i32.gt_u - if - i32.const 0 - i32.const 56 - i32.const 26 - i32.const 2 - call $~lib/env/abort - unreachable - end i32.const 1 i32.const 32 local.get $0 @@ -114,262 +103,285 @@ i32.clz i32.sub i32.shl - call $~lib/allocator/arena/__memory_allocate + call $~lib/memory/memory.allocate local.tee $1 - local.get $0 + 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/internal/memory/memset (; 3 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/runtime/ASSERT_UNREGISTERED (; 3 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + i32.const 124 + i32.le_u + if + i32.const 0 + i32.const 16 + i32.const 172 + i32.const 2 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const -1520547049 + i32.ne + if + i32.const 0 + i32.const 16 + i32.const 173 + i32.const 2 + call $~lib/env/abort + unreachable + end + ) + (func $~lib/memory/memory.fill (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 2 - i32.le_u - if - return - end - local.get $0 - i32.const 1 - i32.add - i32.const 0 - i32.store8 - local.get $0 - i32.const 2 - i32.add - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $2 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 6 - i32.le_u - if - return - end - local.get $0 - i32.const 3 - i32.add - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.le_u - if - return - end - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $2 - local.get $0 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $1 - local.get $2 - i32.sub - i32.const -4 - i32.and - local.tee $1 - local.get $0 - i32.add - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 8 - i32.le_u - if - return - end - local.get $0 - i32.const 4 - i32.add - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.add - i32.const 0 - i32.store - local.get $0 - local.get $1 - i32.add - local.tee $2 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 24 - i32.le_u - if - return - end - local.get $0 - i32.const 12 - i32.add - i32.const 0 - i32.store - local.get $0 - i32.const 16 - i32.add - i32.const 0 - i32.store - local.get $0 - i32.const 20 - i32.add - i32.const 0 - i32.store - local.get $0 - i32.const 24 - i32.add - i32.const 0 - i32.store - local.get $0 - local.get $1 - i32.add - local.tee $2 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $2 - local.get $0 - i32.add - local.set $0 - local.get $1 - local.get $2 - i32.sub - local.set $1 - loop $continue|0 + block $~lib/util/memory/memset|inlined.0 local.get $1 - i32.const 32 - i32.ge_u - if - local.get $0 - i64.const 0 - i64.store - local.get $0 - i32.const 8 - i32.add - i64.const 0 - i64.store - local.get $0 - i32.const 16 - i32.add - i64.const 0 - i64.store - local.get $0 - i32.const 24 - i32.add - i64.const 0 - i64.store + i32.eqz + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 + i32.store8 + local.get $0 + local.get $1 + i32.add + i32.const 1 + i32.sub + i32.const 0 + i32.store8 + local.get $1 + i32.const 2 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 1 + i32.add + i32.const 0 + i32.store8 + local.get $0 + i32.const 2 + i32.add + i32.const 0 + i32.store8 + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 2 + i32.sub + i32.const 0 + i32.store8 + local.get $2 + i32.const 3 + i32.sub + i32.const 0 + i32.store8 + local.get $1 + i32.const 6 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 3 + i32.add + i32.const 0 + i32.store8 + local.get $0 + local.get $1 + i32.add + i32.const 4 + i32.sub + i32.const 0 + i32.store8 + local.get $1 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + local.get $0 + i32.sub + i32.const 3 + i32.and + local.tee $2 + i32.sub + local.set $1 + local.get $0 + local.get $2 + i32.add + local.tee $0 + i32.const 0 + i32.store + local.get $1 + i32.const -4 + i32.and + local.tee $1 + local.get $0 + i32.add + i32.const 4 + i32.sub + i32.const 0 + i32.store + local.get $1 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 4 + i32.add + i32.const 0 + i32.store + local.get $0 + i32.const 8 + i32.add + i32.const 0 + i32.store + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 12 + i32.sub + i32.const 0 + i32.store + local.get $2 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $1 + i32.const 24 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 12 + i32.add + i32.const 0 + i32.store + local.get $0 + i32.const 16 + i32.add + i32.const 0 + i32.store + local.get $0 + i32.const 20 + i32.add + i32.const 0 + i32.store + local.get $0 + i32.const 24 + i32.add + i32.const 0 + i32.store + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 28 + i32.sub + i32.const 0 + i32.store + local.get $2 + i32.const 24 + i32.sub + i32.const 0 + i32.store + local.get $2 + i32.const 20 + i32.sub + i32.const 0 + i32.store + local.get $2 + i32.const 16 + i32.sub + i32.const 0 + i32.store + local.get $0 + i32.const 4 + i32.and + i32.const 24 + i32.add + local.tee $2 + local.get $0 + i32.add + local.set $0 + local.get $1 + local.get $2 + i32.sub + local.set $1 + loop $continue|0 local.get $1 i32.const 32 - i32.sub - local.set $1 - local.get $0 - i32.const 32 - i32.add - local.set $0 - br $continue|0 + i32.ge_u + if + local.get $0 + i64.const 0 + i64.store + local.get $0 + i32.const 8 + i32.add + i64.const 0 + i64.store + local.get $0 + i32.const 16 + i32.add + i64.const 0 + i64.store + local.get $0 + i32.const 24 + i32.add + i64.const 0 + i64.store + local.get $1 + i32.const 32 + i32.sub + local.set $1 + local.get $0 + i32.const 32 + i32.add + local.set $0 + br $continue|0 + end end end ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/arraybuffer/ArrayBuffer#constructor (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) local.get $0 i32.const 1073741816 i32.gt_u if i32.const 0 - i32.const 8 - i32.const 47 - i32.const 40 + i32.const 56 + i32.const 24 + i32.const 43 call $~lib/env/abort unreachable end local.get $0 - call $~lib/internal/arraybuffer/allocateUnsafe - local.set $2 + call $~lib/runtime/ALLOCATE + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $1 + i32.const 8 + i32.sub + i32.const 3 + i32.store local.get $1 - i32.eqz - if - local.get $2 - i32.const 8 - i32.add - local.get $0 - call $~lib/internal/memory/memset - end - local.get $2 ) - (func $~lib/set/Set#clear (; 5 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/set/Set#clear (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 16 - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store local.get $0 @@ -377,7 +389,6 @@ i32.store offset=4 local.get $0 i32.const 32 - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store offset=8 local.get $0 @@ -390,11 +401,18 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 6 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/set/Set#constructor (; 7 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - call $~lib/allocator/arena/__memory_allocate + call $~lib/runtime/ALLOCATE local.tee $0 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $0 + i32.const 8 + i32.sub + i32.const 2 + i32.store + local.get $0 i32.const 0 i32.store local.get $0 @@ -416,7 +434,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/set/Set#find (; 7 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 8 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -426,7 +444,7 @@ i32.const 2 i32.shl i32.add - i32.load offset=8 + i32.load local.set $2 loop $continue|0 local.get $2 @@ -461,7 +479,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -477,7 +495,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 9 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -491,7 +509,6 @@ local.tee $2 i32.const 2 i32.shl - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $4 local.get $2 @@ -502,13 +519,10 @@ local.tee $6 i32.const 3 i32.shl - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 local.get $0 i32.load offset=8 - i32.const 8 - i32.add local.tee $2 local.get $0 i32.load offset=16 @@ -517,8 +531,6 @@ i32.add local.set $7 local.get $5 - i32.const 8 - i32.add local.set $3 loop $continue|0 local.get $2 @@ -549,11 +561,11 @@ local.get $4 i32.add local.tee $8 - i32.load offset=8 + i32.load i32.store offset=4 local.get $8 local.get $3 - i32.store offset=8 + i32.store local.get $3 i32.const 8 i32.add @@ -583,7 +595,7 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/set/Set#add (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -643,12 +655,10 @@ i32.const 1 i32.add i32.store offset=16 - local.get $2 - i32.const 8 - i32.add local.get $3 i32.const 3 i32.shl + local.get $2 i32.add local.tee $2 local.get $1 @@ -670,14 +680,14 @@ i32.shl i32.add local.tee $3 - i32.load offset=8 + i32.load i32.store offset=4 local.get $3 local.get $2 - i32.store offset=8 + i32.store end ) - (func $~lib/set/Set#delete (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#delete (; 12 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -744,7 +754,7 @@ call $~lib/set/Set#rehash end ) - (func $std/set/test (; 12 ;) (type $FUNCSIG$v) + (func $std/set/test (; 13 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) call $~lib/set/Set#constructor @@ -759,7 +769,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -779,7 +789,7 @@ br $repeat|0 else i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -794,7 +804,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 12 i32.const 2 call $~lib/env/abort @@ -813,7 +823,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 16 i32.const 4 call $~lib/env/abort @@ -833,7 +843,7 @@ br $repeat|1 else i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -848,7 +858,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 2 call $~lib/env/abort @@ -867,7 +877,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 24 i32.const 4 call $~lib/env/abort @@ -881,7 +891,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 26 i32.const 4 call $~lib/env/abort @@ -902,7 +912,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 2 call $~lib/env/abort @@ -920,7 +930,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 4 call $~lib/env/abort @@ -935,7 +945,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 34 i32.const 4 call $~lib/env/abort @@ -949,7 +959,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -970,7 +980,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 2 call $~lib/env/abort @@ -982,14 +992,47 @@ i32.load offset=20 if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/set/Set#has (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#constructor (; 14 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + call $~lib/runtime/ALLOCATE + local.tee $0 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $0 + i32.const 8 + i32.sub + i32.const 4 + i32.store + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/set/Set#clear + local.get $0 + ) + (func $~lib/set/Set#has (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -1003,7 +1046,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 14 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 16 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1017,7 +1060,6 @@ local.tee $2 i32.const 2 i32.shl - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $4 local.get $2 @@ -1028,13 +1070,10 @@ local.tee $6 i32.const 3 i32.shl - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 local.get $0 i32.load offset=8 - i32.const 8 - i32.add local.tee $2 local.get $0 i32.load offset=16 @@ -1043,8 +1082,6 @@ i32.add local.set $7 local.get $5 - i32.const 8 - i32.add local.set $3 loop $continue|0 local.get $2 @@ -1075,11 +1112,11 @@ local.get $4 i32.add local.tee $8 - i32.load offset=8 + i32.load i32.store offset=4 local.get $8 local.get $3 - i32.store offset=8 + i32.store local.get $3 i32.const 8 i32.add @@ -1109,7 +1146,7 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/set/Set#add (; 15 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (; 17 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1167,12 +1204,10 @@ i32.const 1 i32.add i32.store offset=16 - local.get $2 - i32.const 8 - i32.add local.get $3 i32.const 3 i32.shl + local.get $2 i32.add local.tee $2 local.get $1 @@ -1194,14 +1229,14 @@ i32.shl i32.add local.tee $3 - i32.load offset=8 + i32.load i32.store offset=4 local.get $3 local.get $2 - i32.store offset=8 + i32.store end ) - (func $~lib/set/Set#delete (; 16 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#delete (; 18 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -1266,10 +1301,10 @@ call $~lib/set/Set#rehash end ) - (func $std/set/test (; 17 ;) (type $FUNCSIG$v) + (func $std/set/test (; 19 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - call $~lib/set/Set#constructor + call $~lib/set/Set#constructor local.set $1 loop $repeat|0 local.get $0 @@ -1281,7 +1316,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -1301,7 +1336,7 @@ br $repeat|0 else i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -1316,7 +1351,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 12 i32.const 2 call $~lib/env/abort @@ -1335,7 +1370,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 16 i32.const 4 call $~lib/env/abort @@ -1355,7 +1390,7 @@ br $repeat|1 else i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -1370,7 +1405,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 2 call $~lib/env/abort @@ -1389,7 +1424,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 24 i32.const 4 call $~lib/env/abort @@ -1403,7 +1438,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 26 i32.const 4 call $~lib/env/abort @@ -1424,7 +1459,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 2 call $~lib/env/abort @@ -1442,7 +1477,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 4 call $~lib/env/abort @@ -1457,7 +1492,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 34 i32.const 4 call $~lib/env/abort @@ -1471,7 +1506,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -1492,7 +1527,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 2 call $~lib/env/abort @@ -1504,14 +1539,47 @@ i32.load offset=20 if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/set/Set#find (; 18 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/set/Set#constructor (; 20 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + call $~lib/runtime/ALLOCATE + local.tee $0 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $0 + i32.const 8 + i32.sub + i32.const 5 + i32.store + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/set/Set#clear + local.get $0 + ) + (func $~lib/set/Set#find (; 21 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -1521,7 +1589,7 @@ i32.const 2 i32.shl i32.add - i32.load offset=8 + i32.load local.set $2 loop $continue|0 local.get $2 @@ -1556,7 +1624,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -1581,7 +1649,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 20 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 23 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1595,7 +1663,6 @@ local.tee $2 i32.const 2 i32.shl - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 local.get $2 @@ -1606,13 +1673,10 @@ local.tee $7 i32.const 3 i32.shl - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $6 local.get $0 i32.load offset=8 - i32.const 8 - i32.add local.tee $2 local.get $0 i32.load offset=16 @@ -1621,8 +1685,6 @@ i32.add local.set $8 local.get $6 - i32.const 8 - i32.add local.set $3 loop $continue|0 local.get $2 @@ -1662,11 +1724,11 @@ local.get $5 i32.add local.tee $4 - i32.load offset=8 + i32.load i32.store offset=4 local.get $4 local.get $3 - i32.store offset=8 + i32.store local.get $3 i32.const 8 i32.add @@ -1696,7 +1758,7 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/set/Set#add (; 21 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (; 24 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1765,12 +1827,10 @@ i32.const 1 i32.add i32.store offset=16 - local.get $2 - i32.const 8 - i32.add local.get $3 i32.const 3 i32.shl + local.get $2 i32.add local.tee $2 local.get $1 @@ -1792,14 +1852,14 @@ i32.shl i32.add local.tee $3 - i32.load offset=8 + i32.load i32.store offset=4 local.get $3 local.get $2 - i32.store offset=8 + i32.store end ) - (func $~lib/set/Set#delete (; 22 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#delete (; 25 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -1875,10 +1935,10 @@ call $~lib/set/Set#rehash end ) - (func $std/set/test (; 23 ;) (type $FUNCSIG$v) + (func $std/set/test (; 26 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - call $~lib/set/Set#constructor + call $~lib/set/Set#constructor local.set $1 loop $repeat|0 local.get $0 @@ -1890,7 +1950,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -1910,7 +1970,7 @@ br $repeat|0 else i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -1925,7 +1985,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 12 i32.const 2 call $~lib/env/abort @@ -1944,7 +2004,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 16 i32.const 4 call $~lib/env/abort @@ -1964,7 +2024,7 @@ br $repeat|1 else i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -1979,7 +2039,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 2 call $~lib/env/abort @@ -1998,7 +2058,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 24 i32.const 4 call $~lib/env/abort @@ -2012,7 +2072,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 26 i32.const 4 call $~lib/env/abort @@ -2033,7 +2093,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 2 call $~lib/env/abort @@ -2051,7 +2111,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 4 call $~lib/env/abort @@ -2066,7 +2126,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 34 i32.const 4 call $~lib/env/abort @@ -2080,7 +2140,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -2101,7 +2161,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 2 call $~lib/env/abort @@ -2113,14 +2173,47 @@ i32.load offset=20 if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/set/Set#has (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#constructor (; 27 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + call $~lib/runtime/ALLOCATE + local.tee $0 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $0 + i32.const 8 + i32.sub + i32.const 6 + i32.store + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/set/Set#clear + local.get $0 + ) + (func $~lib/set/Set#has (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -2143,7 +2236,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 25 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 29 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2157,7 +2250,6 @@ local.tee $2 i32.const 2 i32.shl - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 local.get $2 @@ -2168,13 +2260,10 @@ local.tee $7 i32.const 3 i32.shl - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $6 local.get $0 i32.load offset=8 - i32.const 8 - i32.add local.tee $2 local.get $0 i32.load offset=16 @@ -2183,8 +2272,6 @@ i32.add local.set $8 local.get $6 - i32.const 8 - i32.add local.set $3 loop $continue|0 local.get $2 @@ -2224,11 +2311,11 @@ local.get $5 i32.add local.tee $4 - i32.load offset=8 + i32.load i32.store offset=4 local.get $4 local.get $3 - i32.store offset=8 + i32.store local.get $3 i32.const 8 i32.add @@ -2258,7 +2345,7 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/set/Set#add (; 26 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (; 30 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2325,12 +2412,10 @@ i32.const 1 i32.add i32.store offset=16 - local.get $2 - i32.const 8 - i32.add local.get $3 i32.const 3 i32.shl + local.get $2 i32.add local.tee $2 local.get $1 @@ -2352,14 +2437,14 @@ i32.shl i32.add local.tee $3 - i32.load offset=8 + i32.load i32.store offset=4 local.get $3 local.get $2 - i32.store offset=8 + i32.store end ) - (func $~lib/set/Set#delete (; 27 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#delete (; 31 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -2433,10 +2518,10 @@ call $~lib/set/Set#rehash end ) - (func $std/set/test (; 28 ;) (type $FUNCSIG$v) + (func $std/set/test (; 32 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - call $~lib/set/Set#constructor + call $~lib/set/Set#constructor local.set $1 loop $repeat|0 local.get $0 @@ -2448,7 +2533,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -2468,7 +2553,7 @@ br $repeat|0 else i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -2483,7 +2568,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 12 i32.const 2 call $~lib/env/abort @@ -2502,7 +2587,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 16 i32.const 4 call $~lib/env/abort @@ -2522,7 +2607,7 @@ br $repeat|1 else i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -2537,7 +2622,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 2 call $~lib/env/abort @@ -2556,7 +2641,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 24 i32.const 4 call $~lib/env/abort @@ -2570,7 +2655,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 26 i32.const 4 call $~lib/env/abort @@ -2591,7 +2676,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 2 call $~lib/env/abort @@ -2609,7 +2694,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 4 call $~lib/env/abort @@ -2624,7 +2709,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 34 i32.const 4 call $~lib/env/abort @@ -2638,7 +2723,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -2659,7 +2744,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 2 call $~lib/env/abort @@ -2671,14 +2756,47 @@ i32.load offset=20 if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/internal/hash/hash32 (; 29 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 33 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + call $~lib/runtime/ALLOCATE + local.tee $0 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $0 + i32.const 8 + i32.sub + i32.const 7 + i32.store + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/set/Set#clear + local.get $0 + ) + (func $~lib/util/hash/hash32 (; 34 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 255 i32.and @@ -2709,7 +2827,7 @@ i32.const 16777619 i32.mul ) - (func $~lib/set/Set#find (; 30 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 35 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -2719,7 +2837,7 @@ i32.const 2 i32.shl i32.add - i32.load offset=8 + i32.load local.set $2 loop $continue|0 local.get $2 @@ -2752,16 +2870,16 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 36 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 - call $~lib/internal/hash/hash32 + call $~lib/util/hash/hash32 call $~lib/set/Set#find i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 32 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 37 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2775,7 +2893,6 @@ local.tee $2 i32.const 2 i32.shl - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $4 local.get $2 @@ -2786,13 +2903,10 @@ local.tee $6 i32.const 3 i32.shl - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 local.get $0 i32.load offset=8 - i32.const 8 - i32.add local.tee $2 local.get $0 i32.load offset=16 @@ -2801,8 +2915,6 @@ i32.add local.set $7 local.get $5 - i32.const 8 - i32.add local.set $3 loop $continue|0 local.get $2 @@ -2822,7 +2934,7 @@ local.get $3 local.get $2 i32.load - call $~lib/internal/hash/hash32 + call $~lib/util/hash/hash32 local.get $1 i32.and i32.const 2 @@ -2830,11 +2942,11 @@ local.get $4 i32.add local.tee $8 - i32.load offset=8 + i32.load i32.store offset=4 local.get $8 local.get $3 - i32.store offset=8 + i32.store local.get $3 i32.const 8 i32.add @@ -2864,12 +2976,12 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/set/Set#add (; 33 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (; 38 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) local.get $1 - call $~lib/internal/hash/hash32 + call $~lib/util/hash/hash32 local.tee $2 local.set $4 local.get $0 @@ -2917,12 +3029,10 @@ i32.const 1 i32.add i32.store offset=16 - local.get $2 - i32.const 8 - i32.add local.get $3 i32.const 3 i32.shl + local.get $2 i32.add local.tee $2 local.get $1 @@ -2944,19 +3054,19 @@ i32.shl i32.add local.tee $3 - i32.load offset=8 + i32.load i32.store offset=4 local.get $3 local.get $2 - i32.store offset=8 + i32.store end ) - (func $~lib/set/Set#delete (; 34 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#delete (; 39 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 local.get $1 - call $~lib/internal/hash/hash32 + call $~lib/util/hash/hash32 call $~lib/set/Set#find local.tee $1 i32.eqz @@ -3011,10 +3121,10 @@ call $~lib/set/Set#rehash end ) - (func $std/set/test (; 35 ;) (type $FUNCSIG$v) + (func $std/set/test (; 40 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - call $~lib/set/Set#constructor + call $~lib/set/Set#constructor local.set $1 loop $repeat|0 local.get $0 @@ -3026,7 +3136,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -3046,7 +3156,7 @@ br $repeat|0 else i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -3061,7 +3171,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 12 i32.const 2 call $~lib/env/abort @@ -3080,7 +3190,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 16 i32.const 4 call $~lib/env/abort @@ -3100,7 +3210,7 @@ br $repeat|1 else i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -3115,7 +3225,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 2 call $~lib/env/abort @@ -3134,7 +3244,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 24 i32.const 4 call $~lib/env/abort @@ -3148,7 +3258,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 26 i32.const 4 call $~lib/env/abort @@ -3169,7 +3279,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 2 call $~lib/env/abort @@ -3187,7 +3297,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 4 call $~lib/env/abort @@ -3202,7 +3312,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 34 i32.const 4 call $~lib/env/abort @@ -3216,7 +3326,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -3237,7 +3347,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 2 call $~lib/env/abort @@ -3249,17 +3359,50 @@ i32.load offset=20 if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/set/test (; 36 ;) (type $FUNCSIG$v) + (func $~lib/set/Set#constructor (; 41 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + call $~lib/runtime/ALLOCATE + local.tee $0 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $0 + i32.const 8 + i32.sub + i32.const 8 + i32.store + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/set/Set#clear + local.get $0 + ) + (func $std/set/test (; 42 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - call $~lib/set/Set#constructor + call $~lib/set/Set#constructor local.set $1 loop $repeat|0 local.get $0 @@ -3271,7 +3414,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -3291,7 +3434,7 @@ br $repeat|0 else i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -3306,7 +3449,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 12 i32.const 2 call $~lib/env/abort @@ -3325,7 +3468,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 16 i32.const 4 call $~lib/env/abort @@ -3345,7 +3488,7 @@ br $repeat|1 else i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -3360,7 +3503,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 2 call $~lib/env/abort @@ -3379,7 +3522,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 24 i32.const 4 call $~lib/env/abort @@ -3393,7 +3536,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 26 i32.const 4 call $~lib/env/abort @@ -3414,7 +3557,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 2 call $~lib/env/abort @@ -3432,7 +3575,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 4 call $~lib/env/abort @@ -3447,7 +3590,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 34 i32.const 4 call $~lib/env/abort @@ -3461,7 +3604,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -3482,7 +3625,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 2 call $~lib/env/abort @@ -3494,17 +3637,16 @@ i32.load offset=20 if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/set/Set#clear (; 37 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/set/Set#clear (; 43 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 16 - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store local.get $0 @@ -3512,7 +3654,6 @@ i32.store offset=4 local.get $0 i32.const 64 - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store offset=8 local.get $0 @@ -3525,11 +3666,18 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 38 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/set/Set#constructor (; 44 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - call $~lib/allocator/arena/__memory_allocate + call $~lib/runtime/ALLOCATE local.tee $0 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $0 + i32.const 8 + i32.sub + i32.const 9 + i32.store + local.get $0 i32.const 0 i32.store local.get $0 @@ -3551,7 +3699,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/internal/hash/hash64 (; 39 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/hash/hash64 (; 45 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) local.get $0 i32.wrap_i64 @@ -3617,7 +3765,7 @@ i32.const 16777619 i32.mul ) - (func $~lib/set/Set#find (; 40 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 46 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -3627,7 +3775,7 @@ i32.const 2 i32.shl i32.add - i32.load offset=8 + i32.load local.set $2 loop $continue|0 local.get $2 @@ -3660,16 +3808,16 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 41 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/set/Set#has (; 47 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) local.get $0 local.get $1 local.get $1 - call $~lib/internal/hash/hash64 + call $~lib/util/hash/hash64 call $~lib/set/Set#find i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 42 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 48 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3683,7 +3831,6 @@ local.tee $2 i32.const 2 i32.shl - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $4 local.get $2 @@ -3694,13 +3841,10 @@ local.tee $6 i32.const 4 i32.shl - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 local.get $0 i32.load offset=8 - i32.const 8 - i32.add local.tee $2 local.get $0 i32.load offset=16 @@ -3709,8 +3853,6 @@ i32.add local.set $7 local.get $5 - i32.const 8 - i32.add local.set $3 loop $continue|0 local.get $2 @@ -3730,7 +3872,7 @@ local.get $3 local.get $2 i64.load - call $~lib/internal/hash/hash64 + call $~lib/util/hash/hash64 local.get $1 i32.and i32.const 2 @@ -3738,11 +3880,11 @@ local.get $4 i32.add local.tee $8 - i32.load offset=8 + i32.load i32.store offset=8 local.get $8 local.get $3 - i32.store offset=8 + i32.store local.get $3 i32.const 16 i32.add @@ -3772,12 +3914,12 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/set/Set#add (; 43 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) + (func $~lib/set/Set#add (; 49 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) (local $2 i32) (local $3 i32) (local $4 i32) local.get $1 - call $~lib/internal/hash/hash64 + call $~lib/util/hash/hash64 local.tee $2 local.set $4 local.get $0 @@ -3825,12 +3967,10 @@ i32.const 1 i32.add i32.store offset=16 - local.get $2 - i32.const 8 - i32.add local.get $3 i32.const 4 i32.shl + local.get $2 i32.add local.tee $2 local.get $1 @@ -3852,20 +3992,20 @@ i32.shl i32.add local.tee $3 - i32.load offset=8 + i32.load i32.store offset=8 local.get $3 local.get $2 - i32.store offset=8 + i32.store end ) - (func $~lib/set/Set#delete (; 44 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) + (func $~lib/set/Set#delete (; 50 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) (local $2 i32) (local $3 i32) local.get $0 local.get $1 local.get $1 - call $~lib/internal/hash/hash64 + call $~lib/util/hash/hash64 call $~lib/set/Set#find local.tee $2 i32.eqz @@ -3920,7 +4060,7 @@ call $~lib/set/Set#rehash end ) - (func $std/set/test (; 45 ;) (type $FUNCSIG$v) + (func $std/set/test (; 51 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) call $~lib/set/Set#constructor @@ -3935,7 +4075,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -3955,7 +4095,7 @@ br $repeat|0 else i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -3970,7 +4110,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 12 i32.const 2 call $~lib/env/abort @@ -3989,7 +4129,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 16 i32.const 4 call $~lib/env/abort @@ -4009,7 +4149,7 @@ br $repeat|1 else i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -4024,7 +4164,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 2 call $~lib/env/abort @@ -4043,7 +4183,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 24 i32.const 4 call $~lib/env/abort @@ -4057,7 +4197,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 26 i32.const 4 call $~lib/env/abort @@ -4078,7 +4218,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 2 call $~lib/env/abort @@ -4096,7 +4236,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 4 call $~lib/env/abort @@ -4111,7 +4251,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 34 i32.const 4 call $~lib/env/abort @@ -4125,7 +4265,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -4146,7 +4286,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 2 call $~lib/env/abort @@ -4158,17 +4298,50 @@ i32.load offset=20 if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/set/test (; 46 ;) (type $FUNCSIG$v) + (func $~lib/set/Set#constructor (; 52 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + call $~lib/runtime/ALLOCATE + local.tee $0 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $0 + i32.const 8 + i32.sub + i32.const 10 + i32.store + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/set/Set#clear + local.get $0 + ) + (func $std/set/test (; 53 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) - call $~lib/set/Set#constructor + call $~lib/set/Set#constructor local.set $1 loop $repeat|0 local.get $0 @@ -4180,7 +4353,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -4200,7 +4373,7 @@ br $repeat|0 else i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -4215,7 +4388,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 12 i32.const 2 call $~lib/env/abort @@ -4234,7 +4407,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 16 i32.const 4 call $~lib/env/abort @@ -4254,7 +4427,7 @@ br $repeat|1 else i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -4269,7 +4442,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 2 call $~lib/env/abort @@ -4288,7 +4461,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 24 i32.const 4 call $~lib/env/abort @@ -4302,7 +4475,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 26 i32.const 4 call $~lib/env/abort @@ -4323,7 +4496,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 2 call $~lib/env/abort @@ -4341,7 +4514,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 4 call $~lib/env/abort @@ -4356,7 +4529,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 34 i32.const 4 call $~lib/env/abort @@ -4370,7 +4543,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -4391,7 +4564,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 2 call $~lib/env/abort @@ -4403,19 +4576,52 @@ i32.load offset=20 if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/internal/hash/HASH (; 47 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + (func $~lib/set/Set#constructor (; 54 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + call $~lib/runtime/ALLOCATE + local.tee $0 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $0 + i32.const 8 + i32.sub + i32.const 11 + i32.store + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/set/Set#clear + local.get $0 + ) + (func $~lib/util/hash/HASH (; 55 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) local.get $0 i32.reinterpret_f32 - call $~lib/internal/hash/hash32 + call $~lib/util/hash/hash32 ) - (func $~lib/set/Set#find (; 48 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 56 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -4425,7 +4631,7 @@ i32.const 2 i32.shl i32.add - i32.load offset=8 + i32.load local.set $2 loop $continue|0 local.get $2 @@ -4458,16 +4664,16 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 49 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/set/Set#has (; 57 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) local.get $0 local.get $1 local.get $1 - call $~lib/internal/hash/HASH + call $~lib/util/hash/HASH call $~lib/set/Set#find i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 50 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 58 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4481,7 +4687,6 @@ local.tee $2 i32.const 2 i32.shl - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $4 local.get $2 @@ -4492,13 +4697,10 @@ local.tee $6 i32.const 3 i32.shl - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 local.get $0 i32.load offset=8 - i32.const 8 - i32.add local.tee $2 local.get $0 i32.load offset=16 @@ -4507,8 +4709,6 @@ i32.add local.set $7 local.get $5 - i32.const 8 - i32.add local.set $3 loop $continue|0 local.get $2 @@ -4529,7 +4729,7 @@ local.get $2 f32.load i32.reinterpret_f32 - call $~lib/internal/hash/hash32 + call $~lib/util/hash/hash32 local.get $1 i32.and i32.const 2 @@ -4537,11 +4737,11 @@ local.get $4 i32.add local.tee $8 - i32.load offset=8 + i32.load i32.store offset=4 local.get $8 local.get $3 - i32.store offset=8 + i32.store local.get $3 i32.const 8 i32.add @@ -4571,14 +4771,14 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/set/Set#add (; 51 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32) + (func $~lib/set/Set#add (; 59 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32) (local $2 i32) (local $3 i32) (local $4 i32) local.get $0 local.get $1 local.get $1 - call $~lib/internal/hash/HASH + call $~lib/util/hash/HASH local.tee $4 call $~lib/set/Set#find i32.eqz @@ -4622,12 +4822,10 @@ i32.const 1 i32.add i32.store offset=16 - local.get $2 - i32.const 8 - i32.add local.get $3 i32.const 3 i32.shl + local.get $2 i32.add local.tee $2 local.get $1 @@ -4649,21 +4847,21 @@ i32.shl i32.add local.tee $3 - i32.load offset=8 + i32.load i32.store offset=4 local.get $3 local.get $2 - i32.store offset=8 + i32.store end ) - (func $~lib/set/Set#delete (; 52 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32) + (func $~lib/set/Set#delete (; 60 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32) (local $2 i32) (local $3 i32) local.get $0 local.get $1 local.get $1 i32.reinterpret_f32 - call $~lib/internal/hash/hash32 + call $~lib/util/hash/hash32 call $~lib/set/Set#find local.tee $2 i32.eqz @@ -4718,10 +4916,10 @@ call $~lib/set/Set#rehash end ) - (func $std/set/test (; 53 ;) (type $FUNCSIG$v) + (func $std/set/test (; 61 ;) (type $FUNCSIG$v) (local $0 f32) (local $1 i32) - call $~lib/set/Set#constructor + call $~lib/set/Set#constructor local.set $1 loop $repeat|0 local.get $0 @@ -4733,7 +4931,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -4753,7 +4951,7 @@ br $repeat|0 else i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -4768,7 +4966,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 12 i32.const 2 call $~lib/env/abort @@ -4787,7 +4985,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 16 i32.const 4 call $~lib/env/abort @@ -4807,7 +5005,7 @@ br $repeat|1 else i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -4822,7 +5020,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 2 call $~lib/env/abort @@ -4841,7 +5039,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 24 i32.const 4 call $~lib/env/abort @@ -4855,7 +5053,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 26 i32.const 4 call $~lib/env/abort @@ -4876,7 +5074,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 2 call $~lib/env/abort @@ -4894,7 +5092,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 4 call $~lib/env/abort @@ -4909,7 +5107,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 34 i32.const 4 call $~lib/env/abort @@ -4923,7 +5121,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -4944,7 +5142,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 2 call $~lib/env/abort @@ -4956,19 +5154,52 @@ i32.load offset=20 if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/internal/hash/HASH (; 54 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/set/Set#constructor (; 62 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + call $~lib/runtime/ALLOCATE + local.tee $0 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $0 + i32.const 8 + i32.sub + i32.const 12 + i32.store + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/set/Set#clear + local.get $0 + ) + (func $~lib/util/hash/HASH (; 63 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 i64.reinterpret_f64 - call $~lib/internal/hash/hash64 + call $~lib/util/hash/hash64 ) - (func $~lib/set/Set#find (; 55 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 64 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -4978,7 +5209,7 @@ i32.const 2 i32.shl i32.add - i32.load offset=8 + i32.load local.set $2 loop $continue|0 local.get $2 @@ -5011,16 +5242,16 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 56 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/set/Set#has (; 65 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) local.get $0 local.get $1 local.get $1 - call $~lib/internal/hash/HASH + call $~lib/util/hash/HASH call $~lib/set/Set#find i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 57 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 66 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5034,7 +5265,6 @@ local.tee $2 i32.const 2 i32.shl - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $4 local.get $2 @@ -5045,13 +5275,10 @@ local.tee $6 i32.const 4 i32.shl - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 local.get $0 i32.load offset=8 - i32.const 8 - i32.add local.tee $2 local.get $0 i32.load offset=16 @@ -5060,8 +5287,6 @@ i32.add local.set $7 local.get $5 - i32.const 8 - i32.add local.set $3 loop $continue|0 local.get $2 @@ -5082,7 +5307,7 @@ local.get $2 f64.load i64.reinterpret_f64 - call $~lib/internal/hash/hash64 + call $~lib/util/hash/hash64 local.get $1 i32.and i32.const 2 @@ -5090,11 +5315,11 @@ local.get $4 i32.add local.tee $8 - i32.load offset=8 + i32.load i32.store offset=8 local.get $8 local.get $3 - i32.store offset=8 + i32.store local.get $3 i32.const 16 i32.add @@ -5124,14 +5349,14 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/set/Set#add (; 58 ;) (type $FUNCSIG$vid) (param $0 i32) (param $1 f64) + (func $~lib/set/Set#add (; 67 ;) (type $FUNCSIG$vid) (param $0 i32) (param $1 f64) (local $2 i32) (local $3 i32) (local $4 i32) local.get $0 local.get $1 local.get $1 - call $~lib/internal/hash/HASH + call $~lib/util/hash/HASH local.tee $4 call $~lib/set/Set#find i32.eqz @@ -5175,12 +5400,10 @@ i32.const 1 i32.add i32.store offset=16 - local.get $2 - i32.const 8 - i32.add local.get $3 i32.const 4 i32.shl + local.get $2 i32.add local.tee $2 local.get $1 @@ -5202,21 +5425,21 @@ i32.shl i32.add local.tee $3 - i32.load offset=8 + i32.load i32.store offset=8 local.get $3 local.get $2 - i32.store offset=8 + i32.store end ) - (func $~lib/set/Set#delete (; 59 ;) (type $FUNCSIG$vid) (param $0 i32) (param $1 f64) + (func $~lib/set/Set#delete (; 68 ;) (type $FUNCSIG$vid) (param $0 i32) (param $1 f64) (local $2 i32) (local $3 i32) local.get $0 local.get $1 local.get $1 i64.reinterpret_f64 - call $~lib/internal/hash/hash64 + call $~lib/util/hash/hash64 call $~lib/set/Set#find local.tee $2 i32.eqz @@ -5271,10 +5494,10 @@ call $~lib/set/Set#rehash end ) - (func $std/set/test (; 60 ;) (type $FUNCSIG$v) + (func $std/set/test (; 69 ;) (type $FUNCSIG$v) (local $0 f64) (local $1 i32) - call $~lib/set/Set#constructor + call $~lib/set/Set#constructor local.set $1 loop $repeat|0 local.get $0 @@ -5286,7 +5509,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -5306,7 +5529,7 @@ br $repeat|0 else i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -5321,7 +5544,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 12 i32.const 2 call $~lib/env/abort @@ -5340,7 +5563,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 16 i32.const 4 call $~lib/env/abort @@ -5360,7 +5583,7 @@ br $repeat|1 else i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -5375,7 +5598,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 2 call $~lib/env/abort @@ -5394,7 +5617,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 24 i32.const 4 call $~lib/env/abort @@ -5408,7 +5631,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 26 i32.const 4 call $~lib/env/abort @@ -5429,7 +5652,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 2 call $~lib/env/abort @@ -5447,7 +5670,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 4 call $~lib/env/abort @@ -5462,7 +5685,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 34 i32.const 4 call $~lib/env/abort @@ -5476,7 +5699,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -5497,7 +5720,7 @@ i32.ne if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 2 call $~lib/env/abort @@ -5509,15 +5732,15 @@ i32.load offset=20 if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort unreachable end ) - (func $start (; 61 ;) (type $FUNCSIG$v) - i32.const 144 + (func $start (; 70 ;) (type $FUNCSIG$v) + i32.const 128 global.set $~lib/allocator/arena/startOffset global.get $~lib/allocator/arena/startOffset global.set $~lib/allocator/arena/offset @@ -5532,7 +5755,7 @@ call $std/set/test call $std/set/test ) - (func $null (; 62 ;) (type $FUNCSIG$v) + (func $null (; 71 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/set.untouched.wat b/tests/compiler/std/set.untouched.wat index 29f1bc64..fdca5899 100644 --- a/tests/compiler/std/set.untouched.wat +++ b/tests/compiler/std/set.untouched.wat @@ -2,10 +2,10 @@ (type $FUNCSIG$v (func)) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$vi (func (param i32))) - (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$vii (func (param i32 i32))) (type $FUNCSIG$iij (func (param i32 i64) (result i32))) (type $FUNCSIG$ij (func (param i64) (result i32))) @@ -21,118 +21,26 @@ (type $FUNCSIG$vid (func (param i32 f64))) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\13\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 56) "\1c\00\00\00~\00l\00i\00b\00/\00i\00n\00t\00e\00r\00n\00a\00l\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 120) "\n\00\00\00s\00t\00d\00/\00s\00e\00t\00.\00t\00s\00") + (data (i32.const 8) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") + (data (i32.const 48) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") + (data (i32.const 96) "\01\00\00\00\14\00\00\00s\00t\00d\00/\00s\00e\00t\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) + (global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0)) + (global $~lib/runtime/HEADER_SIZE i32 (i32.const 8)) + (global $~lib/runtime/HEADER_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 144)) + (global $~lib/runtime/MAX_BYTELENGTH i32 (i32.const 1073741816)) + (global $~lib/memory/HEAP_BASE i32 (i32.const 124)) (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 - 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 - ) - (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 $~lib/internal/arraybuffer/computeSize (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/ADJUST (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 1 i32.const 32 local.get $0 - i32.const 8 + global.get $~lib/runtime/HEADER_SIZE i32.add i32.const 1 i32.sub @@ -140,333 +48,439 @@ i32.sub i32.shl ) - (func $~lib/internal/arraybuffer/allocateUnsafe (; 5 ;) (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.get $0 - i32.const 1073741816 - i32.le_u - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 26 - i32.const 2 - call $~lib/env/abort - unreachable - end - block $~lib/memory/memory.allocate|inlined.0 (result i32) - local.get $0 - call $~lib/internal/arraybuffer/computeSize - local.set $2 - local.get $2 - call $~lib/allocator/arena/__memory_allocate - br $~lib/memory/memory.allocate|inlined.0 - end - local.set $1 - local.get $1 - local.get $0 - i32.store - local.get $1 - ) - (func $~lib/internal/memory/memset (; 6 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - local.get $2 - i32.eqz - if - return - end - local.get $0 - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.add - i32.const 1 - i32.sub - local.get $1 - i32.store8 - local.get $2 - i32.const 2 - i32.le_u - if - return - end - local.get $0 - i32.const 1 - i32.add - local.get $1 - i32.store8 - local.get $0 - i32.const 2 - i32.add - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.add - i32.const 2 - i32.sub - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.add - i32.const 3 - i32.sub - local.get $1 - i32.store8 - local.get $2 - i32.const 6 - i32.le_u - if - return - end - local.get $0 - i32.const 3 - i32.add - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.add - i32.const 4 - i32.sub - local.get $1 - i32.store8 - local.get $2 - i32.const 8 - i32.le_u - if - return - end - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.set $3 - local.get $0 - local.get $3 - i32.add - local.set $0 - local.get $2 - local.get $3 - i32.sub - local.set $2 - local.get $2 - i32.const -4 - i32.and - local.set $2 - i32.const -1 - i32.const 255 - i32.div_u - local.get $1 - i32.const 255 - i32.and - i32.mul - local.set $4 - local.get $0 - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 4 - i32.sub - local.get $4 - i32.store - local.get $2 - i32.const 8 - i32.le_u - if - return - end - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 12 - i32.sub - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 8 - i32.sub - local.get $4 - i32.store - local.get $2 - i32.const 24 - i32.le_u - if - return - end - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.store - local.get $0 - i32.const 16 - i32.add - local.get $4 - i32.store - local.get $0 - i32.const 20 - i32.add - local.get $4 - i32.store - local.get $0 - i32.const 24 - i32.add - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 28 - i32.sub - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 24 - i32.sub - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 20 - i32.sub - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.get $4 - i32.store - i32.const 24 - local.get $0 - i32.const 4 - i32.and - i32.add - local.set $3 - local.get $0 - local.get $3 - i32.add - local.set $0 - local.get $2 - local.get $3 - i32.sub - local.set $2 - local.get $4 - i64.extend_i32_u - local.get $4 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $5 - block $break|0 - loop $continue|0 - local.get $2 - i32.const 32 - i32.ge_u - if - block - local.get $0 - local.get $5 - i64.store - local.get $0 - i32.const 8 - i32.add - local.get $5 - i64.store - local.get $0 - i32.const 16 - i32.add - local.get $5 - i64.store - local.get $0 - i32.const 24 - i32.add - local.get $5 - i64.store - local.get $2 - i32.const 32 - i32.sub - local.set $2 - local.get $0 - i32.const 32 - i32.add - local.set $0 - end - br $continue|0 - end - end - end - ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 7 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) + 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 (; 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 - i32.const 1073741816 + 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/runtime/ASSERT_UNREGISTERED (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + global.get $~lib/memory/HEAP_BASE + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 16 + i32.const 172 + i32.const 2 + call $~lib/env/abort + unreachable + end + local.get $0 + global.get $~lib/runtime/HEADER_SIZE + i32.sub + i32.load + global.get $~lib/runtime/HEADER_MAGIC + i32.eq + i32.eqz + if + i32.const 0 + i32.const 16 + i32.const 173 + i32.const 2 + call $~lib/env/abort + unreachable + end + ) + (func $~lib/memory/memory.fill (; 5 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + block $~lib/util/memory/memset|inlined.0 + local.get $0 + local.set $3 + local.get $1 + local.set $4 + local.get $2 + local.set $5 + local.get $5 + i32.eqz + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $3 + local.get $4 + i32.store8 + local.get $3 + local.get $5 + i32.add + i32.const 1 + i32.sub + local.get $4 + i32.store8 + local.get $5 + i32.const 2 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $3 + i32.const 1 + i32.add + local.get $4 + i32.store8 + local.get $3 + i32.const 2 + i32.add + local.get $4 + i32.store8 + local.get $3 + local.get $5 + i32.add + i32.const 2 + i32.sub + local.get $4 + i32.store8 + local.get $3 + local.get $5 + i32.add + i32.const 3 + i32.sub + local.get $4 + i32.store8 + local.get $5 + i32.const 6 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $3 + i32.const 3 + i32.add + local.get $4 + i32.store8 + local.get $3 + local.get $5 + i32.add + i32.const 4 + i32.sub + local.get $4 + i32.store8 + local.get $5 + i32.const 8 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + i32.const 0 + local.get $3 + i32.sub + i32.const 3 + i32.and + local.set $6 + local.get $3 + local.get $6 + i32.add + local.set $3 + local.get $5 + local.get $6 + i32.sub + local.set $5 + local.get $5 + i32.const -4 + i32.and + local.set $5 + i32.const -1 + i32.const 255 + i32.div_u + local.get $4 + i32.const 255 + i32.and + i32.mul + local.set $7 + local.get $3 + local.get $7 + i32.store + local.get $3 + local.get $5 + i32.add + i32.const 4 + i32.sub + local.get $7 + i32.store + local.get $5 + i32.const 8 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $3 + i32.const 4 + i32.add + local.get $7 + i32.store + local.get $3 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $3 + local.get $5 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $3 + local.get $5 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store + local.get $5 + i32.const 24 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $3 + i32.const 12 + i32.add + local.get $7 + i32.store + local.get $3 + i32.const 16 + i32.add + local.get $7 + i32.store + local.get $3 + i32.const 20 + i32.add + local.get $7 + i32.store + local.get $3 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $3 + local.get $5 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $3 + local.get $5 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $3 + local.get $5 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $3 + local.get $5 + i32.add + i32.const 16 + i32.sub + local.get $7 + i32.store + i32.const 24 + local.get $3 + i32.const 4 + i32.and + i32.add + local.set $6 + local.get $3 + local.get $6 + i32.add + local.set $3 + local.get $5 + local.get $6 + i32.sub + local.set $5 + local.get $7 + i64.extend_i32_u + local.get $7 + i64.extend_i32_u + i64.const 32 + i64.shl + i64.or + local.set $8 + block $break|0 + loop $continue|0 + local.get $5 + i32.const 32 + i32.ge_u + if + block + local.get $3 + local.get $8 + i64.store + local.get $3 + i32.const 8 + i32.add + local.get $8 + i64.store + local.get $3 + i32.const 16 + i32.add + local.get $8 + i64.store + local.get $3 + i32.const 24 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 32 + i32.sub + local.set $5 + local.get $3 + i32.const 32 + i32.add + local.set $3 + end + br $continue|0 + end + end + end + end + ) + (func $~lib/arraybuffer/ArrayBuffer#constructor (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + global.get $~lib/runtime/MAX_BYTELENGTH i32.gt_u if i32.const 0 - i32.const 8 - i32.const 47 - i32.const 40 + i32.const 56 + i32.const 24 + i32.const 43 call $~lib/env/abort unreachable end local.get $1 - call $~lib/internal/arraybuffer/allocateUnsafe - local.set $3 + call $~lib/runtime/ALLOCATE + local.set $2 local.get $2 i32.const 0 - i32.ne - i32.eqz - if + local.get $1 + call $~lib/memory/memory.fill + block $~lib/runtime/REGISTER|inlined.0 (result i32) + local.get $2 + local.set $3 + local.get $3 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $3 + global.get $~lib/runtime/HEADER_SIZE + i32.sub + i32.const 3 + i32.store local.get $3 - i32.const 8 - i32.add - local.set $4 - i32.const 0 - local.set $5 - local.get $1 - local.set $6 - local.get $4 - local.get $5 - local.get $6 - call $~lib/internal/memory/memset end - local.get $3 ) - (func $~lib/set/Set#clear (; 8 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/set/Set#clear (; 7 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 0 i32.const 16 - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store local.get $0 @@ -477,7 +491,6 @@ local.get $0 i32.const 0 i32.const 32 - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store offset=8 local.get $0 @@ -490,13 +503,25 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) block (result i32) local.get $0 i32.eqz if - i32.const 24 - call $~lib/memory/memory.allocate + block $~lib/runtime/REGISTER>|inlined.0 (result i32) + i32.const 24 + call $~lib/runtime/ALLOCATE + local.set $1 + local.get $1 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $1 + global.get $~lib/runtime/HEADER_SIZE + i32.sub + i32.const 2 + i32.store + local.get $1 + end local.set $0 end local.get $0 @@ -522,23 +547,23 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/internal/hash/hash8 (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hash8 (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const -2128831035 local.get $0 i32.xor i32.const 16777619 i32.mul ) - (func $~lib/internal/hash/HASH (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/HASH (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 24 i32.shl i32.const 24 i32.shr_s - call $~lib/internal/hash/hash8 + call $~lib/util/hash/hash8 return ) - (func $~lib/set/Set#find (; 12 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 11 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -550,7 +575,7 @@ i32.const 4 i32.mul i32.add - i32.load offset=8 + i32.load local.set $3 block $break|0 loop $continue|0 @@ -593,16 +618,16 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 - call $~lib/internal/hash/HASH + call $~lib/util/hash/HASH call $~lib/set/Set#find i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 14 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 13 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -622,7 +647,6 @@ local.get $2 i32.const 4 i32.mul - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $3 local.get $2 @@ -637,13 +661,10 @@ i32.const 8 end i32.mul - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 local.get $0 i32.load offset=8 - i32.const 8 - i32.add local.set $6 local.get $6 local.get $0 @@ -655,8 +676,6 @@ i32.add local.set $7 local.get $5 - i32.const 8 - i32.add local.set $8 block $break|0 loop $continue|0 @@ -679,13 +698,13 @@ local.get $9 i32.load8_s i32.store8 - block $~lib/internal/hash/HASH|inlined.0 (result i32) + block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $9 i32.load8_s local.set $11 local.get $11 - call $~lib/internal/hash/hash8 - br $~lib/internal/hash/HASH|inlined.0 + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.0 end local.get $1 i32.and @@ -698,11 +717,11 @@ local.set $12 local.get $10 local.get $12 - i32.load offset=8 + i32.load i32.store offset=4 local.get $12 local.get $8 - i32.store offset=8 + i32.store local.get $8 block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) i32.const 8 @@ -738,13 +757,13 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/set/Set#add (; 15 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (; 14 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) local.get $1 - call $~lib/internal/hash/HASH + call $~lib/util/hash/HASH local.set $2 local.get $0 local.get $1 @@ -787,8 +806,6 @@ i32.load offset=8 local.set $4 local.get $4 - i32.const 8 - i32.add block (result i32) local.get $0 local.get $0 @@ -826,25 +843,25 @@ local.set $5 local.get $3 local.get $5 - i32.load offset=8 + i32.load i32.store offset=4 local.get $5 local.get $3 - i32.store offset=8 + i32.store end ) - (func $~lib/set/Set#get:size (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#get:size (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/set/Set#delete (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#delete (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.1 (result i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $2 local.get $2 @@ -852,8 +869,8 @@ i32.shl i32.const 24 i32.shr_s - call $~lib/internal/hash/hash8 - br $~lib/internal/hash/HASH|inlined.1 + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.1 end call $~lib/set/Set#find local.set $3 @@ -914,7 +931,7 @@ end i32.const 1 ) - (func $std/set/test (; 18 ;) (type $FUNCSIG$v) + (func $std/set/test (; 17 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -937,7 +954,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -952,7 +969,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -975,7 +992,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 12 i32.const 2 call $~lib/env/abort @@ -997,7 +1014,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 16 i32.const 4 call $~lib/env/abort @@ -1012,7 +1029,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -1035,7 +1052,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 2 call $~lib/env/abort @@ -1057,7 +1074,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 24 i32.const 4 call $~lib/env/abort @@ -1074,7 +1091,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 26 i32.const 4 call $~lib/env/abort @@ -1097,7 +1114,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 2 call $~lib/env/abort @@ -1120,7 +1137,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 4 call $~lib/env/abort @@ -1135,7 +1152,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 34 i32.const 4 call $~lib/env/abort @@ -1152,7 +1169,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -1175,7 +1192,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 2 call $~lib/env/abort @@ -1190,18 +1207,17 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/set/Set#clear (; 19 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/set/Set#clear (; 18 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 0 i32.const 16 - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store local.get $0 @@ -1212,7 +1228,6 @@ local.get $0 i32.const 0 i32.const 32 - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store offset=8 local.get $0 @@ -1225,13 +1240,25 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) block (result i32) local.get $0 i32.eqz if - i32.const 24 - call $~lib/memory/memory.allocate + block $~lib/runtime/REGISTER>|inlined.0 (result i32) + i32.const 24 + call $~lib/runtime/ALLOCATE + local.set $1 + local.get $1 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $1 + global.get $~lib/runtime/HEADER_SIZE + i32.sub + i32.const 4 + i32.store + local.get $1 + end local.set $0 end local.get $0 @@ -1257,14 +1284,14 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/internal/hash/HASH (; 21 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/HASH (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 255 i32.and - call $~lib/internal/hash/hash8 + call $~lib/util/hash/hash8 return ) - (func $~lib/set/Set#find (; 22 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 21 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -1276,7 +1303,7 @@ i32.const 4 i32.mul i32.add - i32.load offset=8 + i32.load local.set $3 block $break|0 loop $continue|0 @@ -1317,16 +1344,16 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 - call $~lib/internal/hash/HASH + call $~lib/util/hash/HASH call $~lib/set/Set#find i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 24 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 23 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1346,7 +1373,6 @@ local.get $2 i32.const 4 i32.mul - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $3 local.get $2 @@ -1361,13 +1387,10 @@ i32.const 8 end i32.mul - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 local.get $0 i32.load offset=8 - i32.const 8 - i32.add local.set $6 local.get $6 local.get $0 @@ -1379,8 +1402,6 @@ i32.add local.set $7 local.get $5 - i32.const 8 - i32.add local.set $8 block $break|0 loop $continue|0 @@ -1403,13 +1424,13 @@ local.get $9 i32.load8_u i32.store8 - block $~lib/internal/hash/HASH|inlined.0 (result i32) + block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $9 i32.load8_u local.set $11 local.get $11 - call $~lib/internal/hash/hash8 - br $~lib/internal/hash/HASH|inlined.0 + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.0 end local.get $1 i32.and @@ -1422,11 +1443,11 @@ local.set $12 local.get $10 local.get $12 - i32.load offset=8 + i32.load i32.store offset=4 local.get $12 local.get $8 - i32.store offset=8 + i32.store local.get $8 block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) i32.const 8 @@ -1462,13 +1483,13 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/set/Set#add (; 25 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (; 24 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) local.get $1 - call $~lib/internal/hash/HASH + call $~lib/util/hash/HASH local.set $2 local.get $0 local.get $1 @@ -1511,8 +1532,6 @@ i32.load offset=8 local.set $4 local.get $4 - i32.const 8 - i32.add block (result i32) local.get $0 local.get $0 @@ -1550,32 +1569,32 @@ local.set $5 local.get $3 local.get $5 - i32.load offset=8 + i32.load i32.store offset=4 local.get $5 local.get $3 - i32.store offset=8 + i32.store end ) - (func $~lib/set/Set#get:size (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#get:size (; 25 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/set/Set#delete (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#delete (; 26 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.1 (result i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $2 local.get $2 i32.const 255 i32.and - call $~lib/internal/hash/hash8 - br $~lib/internal/hash/HASH|inlined.1 + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.1 end call $~lib/set/Set#find local.set $3 @@ -1636,7 +1655,7 @@ end i32.const 1 ) - (func $std/set/test (; 28 ;) (type $FUNCSIG$v) + (func $std/set/test (; 27 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -1659,7 +1678,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -1674,7 +1693,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -1697,7 +1716,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 12 i32.const 2 call $~lib/env/abort @@ -1719,7 +1738,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 16 i32.const 4 call $~lib/env/abort @@ -1734,7 +1753,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -1757,7 +1776,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 2 call $~lib/env/abort @@ -1779,7 +1798,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 24 i32.const 4 call $~lib/env/abort @@ -1796,7 +1815,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 26 i32.const 4 call $~lib/env/abort @@ -1819,7 +1838,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 2 call $~lib/env/abort @@ -1842,7 +1861,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 4 call $~lib/env/abort @@ -1857,7 +1876,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 34 i32.const 4 call $~lib/env/abort @@ -1874,7 +1893,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -1897,7 +1916,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 2 call $~lib/env/abort @@ -1912,18 +1931,17 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/set/Set#clear (; 29 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/set/Set#clear (; 28 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 0 i32.const 16 - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store local.get $0 @@ -1934,7 +1952,6 @@ local.get $0 i32.const 0 i32.const 32 - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store offset=8 local.get $0 @@ -1947,13 +1964,25 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 30 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 29 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) block (result i32) local.get $0 i32.eqz if - i32.const 24 - call $~lib/memory/memory.allocate + block $~lib/runtime/REGISTER>|inlined.0 (result i32) + i32.const 24 + call $~lib/runtime/ALLOCATE + local.set $1 + local.get $1 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $1 + global.get $~lib/runtime/HEADER_SIZE + i32.sub + i32.const 5 + i32.store + local.get $1 + end local.set $0 end local.get $0 @@ -1979,7 +2008,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/internal/hash/hash16 (; 31 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hash16 (; 30 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) i32.const -2128831035 local.set $1 @@ -2001,16 +2030,16 @@ local.set $1 local.get $1 ) - (func $~lib/internal/hash/HASH (; 32 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/HASH (; 31 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.shl i32.const 16 i32.shr_s - call $~lib/internal/hash/hash16 + call $~lib/util/hash/hash16 return ) - (func $~lib/set/Set#find (; 33 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 32 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -2022,7 +2051,7 @@ i32.const 4 i32.mul i32.add - i32.load offset=8 + i32.load local.set $3 block $break|0 loop $continue|0 @@ -2065,16 +2094,16 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 34 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 - call $~lib/internal/hash/HASH + call $~lib/util/hash/HASH call $~lib/set/Set#find i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 35 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 34 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2094,7 +2123,6 @@ local.get $2 i32.const 4 i32.mul - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $3 local.get $2 @@ -2109,13 +2137,10 @@ i32.const 8 end i32.mul - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 local.get $0 i32.load offset=8 - i32.const 8 - i32.add local.set $6 local.get $6 local.get $0 @@ -2127,8 +2152,6 @@ i32.add local.set $7 local.get $5 - i32.const 8 - i32.add local.set $8 block $break|0 loop $continue|0 @@ -2151,13 +2174,13 @@ local.get $9 i32.load16_s i32.store16 - block $~lib/internal/hash/HASH|inlined.0 (result i32) + block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $9 i32.load16_s local.set $11 local.get $11 - call $~lib/internal/hash/hash16 - br $~lib/internal/hash/HASH|inlined.0 + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.0 end local.get $1 i32.and @@ -2170,11 +2193,11 @@ local.set $12 local.get $10 local.get $12 - i32.load offset=8 + i32.load i32.store offset=4 local.get $12 local.get $8 - i32.store offset=8 + i32.store local.get $8 block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) i32.const 8 @@ -2210,13 +2233,13 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/set/Set#add (; 36 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (; 35 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) local.get $1 - call $~lib/internal/hash/HASH + call $~lib/util/hash/HASH local.set $2 local.get $0 local.get $1 @@ -2259,8 +2282,6 @@ i32.load offset=8 local.set $4 local.get $4 - i32.const 8 - i32.add block (result i32) local.get $0 local.get $0 @@ -2298,25 +2319,25 @@ local.set $5 local.get $3 local.get $5 - i32.load offset=8 + i32.load i32.store offset=4 local.get $5 local.get $3 - i32.store offset=8 + i32.store end ) - (func $~lib/set/Set#get:size (; 37 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#get:size (; 36 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/set/Set#delete (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#delete (; 37 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.1 (result i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $2 local.get $2 @@ -2324,8 +2345,8 @@ i32.shl i32.const 16 i32.shr_s - call $~lib/internal/hash/hash16 - br $~lib/internal/hash/HASH|inlined.1 + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.1 end call $~lib/set/Set#find local.set $3 @@ -2386,7 +2407,7 @@ end i32.const 1 ) - (func $std/set/test (; 39 ;) (type $FUNCSIG$v) + (func $std/set/test (; 38 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -2409,7 +2430,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -2424,7 +2445,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -2447,7 +2468,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 12 i32.const 2 call $~lib/env/abort @@ -2469,7 +2490,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 16 i32.const 4 call $~lib/env/abort @@ -2484,7 +2505,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -2507,7 +2528,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 2 call $~lib/env/abort @@ -2529,7 +2550,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 24 i32.const 4 call $~lib/env/abort @@ -2546,7 +2567,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 26 i32.const 4 call $~lib/env/abort @@ -2569,7 +2590,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 2 call $~lib/env/abort @@ -2592,7 +2613,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 4 call $~lib/env/abort @@ -2607,7 +2628,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 34 i32.const 4 call $~lib/env/abort @@ -2624,7 +2645,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -2647,7 +2668,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 2 call $~lib/env/abort @@ -2662,18 +2683,17 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/set/Set#clear (; 40 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/set/Set#clear (; 39 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 0 i32.const 16 - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store local.get $0 @@ -2684,7 +2704,6 @@ local.get $0 i32.const 0 i32.const 32 - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store offset=8 local.get $0 @@ -2697,13 +2716,25 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 41 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 40 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) block (result i32) local.get $0 i32.eqz if - i32.const 24 - call $~lib/memory/memory.allocate + block $~lib/runtime/REGISTER>|inlined.0 (result i32) + i32.const 24 + call $~lib/runtime/ALLOCATE + local.set $1 + local.get $1 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $1 + global.get $~lib/runtime/HEADER_SIZE + i32.sub + i32.const 6 + i32.store + local.get $1 + end local.set $0 end local.get $0 @@ -2729,14 +2760,14 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/internal/hash/HASH (; 42 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/HASH (; 41 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 65535 i32.and - call $~lib/internal/hash/hash16 + call $~lib/util/hash/hash16 return ) - (func $~lib/set/Set#find (; 43 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 42 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -2748,7 +2779,7 @@ i32.const 4 i32.mul i32.add - i32.load offset=8 + i32.load local.set $3 block $break|0 loop $continue|0 @@ -2789,16 +2820,16 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 44 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 43 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 - call $~lib/internal/hash/HASH + call $~lib/util/hash/HASH call $~lib/set/Set#find i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 45 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 44 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2818,7 +2849,6 @@ local.get $2 i32.const 4 i32.mul - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $3 local.get $2 @@ -2833,13 +2863,10 @@ i32.const 8 end i32.mul - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 local.get $0 i32.load offset=8 - i32.const 8 - i32.add local.set $6 local.get $6 local.get $0 @@ -2851,8 +2878,6 @@ i32.add local.set $7 local.get $5 - i32.const 8 - i32.add local.set $8 block $break|0 loop $continue|0 @@ -2875,13 +2900,13 @@ local.get $9 i32.load16_u i32.store16 - block $~lib/internal/hash/HASH|inlined.0 (result i32) + block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $9 i32.load16_u local.set $11 local.get $11 - call $~lib/internal/hash/hash16 - br $~lib/internal/hash/HASH|inlined.0 + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.0 end local.get $1 i32.and @@ -2894,11 +2919,11 @@ local.set $12 local.get $10 local.get $12 - i32.load offset=8 + i32.load i32.store offset=4 local.get $12 local.get $8 - i32.store offset=8 + i32.store local.get $8 block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) i32.const 8 @@ -2934,13 +2959,13 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/set/Set#add (; 46 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (; 45 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) local.get $1 - call $~lib/internal/hash/HASH + call $~lib/util/hash/HASH local.set $2 local.get $0 local.get $1 @@ -2983,8 +3008,6 @@ i32.load offset=8 local.set $4 local.get $4 - i32.const 8 - i32.add block (result i32) local.get $0 local.get $0 @@ -3022,32 +3045,32 @@ local.set $5 local.get $3 local.get $5 - i32.load offset=8 + i32.load i32.store offset=4 local.get $5 local.get $3 - i32.store offset=8 + i32.store end ) - (func $~lib/set/Set#get:size (; 47 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#get:size (; 46 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/set/Set#delete (; 48 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#delete (; 47 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.1 (result i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $2 local.get $2 i32.const 65535 i32.and - call $~lib/internal/hash/hash16 - br $~lib/internal/hash/HASH|inlined.1 + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.1 end call $~lib/set/Set#find local.set $3 @@ -3108,7 +3131,7 @@ end i32.const 1 ) - (func $std/set/test (; 49 ;) (type $FUNCSIG$v) + (func $std/set/test (; 48 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -3131,7 +3154,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -3146,7 +3169,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -3169,7 +3192,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 12 i32.const 2 call $~lib/env/abort @@ -3191,7 +3214,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 16 i32.const 4 call $~lib/env/abort @@ -3206,7 +3229,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -3229,7 +3252,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 2 call $~lib/env/abort @@ -3251,7 +3274,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 24 i32.const 4 call $~lib/env/abort @@ -3268,7 +3291,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 26 i32.const 4 call $~lib/env/abort @@ -3291,7 +3314,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 2 call $~lib/env/abort @@ -3314,7 +3337,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 4 call $~lib/env/abort @@ -3329,7 +3352,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 34 i32.const 4 call $~lib/env/abort @@ -3346,7 +3369,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -3369,7 +3392,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 2 call $~lib/env/abort @@ -3384,18 +3407,17 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/set/Set#clear (; 50 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/set/Set#clear (; 49 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 0 i32.const 16 - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store local.get $0 @@ -3406,7 +3428,6 @@ local.get $0 i32.const 0 i32.const 32 - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store offset=8 local.get $0 @@ -3419,13 +3440,25 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 51 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 50 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) block (result i32) local.get $0 i32.eqz if - i32.const 24 - call $~lib/memory/memory.allocate + block $~lib/runtime/REGISTER>|inlined.0 (result i32) + i32.const 24 + call $~lib/runtime/ALLOCATE + local.set $1 + local.get $1 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $1 + global.get $~lib/runtime/HEADER_SIZE + i32.sub + i32.const 7 + i32.store + local.get $1 + end local.set $0 end local.get $0 @@ -3451,7 +3484,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/internal/hash/hash32 (; 52 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hash32 (; 51 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) i32.const -2128831035 local.set $1 @@ -3493,12 +3526,12 @@ local.set $1 local.get $1 ) - (func $~lib/internal/hash/HASH (; 53 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/HASH (; 52 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - call $~lib/internal/hash/hash32 + call $~lib/util/hash/hash32 return ) - (func $~lib/set/Set#find (; 54 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 53 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -3510,7 +3543,7 @@ i32.const 4 i32.mul i32.add - i32.load offset=8 + i32.load local.set $3 block $break|0 loop $continue|0 @@ -3549,16 +3582,16 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 55 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 54 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 - call $~lib/internal/hash/HASH + call $~lib/util/hash/HASH call $~lib/set/Set#find i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 56 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 55 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3578,7 +3611,6 @@ local.get $2 i32.const 4 i32.mul - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $3 local.get $2 @@ -3593,13 +3625,10 @@ i32.const 8 end i32.mul - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 local.get $0 i32.load offset=8 - i32.const 8 - i32.add local.set $6 local.get $6 local.get $0 @@ -3611,8 +3640,6 @@ i32.add local.set $7 local.get $5 - i32.const 8 - i32.add local.set $8 block $break|0 loop $continue|0 @@ -3635,13 +3662,13 @@ local.get $9 i32.load i32.store - block $~lib/internal/hash/HASH|inlined.0 (result i32) + block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $9 i32.load local.set $11 local.get $11 - call $~lib/internal/hash/hash32 - br $~lib/internal/hash/HASH|inlined.0 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.0 end local.get $1 i32.and @@ -3654,11 +3681,11 @@ local.set $12 local.get $10 local.get $12 - i32.load offset=8 + i32.load i32.store offset=4 local.get $12 local.get $8 - i32.store offset=8 + i32.store local.get $8 block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) i32.const 8 @@ -3694,13 +3721,13 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/set/Set#add (; 57 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (; 56 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) local.get $1 - call $~lib/internal/hash/HASH + call $~lib/util/hash/HASH local.set $2 local.get $0 local.get $1 @@ -3743,8 +3770,6 @@ i32.load offset=8 local.set $4 local.get $4 - i32.const 8 - i32.add block (result i32) local.get $0 local.get $0 @@ -3782,30 +3807,30 @@ local.set $5 local.get $3 local.get $5 - i32.load offset=8 + i32.load i32.store offset=4 local.get $5 local.get $3 - i32.store offset=8 + i32.store end ) - (func $~lib/set/Set#get:size (; 58 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#get:size (; 57 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/set/Set#delete (; 59 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#delete (; 58 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.1 (result i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $2 local.get $2 - call $~lib/internal/hash/hash32 - br $~lib/internal/hash/HASH|inlined.1 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.1 end call $~lib/set/Set#find local.set $3 @@ -3866,7 +3891,7 @@ end i32.const 1 ) - (func $std/set/test (; 60 ;) (type $FUNCSIG$v) + (func $std/set/test (; 59 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -3889,7 +3914,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -3904,7 +3929,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -3927,7 +3952,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 12 i32.const 2 call $~lib/env/abort @@ -3949,7 +3974,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 16 i32.const 4 call $~lib/env/abort @@ -3964,7 +3989,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -3987,7 +4012,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 2 call $~lib/env/abort @@ -4009,7 +4034,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 24 i32.const 4 call $~lib/env/abort @@ -4026,7 +4051,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 26 i32.const 4 call $~lib/env/abort @@ -4049,7 +4074,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 2 call $~lib/env/abort @@ -4072,7 +4097,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 4 call $~lib/env/abort @@ -4087,7 +4112,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 34 i32.const 4 call $~lib/env/abort @@ -4104,7 +4129,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -4127,7 +4152,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 2 call $~lib/env/abort @@ -4142,18 +4167,17 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/set/Set#clear (; 61 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/set/Set#clear (; 60 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 0 i32.const 16 - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store local.get $0 @@ -4164,7 +4188,6 @@ local.get $0 i32.const 0 i32.const 32 - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store offset=8 local.get $0 @@ -4177,13 +4200,25 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 62 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 61 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) block (result i32) local.get $0 i32.eqz if - i32.const 24 - call $~lib/memory/memory.allocate + block $~lib/runtime/REGISTER>|inlined.0 (result i32) + i32.const 24 + call $~lib/runtime/ALLOCATE + local.set $1 + local.get $1 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $1 + global.get $~lib/runtime/HEADER_SIZE + i32.sub + i32.const 8 + i32.store + local.get $1 + end local.set $0 end local.get $0 @@ -4209,12 +4244,12 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/internal/hash/HASH (; 63 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/HASH (; 62 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - call $~lib/internal/hash/hash32 + call $~lib/util/hash/hash32 return ) - (func $~lib/set/Set#find (; 64 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 63 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -4226,7 +4261,7 @@ i32.const 4 i32.mul i32.add - i32.load offset=8 + i32.load local.set $3 block $break|0 loop $continue|0 @@ -4265,16 +4300,16 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 65 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 64 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 - call $~lib/internal/hash/HASH + call $~lib/util/hash/HASH call $~lib/set/Set#find i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 66 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 65 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4294,7 +4329,6 @@ local.get $2 i32.const 4 i32.mul - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $3 local.get $2 @@ -4309,13 +4343,10 @@ i32.const 8 end i32.mul - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 local.get $0 i32.load offset=8 - i32.const 8 - i32.add local.set $6 local.get $6 local.get $0 @@ -4327,8 +4358,6 @@ i32.add local.set $7 local.get $5 - i32.const 8 - i32.add local.set $8 block $break|0 loop $continue|0 @@ -4351,13 +4380,13 @@ local.get $9 i32.load i32.store - block $~lib/internal/hash/HASH|inlined.0 (result i32) + block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $9 i32.load local.set $11 local.get $11 - call $~lib/internal/hash/hash32 - br $~lib/internal/hash/HASH|inlined.0 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.0 end local.get $1 i32.and @@ -4370,11 +4399,11 @@ local.set $12 local.get $10 local.get $12 - i32.load offset=8 + i32.load i32.store offset=4 local.get $12 local.get $8 - i32.store offset=8 + i32.store local.get $8 block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) i32.const 8 @@ -4410,13 +4439,13 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/set/Set#add (; 67 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (; 66 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) local.get $1 - call $~lib/internal/hash/HASH + call $~lib/util/hash/HASH local.set $2 local.get $0 local.get $1 @@ -4459,8 +4488,6 @@ i32.load offset=8 local.set $4 local.get $4 - i32.const 8 - i32.add block (result i32) local.get $0 local.get $0 @@ -4498,30 +4525,30 @@ local.set $5 local.get $3 local.get $5 - i32.load offset=8 + i32.load i32.store offset=4 local.get $5 local.get $3 - i32.store offset=8 + i32.store end ) - (func $~lib/set/Set#get:size (; 68 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#get:size (; 67 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/set/Set#delete (; 69 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#delete (; 68 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.1 (result i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $2 local.get $2 - call $~lib/internal/hash/hash32 - br $~lib/internal/hash/HASH|inlined.1 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.1 end call $~lib/set/Set#find local.set $3 @@ -4582,7 +4609,7 @@ end i32.const 1 ) - (func $std/set/test (; 70 ;) (type $FUNCSIG$v) + (func $std/set/test (; 69 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -4605,7 +4632,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -4620,7 +4647,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -4643,7 +4670,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 12 i32.const 2 call $~lib/env/abort @@ -4665,7 +4692,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 16 i32.const 4 call $~lib/env/abort @@ -4680,7 +4707,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -4703,7 +4730,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 2 call $~lib/env/abort @@ -4725,7 +4752,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 24 i32.const 4 call $~lib/env/abort @@ -4742,7 +4769,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 26 i32.const 4 call $~lib/env/abort @@ -4765,7 +4792,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 2 call $~lib/env/abort @@ -4788,7 +4815,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 4 call $~lib/env/abort @@ -4803,7 +4830,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 34 i32.const 4 call $~lib/env/abort @@ -4820,7 +4847,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -4843,7 +4870,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 2 call $~lib/env/abort @@ -4858,18 +4885,17 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/set/Set#clear (; 71 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/set/Set#clear (; 70 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 0 i32.const 16 - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store local.get $0 @@ -4880,7 +4906,6 @@ local.get $0 i32.const 0 i32.const 64 - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store offset=8 local.get $0 @@ -4893,13 +4918,25 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 72 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 71 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) block (result i32) local.get $0 i32.eqz if - i32.const 24 - call $~lib/memory/memory.allocate + block $~lib/runtime/REGISTER>|inlined.0 (result i32) + i32.const 24 + call $~lib/runtime/ALLOCATE + local.set $1 + local.get $1 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $1 + global.get $~lib/runtime/HEADER_SIZE + i32.sub + i32.const 9 + i32.store + local.get $1 + end local.set $0 end local.get $0 @@ -4925,7 +4962,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/internal/hash/hash64 (; 73 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/hash/hash64 (; 72 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5013,12 +5050,12 @@ local.set $3 local.get $3 ) - (func $~lib/internal/hash/HASH (; 74 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/hash/HASH (; 73 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) local.get $0 - call $~lib/internal/hash/hash64 + call $~lib/util/hash/hash64 return ) - (func $~lib/set/Set#find (; 75 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 74 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -5030,7 +5067,7 @@ i32.const 4 i32.mul i32.add - i32.load offset=8 + i32.load local.set $3 block $break|0 loop $continue|0 @@ -5069,16 +5106,16 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 76 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/set/Set#has (; 75 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) local.get $0 local.get $1 local.get $1 - call $~lib/internal/hash/HASH + call $~lib/util/hash/HASH call $~lib/set/Set#find i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 77 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 76 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5099,7 +5136,6 @@ local.get $2 i32.const 4 i32.mul - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $3 local.get $2 @@ -5114,13 +5150,10 @@ i32.const 16 end i32.mul - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 local.get $0 i32.load offset=8 - i32.const 8 - i32.add local.set $6 local.get $6 local.get $0 @@ -5132,8 +5165,6 @@ i32.add local.set $7 local.get $5 - i32.const 8 - i32.add local.set $8 block $break|0 loop $continue|0 @@ -5156,13 +5187,13 @@ local.get $9 i64.load i64.store - block $~lib/internal/hash/HASH|inlined.0 (result i32) + block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $9 i64.load local.set $11 local.get $11 - call $~lib/internal/hash/hash64 - br $~lib/internal/hash/HASH|inlined.0 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.0 end local.get $1 i32.and @@ -5175,11 +5206,11 @@ local.set $13 local.get $10 local.get $13 - i32.load offset=8 + i32.load i32.store offset=8 local.get $13 local.get $8 - i32.store offset=8 + i32.store local.get $8 block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) i32.const 16 @@ -5215,13 +5246,13 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/set/Set#add (; 78 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) + (func $~lib/set/Set#add (; 77 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) local.get $1 - call $~lib/internal/hash/HASH + call $~lib/util/hash/HASH local.set $2 local.get $0 local.get $1 @@ -5264,8 +5295,6 @@ i32.load offset=8 local.set $4 local.get $4 - i32.const 8 - i32.add block (result i32) local.get $0 local.get $0 @@ -5303,18 +5332,18 @@ local.set $5 local.get $3 local.get $5 - i32.load offset=8 + i32.load i32.store offset=8 local.get $5 local.get $3 - i32.store offset=8 + i32.store end ) - (func $~lib/set/Set#get:size (; 79 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#get:size (; 78 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/set/Set#delete (; 80 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/set/Set#delete (; 79 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) (local $3 i32) (local $4 i32) @@ -5322,12 +5351,12 @@ (local $6 i32) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.1 (result i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $2 local.get $2 - call $~lib/internal/hash/hash64 - br $~lib/internal/hash/HASH|inlined.1 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.1 end call $~lib/set/Set#find local.set $3 @@ -5388,7 +5417,7 @@ end i32.const 1 ) - (func $std/set/test (; 81 ;) (type $FUNCSIG$v) + (func $std/set/test (; 80 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i64) i32.const 0 @@ -5411,7 +5440,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -5426,7 +5455,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -5449,7 +5478,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 12 i32.const 2 call $~lib/env/abort @@ -5471,7 +5500,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 16 i32.const 4 call $~lib/env/abort @@ -5486,7 +5515,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -5509,7 +5538,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 2 call $~lib/env/abort @@ -5531,7 +5560,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 24 i32.const 4 call $~lib/env/abort @@ -5548,7 +5577,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 26 i32.const 4 call $~lib/env/abort @@ -5571,7 +5600,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 2 call $~lib/env/abort @@ -5594,7 +5623,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 4 call $~lib/env/abort @@ -5609,7 +5638,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 34 i32.const 4 call $~lib/env/abort @@ -5626,7 +5655,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -5649,7 +5678,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 2 call $~lib/env/abort @@ -5664,18 +5693,17 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/set/Set#clear (; 82 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/set/Set#clear (; 81 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 0 i32.const 16 - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store local.get $0 @@ -5686,7 +5714,6 @@ local.get $0 i32.const 0 i32.const 64 - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store offset=8 local.get $0 @@ -5699,13 +5726,25 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 83 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 82 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) block (result i32) local.get $0 i32.eqz if - i32.const 24 - call $~lib/memory/memory.allocate + block $~lib/runtime/REGISTER>|inlined.0 (result i32) + i32.const 24 + call $~lib/runtime/ALLOCATE + local.set $1 + local.get $1 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $1 + global.get $~lib/runtime/HEADER_SIZE + i32.sub + i32.const 10 + i32.store + local.get $1 + end local.set $0 end local.get $0 @@ -5731,12 +5770,12 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/internal/hash/HASH (; 84 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/hash/HASH (; 83 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) local.get $0 - call $~lib/internal/hash/hash64 + call $~lib/util/hash/hash64 return ) - (func $~lib/set/Set#find (; 85 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 84 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -5748,7 +5787,7 @@ i32.const 4 i32.mul i32.add - i32.load offset=8 + i32.load local.set $3 block $break|0 loop $continue|0 @@ -5787,16 +5826,16 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 86 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/set/Set#has (; 85 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) local.get $0 local.get $1 local.get $1 - call $~lib/internal/hash/HASH + call $~lib/util/hash/HASH call $~lib/set/Set#find i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 87 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 86 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5817,7 +5856,6 @@ local.get $2 i32.const 4 i32.mul - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $3 local.get $2 @@ -5832,13 +5870,10 @@ i32.const 16 end i32.mul - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 local.get $0 i32.load offset=8 - i32.const 8 - i32.add local.set $6 local.get $6 local.get $0 @@ -5850,8 +5885,6 @@ i32.add local.set $7 local.get $5 - i32.const 8 - i32.add local.set $8 block $break|0 loop $continue|0 @@ -5874,13 +5907,13 @@ local.get $9 i64.load i64.store - block $~lib/internal/hash/HASH|inlined.0 (result i32) + block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $9 i64.load local.set $11 local.get $11 - call $~lib/internal/hash/hash64 - br $~lib/internal/hash/HASH|inlined.0 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.0 end local.get $1 i32.and @@ -5893,11 +5926,11 @@ local.set $13 local.get $10 local.get $13 - i32.load offset=8 + i32.load i32.store offset=8 local.get $13 local.get $8 - i32.store offset=8 + i32.store local.get $8 block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) i32.const 16 @@ -5933,13 +5966,13 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/set/Set#add (; 88 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) + (func $~lib/set/Set#add (; 87 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) local.get $1 - call $~lib/internal/hash/HASH + call $~lib/util/hash/HASH local.set $2 local.get $0 local.get $1 @@ -5982,8 +6015,6 @@ i32.load offset=8 local.set $4 local.get $4 - i32.const 8 - i32.add block (result i32) local.get $0 local.get $0 @@ -6021,18 +6052,18 @@ local.set $5 local.get $3 local.get $5 - i32.load offset=8 + i32.load i32.store offset=8 local.get $5 local.get $3 - i32.store offset=8 + i32.store end ) - (func $~lib/set/Set#get:size (; 89 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#get:size (; 88 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/set/Set#delete (; 90 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/set/Set#delete (; 89 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) (local $3 i32) (local $4 i32) @@ -6040,12 +6071,12 @@ (local $6 i32) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.1 (result i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $2 local.get $2 - call $~lib/internal/hash/hash64 - br $~lib/internal/hash/HASH|inlined.1 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.1 end call $~lib/set/Set#find local.set $3 @@ -6106,7 +6137,7 @@ end i32.const 1 ) - (func $std/set/test (; 91 ;) (type $FUNCSIG$v) + (func $std/set/test (; 90 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i64) i32.const 0 @@ -6129,7 +6160,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -6144,7 +6175,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -6167,7 +6198,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 12 i32.const 2 call $~lib/env/abort @@ -6189,7 +6220,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 16 i32.const 4 call $~lib/env/abort @@ -6204,7 +6235,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -6227,7 +6258,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 2 call $~lib/env/abort @@ -6249,7 +6280,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 24 i32.const 4 call $~lib/env/abort @@ -6266,7 +6297,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 26 i32.const 4 call $~lib/env/abort @@ -6289,7 +6320,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 2 call $~lib/env/abort @@ -6312,7 +6343,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 4 call $~lib/env/abort @@ -6327,7 +6358,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 34 i32.const 4 call $~lib/env/abort @@ -6344,7 +6375,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -6367,7 +6398,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 2 call $~lib/env/abort @@ -6382,18 +6413,17 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/set/Set#clear (; 92 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/set/Set#clear (; 91 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 0 i32.const 16 - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store local.get $0 @@ -6404,7 +6434,6 @@ local.get $0 i32.const 0 i32.const 32 - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store offset=8 local.get $0 @@ -6417,13 +6446,25 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 93 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 92 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) block (result i32) local.get $0 i32.eqz if - i32.const 24 - call $~lib/memory/memory.allocate + block $~lib/runtime/REGISTER>|inlined.0 (result i32) + i32.const 24 + call $~lib/runtime/ALLOCATE + local.set $1 + local.get $1 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $1 + global.get $~lib/runtime/HEADER_SIZE + i32.sub + i32.const 11 + i32.store + local.get $1 + end local.set $0 end local.get $0 @@ -6449,13 +6490,13 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/internal/hash/HASH (; 94 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + (func $~lib/util/hash/HASH (; 93 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) local.get $0 i32.reinterpret_f32 - call $~lib/internal/hash/hash32 + call $~lib/util/hash/hash32 return ) - (func $~lib/set/Set#find (; 95 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 94 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -6467,7 +6508,7 @@ i32.const 4 i32.mul i32.add - i32.load offset=8 + i32.load local.set $3 block $break|0 loop $continue|0 @@ -6506,16 +6547,16 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 96 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/set/Set#has (; 95 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) local.get $0 local.get $1 local.get $1 - call $~lib/internal/hash/HASH + call $~lib/util/hash/HASH call $~lib/set/Set#find i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 97 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 96 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6536,7 +6577,6 @@ local.get $2 i32.const 4 i32.mul - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $3 local.get $2 @@ -6551,13 +6591,10 @@ i32.const 8 end i32.mul - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 local.get $0 i32.load offset=8 - i32.const 8 - i32.add local.set $6 local.get $6 local.get $0 @@ -6569,8 +6606,6 @@ i32.add local.set $7 local.get $5 - i32.const 8 - i32.add local.set $8 block $break|0 loop $continue|0 @@ -6593,14 +6628,14 @@ local.get $9 f32.load f32.store - block $~lib/internal/hash/HASH|inlined.0 (result i32) + block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $9 f32.load local.set $11 local.get $11 i32.reinterpret_f32 - call $~lib/internal/hash/hash32 - br $~lib/internal/hash/HASH|inlined.0 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.0 end local.get $1 i32.and @@ -6613,11 +6648,11 @@ local.set $13 local.get $10 local.get $13 - i32.load offset=8 + i32.load i32.store offset=4 local.get $13 local.get $8 - i32.store offset=8 + i32.store local.get $8 block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) i32.const 8 @@ -6653,13 +6688,13 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/set/Set#add (; 98 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32) + (func $~lib/set/Set#add (; 97 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) local.get $1 - call $~lib/internal/hash/HASH + call $~lib/util/hash/HASH local.set $2 local.get $0 local.get $1 @@ -6702,8 +6737,6 @@ i32.load offset=8 local.set $4 local.get $4 - i32.const 8 - i32.add block (result i32) local.get $0 local.get $0 @@ -6741,18 +6774,18 @@ local.set $5 local.get $3 local.get $5 - i32.load offset=8 + i32.load i32.store offset=4 local.get $5 local.get $3 - i32.store offset=8 + i32.store end ) - (func $~lib/set/Set#get:size (; 99 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#get:size (; 98 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/set/Set#delete (; 100 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/set/Set#delete (; 99 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) (local $2 f32) (local $3 i32) (local $4 i32) @@ -6760,13 +6793,13 @@ (local $6 i32) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.1 (result i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $2 local.get $2 i32.reinterpret_f32 - call $~lib/internal/hash/hash32 - br $~lib/internal/hash/HASH|inlined.1 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.1 end call $~lib/set/Set#find local.set $3 @@ -6827,7 +6860,7 @@ end i32.const 1 ) - (func $std/set/test (; 101 ;) (type $FUNCSIG$v) + (func $std/set/test (; 100 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 f32) i32.const 0 @@ -6850,7 +6883,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -6865,7 +6898,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -6888,7 +6921,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 12 i32.const 2 call $~lib/env/abort @@ -6910,7 +6943,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 16 i32.const 4 call $~lib/env/abort @@ -6925,7 +6958,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -6948,7 +6981,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 2 call $~lib/env/abort @@ -6970,7 +7003,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 24 i32.const 4 call $~lib/env/abort @@ -6987,7 +7020,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 26 i32.const 4 call $~lib/env/abort @@ -7010,7 +7043,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 2 call $~lib/env/abort @@ -7033,7 +7066,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 4 call $~lib/env/abort @@ -7048,7 +7081,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 34 i32.const 4 call $~lib/env/abort @@ -7065,7 +7098,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -7088,7 +7121,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 2 call $~lib/env/abort @@ -7103,18 +7136,17 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/set/Set#clear (; 102 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/set/Set#clear (; 101 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 0 i32.const 16 - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store local.get $0 @@ -7125,7 +7157,6 @@ local.get $0 i32.const 0 i32.const 64 - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store offset=8 local.get $0 @@ -7138,13 +7169,25 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 103 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 102 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) block (result i32) local.get $0 i32.eqz if - i32.const 24 - call $~lib/memory/memory.allocate + block $~lib/runtime/REGISTER>|inlined.0 (result i32) + i32.const 24 + call $~lib/runtime/ALLOCATE + local.set $1 + local.get $1 + call $~lib/runtime/ASSERT_UNREGISTERED + local.get $1 + global.get $~lib/runtime/HEADER_SIZE + i32.sub + i32.const 12 + i32.store + local.get $1 + end local.set $0 end local.get $0 @@ -7170,13 +7213,13 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/internal/hash/HASH (; 104 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/util/hash/HASH (; 103 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 i64.reinterpret_f64 - call $~lib/internal/hash/hash64 + call $~lib/util/hash/hash64 return ) - (func $~lib/set/Set#find (; 105 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 104 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -7188,7 +7231,7 @@ i32.const 4 i32.mul i32.add - i32.load offset=8 + i32.load local.set $3 block $break|0 loop $continue|0 @@ -7227,16 +7270,16 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 106 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/set/Set#has (; 105 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) local.get $0 local.get $1 local.get $1 - call $~lib/internal/hash/HASH + call $~lib/util/hash/HASH call $~lib/set/Set#find i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 107 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 106 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7257,7 +7300,6 @@ local.get $2 i32.const 4 i32.mul - i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $3 local.get $2 @@ -7272,13 +7314,10 @@ i32.const 16 end i32.mul - i32.const 1 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 local.get $0 i32.load offset=8 - i32.const 8 - i32.add local.set $6 local.get $6 local.get $0 @@ -7290,8 +7329,6 @@ i32.add local.set $7 local.get $5 - i32.const 8 - i32.add local.set $8 block $break|0 loop $continue|0 @@ -7314,14 +7351,14 @@ local.get $9 f64.load f64.store - block $~lib/internal/hash/HASH|inlined.0 (result i32) + block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $9 f64.load local.set $11 local.get $11 i64.reinterpret_f64 - call $~lib/internal/hash/hash64 - br $~lib/internal/hash/HASH|inlined.0 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.0 end local.get $1 i32.and @@ -7334,11 +7371,11 @@ local.set $13 local.get $10 local.get $13 - i32.load offset=8 + i32.load i32.store offset=8 local.get $13 local.get $8 - i32.store offset=8 + i32.store local.get $8 block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) i32.const 16 @@ -7374,13 +7411,13 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/set/Set#add (; 108 ;) (type $FUNCSIG$vid) (param $0 i32) (param $1 f64) + (func $~lib/set/Set#add (; 107 ;) (type $FUNCSIG$vid) (param $0 i32) (param $1 f64) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) local.get $1 - call $~lib/internal/hash/HASH + call $~lib/util/hash/HASH local.set $2 local.get $0 local.get $1 @@ -7423,8 +7460,6 @@ i32.load offset=8 local.set $4 local.get $4 - i32.const 8 - i32.add block (result i32) local.get $0 local.get $0 @@ -7462,18 +7497,18 @@ local.set $5 local.get $3 local.get $5 - i32.load offset=8 + i32.load i32.store offset=8 local.get $5 local.get $3 - i32.store offset=8 + i32.store end ) - (func $~lib/set/Set#get:size (; 109 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#get:size (; 108 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/set/Set#delete (; 110 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/set/Set#delete (; 109 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 f64) (local $3 i32) (local $4 i32) @@ -7481,13 +7516,13 @@ (local $6 i32) local.get $0 local.get $1 - block $~lib/internal/hash/HASH|inlined.1 (result i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $2 local.get $2 i64.reinterpret_f64 - call $~lib/internal/hash/hash64 - br $~lib/internal/hash/HASH|inlined.1 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.1 end call $~lib/set/Set#find local.set $3 @@ -7548,7 +7583,7 @@ end i32.const 1 ) - (func $std/set/test (; 111 ;) (type $FUNCSIG$v) + (func $std/set/test (; 110 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 f64) i32.const 0 @@ -7571,7 +7606,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 8 i32.const 4 call $~lib/env/abort @@ -7586,7 +7621,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 10 i32.const 4 call $~lib/env/abort @@ -7609,7 +7644,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 12 i32.const 2 call $~lib/env/abort @@ -7631,7 +7666,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 16 i32.const 4 call $~lib/env/abort @@ -7646,7 +7681,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 18 i32.const 4 call $~lib/env/abort @@ -7669,7 +7704,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 20 i32.const 2 call $~lib/env/abort @@ -7691,7 +7726,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 24 i32.const 4 call $~lib/env/abort @@ -7708,7 +7743,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 26 i32.const 4 call $~lib/env/abort @@ -7731,7 +7766,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 28 i32.const 2 call $~lib/env/abort @@ -7754,7 +7789,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 32 i32.const 4 call $~lib/env/abort @@ -7769,7 +7804,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 34 i32.const 4 call $~lib/env/abort @@ -7786,7 +7821,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 36 i32.const 4 call $~lib/env/abort @@ -7809,7 +7844,7 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 38 i32.const 2 call $~lib/env/abort @@ -7824,15 +7859,24 @@ i32.eqz if i32.const 0 - i32.const 120 + i32.const 104 i32.const 42 i32.const 2 call $~lib/env/abort unreachable end ) - (func $start:std/set (; 112 ;) (type $FUNCSIG$v) - call $start:~lib/allocator/arena + (func $start:std/set (; 111 ;) (type $FUNCSIG$v) + 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 $std/set/test call $std/set/test call $std/set/test @@ -7844,9 +7888,9 @@ call $std/set/test call $std/set/test ) - (func $start (; 113 ;) (type $FUNCSIG$v) + (func $start (; 112 ;) (type $FUNCSIG$v) call $start:std/set ) - (func $null (; 114 ;) (type $FUNCSIG$v) + (func $null (; 113 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/trace.optimized.wat b/tests/compiler/std/trace.optimized.wat index fb247891..740e55c1 100644 --- a/tests/compiler/std/trace.optimized.wat +++ b/tests/compiler/std/trace.optimized.wat @@ -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 diff --git a/tests/compiler/std/trace.untouched.wat b/tests/compiler/std/trace.untouched.wat index 2486b5ad..de6114e2 100644 --- a/tests/compiler/std/trace.untouched.wat +++ b/tests/compiler/std/trace.untouched.wat @@ -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