From 966419983ef41b40c4b1911862ce3b6bca5dc4a7 Mon Sep 17 00:00:00 2001 From: dcode Date: Fri, 22 Jul 2022 17:29:52 +0200 Subject: [PATCH 1/2] Support lifting/lowering of functions as internrefs --- src/bindings/js.ts | 6 ++++-- tests/compiler/bindings/esm.debug.d.ts | 10 ++++++++++ tests/compiler/bindings/esm.debug.js | 10 ++++++++-- tests/compiler/bindings/esm.debug.wat | 23 +++++++++++++++++++++++ tests/compiler/bindings/esm.release.d.ts | 10 ++++++++++ tests/compiler/bindings/esm.release.js | 10 ++++++++-- tests/compiler/bindings/esm.release.wat | 1 + tests/compiler/bindings/esm.ts | 4 ++++ tests/compiler/bindings/raw.debug.d.ts | 10 ++++++++++ tests/compiler/bindings/raw.debug.js | 7 ++++++- tests/compiler/bindings/raw.debug.wat | 23 +++++++++++++++++++++++ tests/compiler/bindings/raw.release.d.ts | 10 ++++++++++ tests/compiler/bindings/raw.release.js | 7 ++++++- tests/compiler/bindings/raw.release.wat | 1 + 14 files changed, 124 insertions(+), 8 deletions(-) diff --git a/src/bindings/js.ts b/src/bindings/js.ts index 1dae4fde8b..d13a5faf0b 100644 --- a/src/bindings/js.ts +++ b/src/bindings/js.ts @@ -799,11 +799,13 @@ export class JSBuilder extends ExportsWalker { } `); } + if (this.needsLiftInternref || this.needsLowerInternref) { + sb.push(" class Internref extends Number {}\n"); + } if (this.needsLiftInternref) { this.needsRetain = true; this.needsRelease = true; sb.push(` const registry = new FinalizationRegistry(__release); - class Internref extends Number {} function __liftInternref(pointer) { if (!pointer) return null; const sentinel = new Internref(__retain(pointer)); @@ -1031,7 +1033,7 @@ export class JSBuilder extends ExportsWalker { makeLowerToValue(name: string, type: Type, sb: string[] = this.sb): void { if (type.isInternalReference) { // Lower reference types - const clazz = assert(type.getClass()); + const clazz = assert(type.getClassOrWrapper(this.program)); if (clazz.extends(this.program.arrayBufferInstance.prototype)) { sb.push("__lowerBuffer("); this.needsLowerBuffer = true; diff --git a/tests/compiler/bindings/esm.debug.d.ts b/tests/compiler/bindings/esm.debug.d.ts index d4b27a1ee2..6e2bafad5d 100644 --- a/tests/compiler/bindings/esm.debug.d.ts +++ b/tests/compiler/bindings/esm.debug.d.ts @@ -137,6 +137,12 @@ export declare function newInternref(): __Internref13; * @returns `bindings/esm/NonPlainObject` */ export declare function internrefFunction(a: __Internref13, b: __Internref13): __Internref13; +/** + * bindings/esm/functionFunction + * @param fn `() => void` + * @returns `() => void` + */ +export declare function functionFunction(fn: __Internref14): __Internref14; /** bindings/esm/PlainObject */ declare interface __Record10 { /** @type `i8` */ @@ -176,3 +182,7 @@ declare interface __Record10 { declare class __Internref13 extends Number { private __nominal13: symbol; } +/** ~lib/function/Function<%28%29=>void> */ +declare class __Internref14 extends Number { + private __nominal14: symbol; +} diff --git a/tests/compiler/bindings/esm.debug.js b/tests/compiler/bindings/esm.debug.js index fdc6303178..d2a6d9288f 100644 --- a/tests/compiler/bindings/esm.debug.js +++ b/tests/compiler/bindings/esm.debug.js @@ -189,6 +189,11 @@ async function instantiate(module, imports = {}) { __release(a); } }, + functionFunction(fn) { + // bindings/esm/functionFunction(() => void) => () => void + fn = __lowerInternref(fn) || __notnull(); + return __liftInternref(exports.functionFunction(fn) >>> 0); + }, }, exports); function __lowerRecord10(value) { // bindings/esm/PlainObject @@ -337,8 +342,8 @@ async function instantiate(module, imports = {}) { exports.__unpin(buffer); return buffer; } - const registry = new FinalizationRegistry(__release); class Internref extends Number {} + const registry = new FinalizationRegistry(__release); function __liftInternref(pointer) { if (!pointer) return null; const sentinel = new Internref(__retain(pointer)); @@ -395,7 +400,8 @@ export const { arrayFunction, objectFunction, newInternref, - internrefFunction + internrefFunction, + functionFunction } = await (async url => instantiate( await (async () => { try { return await globalThis.WebAssembly.compileStreaming(globalThis.fetch(url)); } diff --git a/tests/compiler/bindings/esm.debug.wat b/tests/compiler/bindings/esm.debug.wat index 659e4f2005..9a461b22b1 100644 --- a/tests/compiler/bindings/esm.debug.wat +++ b/tests/compiler/bindings/esm.debug.wat @@ -115,6 +115,7 @@ (export "arrayFunction" (func $export:bindings/esm/arrayFunction)) (export "objectFunction" (func $export:bindings/esm/objectFunction)) (export "internrefFunction" (func $export:bindings/esm/internrefFunction)) + (export "functionFunction" (func $export:bindings/esm/functionFunction)) (func $bindings/esm/plainFunction (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 @@ -2805,6 +2806,9 @@ (func $bindings/esm/internrefFunction (param $0 i32) (param $1 i32) (result i32) local.get $0 ) + (func $bindings/esm/functionFunction (param $0 i32) (result i32) + local.get $0 + ) (func $~lib/rt/itcms/__pin (param $0 i32) (result i32) (local $1 i32) local.get $0 @@ -4275,4 +4279,23 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) + (func $export:bindings/esm/functionFunction (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $bindings/esm/functionFunction + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) ) diff --git a/tests/compiler/bindings/esm.release.d.ts b/tests/compiler/bindings/esm.release.d.ts index d4b27a1ee2..6e2bafad5d 100644 --- a/tests/compiler/bindings/esm.release.d.ts +++ b/tests/compiler/bindings/esm.release.d.ts @@ -137,6 +137,12 @@ export declare function newInternref(): __Internref13; * @returns `bindings/esm/NonPlainObject` */ export declare function internrefFunction(a: __Internref13, b: __Internref13): __Internref13; +/** + * bindings/esm/functionFunction + * @param fn `() => void` + * @returns `() => void` + */ +export declare function functionFunction(fn: __Internref14): __Internref14; /** bindings/esm/PlainObject */ declare interface __Record10 { /** @type `i8` */ @@ -176,3 +182,7 @@ declare interface __Record10 { declare class __Internref13 extends Number { private __nominal13: symbol; } +/** ~lib/function/Function<%28%29=>void> */ +declare class __Internref14 extends Number { + private __nominal14: symbol; +} diff --git a/tests/compiler/bindings/esm.release.js b/tests/compiler/bindings/esm.release.js index e38479066a..fa7fca5def 100644 --- a/tests/compiler/bindings/esm.release.js +++ b/tests/compiler/bindings/esm.release.js @@ -189,6 +189,11 @@ async function instantiate(module, imports = {}) { __release(a); } }, + functionFunction(fn) { + // bindings/esm/functionFunction(() => void) => () => void + fn = __lowerInternref(fn) || __notnull(); + return __liftInternref(exports.functionFunction(fn) >>> 0); + }, }, exports); function __lowerRecord10(value) { // bindings/esm/PlainObject @@ -337,8 +342,8 @@ async function instantiate(module, imports = {}) { exports.__unpin(buffer); return buffer; } - const registry = new FinalizationRegistry(__release); class Internref extends Number {} + const registry = new FinalizationRegistry(__release); function __liftInternref(pointer) { if (!pointer) return null; const sentinel = new Internref(__retain(pointer)); @@ -395,7 +400,8 @@ export const { arrayFunction, objectFunction, newInternref, - internrefFunction + internrefFunction, + functionFunction } = await (async url => instantiate( await (async () => { try { return await globalThis.WebAssembly.compileStreaming(globalThis.fetch(url)); } diff --git a/tests/compiler/bindings/esm.release.wat b/tests/compiler/bindings/esm.release.wat index ba446b9f95..3afe1c28c8 100644 --- a/tests/compiler/bindings/esm.release.wat +++ b/tests/compiler/bindings/esm.release.wat @@ -113,6 +113,7 @@ (export "arrayFunction" (func $export:bindings/esm/arrayFunction)) (export "objectFunction" (func $export:bindings/esm/objectFunction)) (export "internrefFunction" (func $export:bindings/esm/internrefFunction)) + (export "functionFunction" (func $export:bindings/esm/staticarrayU16)) (func $bindings/esm/plainFunction (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 diff --git a/tests/compiler/bindings/esm.ts b/tests/compiler/bindings/esm.ts index 75debd1de2..5f59c1e289 100644 --- a/tests/compiler/bindings/esm.ts +++ b/tests/compiler/bindings/esm.ts @@ -130,6 +130,10 @@ export function internrefFunction(a: NonPlainObject, b: NonPlainObject): NonPlai return a; } +export function functionFunction(fn: () => void): () => void { + return fn; +} + trace("trace", 1, 42); import { console, Math } from "bindings/dom"; diff --git a/tests/compiler/bindings/raw.debug.d.ts b/tests/compiler/bindings/raw.debug.d.ts index 930fee4422..80c51a7d21 100644 --- a/tests/compiler/bindings/raw.debug.d.ts +++ b/tests/compiler/bindings/raw.debug.d.ts @@ -138,6 +138,12 @@ declare namespace __AdaptedExports { * @returns `bindings/esm/NonPlainObject` */ export function internrefFunction(a: __Internref13, b: __Internref13): __Internref13; + /** + * bindings/esm/functionFunction + * @param fn `() => void` + * @returns `() => void` + */ + export function functionFunction(fn: __Internref14): __Internref14; } /** bindings/esm/PlainObject */ declare interface __Record10 { @@ -178,6 +184,10 @@ declare interface __Record10 { declare class __Internref13 extends Number { private __nominal13: symbol; } +/** ~lib/function/Function<%28%29=>void> */ +declare class __Internref14 extends Number { + private __nominal14: symbol; +} /** Instantiates the compiled WebAssembly module with the given imports. */ export declare function instantiate(module: WebAssembly.Module, imports: { env: unknown, diff --git a/tests/compiler/bindings/raw.debug.js b/tests/compiler/bindings/raw.debug.js index 11516eb03f..9e2769a3fa 100644 --- a/tests/compiler/bindings/raw.debug.js +++ b/tests/compiler/bindings/raw.debug.js @@ -189,6 +189,11 @@ export async function instantiate(module, imports = {}) { __release(a); } }, + functionFunction(fn) { + // bindings/esm/functionFunction(() => void) => () => void + fn = __lowerInternref(fn) || __notnull(); + return __liftInternref(exports.functionFunction(fn) >>> 0); + }, }, exports); function __lowerRecord10(value) { // bindings/esm/PlainObject @@ -337,8 +342,8 @@ export async function instantiate(module, imports = {}) { exports.__unpin(buffer); return buffer; } - const registry = new FinalizationRegistry(__release); class Internref extends Number {} + const registry = new FinalizationRegistry(__release); function __liftInternref(pointer) { if (!pointer) return null; const sentinel = new Internref(__retain(pointer)); diff --git a/tests/compiler/bindings/raw.debug.wat b/tests/compiler/bindings/raw.debug.wat index 1adeadd9c0..16d04dbbf2 100644 --- a/tests/compiler/bindings/raw.debug.wat +++ b/tests/compiler/bindings/raw.debug.wat @@ -115,6 +115,7 @@ (export "arrayFunction" (func $export:bindings/esm/arrayFunction)) (export "objectFunction" (func $export:bindings/esm/objectFunction)) (export "internrefFunction" (func $export:bindings/esm/internrefFunction)) + (export "functionFunction" (func $export:bindings/esm/functionFunction)) (func $start:bindings/raw call $start:bindings/esm ) @@ -2808,6 +2809,9 @@ (func $bindings/esm/internrefFunction (param $0 i32) (param $1 i32) (result i32) local.get $0 ) + (func $bindings/esm/functionFunction (param $0 i32) (result i32) + local.get $0 + ) (func $~lib/rt/itcms/__pin (param $0 i32) (result i32) (local $1 i32) local.get $0 @@ -4278,4 +4282,23 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) + (func $export:bindings/esm/functionFunction (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $bindings/esm/functionFunction + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) ) diff --git a/tests/compiler/bindings/raw.release.d.ts b/tests/compiler/bindings/raw.release.d.ts index 930fee4422..80c51a7d21 100644 --- a/tests/compiler/bindings/raw.release.d.ts +++ b/tests/compiler/bindings/raw.release.d.ts @@ -138,6 +138,12 @@ declare namespace __AdaptedExports { * @returns `bindings/esm/NonPlainObject` */ export function internrefFunction(a: __Internref13, b: __Internref13): __Internref13; + /** + * bindings/esm/functionFunction + * @param fn `() => void` + * @returns `() => void` + */ + export function functionFunction(fn: __Internref14): __Internref14; } /** bindings/esm/PlainObject */ declare interface __Record10 { @@ -178,6 +184,10 @@ declare interface __Record10 { declare class __Internref13 extends Number { private __nominal13: symbol; } +/** ~lib/function/Function<%28%29=>void> */ +declare class __Internref14 extends Number { + private __nominal14: symbol; +} /** Instantiates the compiled WebAssembly module with the given imports. */ export declare function instantiate(module: WebAssembly.Module, imports: { env: unknown, diff --git a/tests/compiler/bindings/raw.release.js b/tests/compiler/bindings/raw.release.js index 11516eb03f..9e2769a3fa 100644 --- a/tests/compiler/bindings/raw.release.js +++ b/tests/compiler/bindings/raw.release.js @@ -189,6 +189,11 @@ export async function instantiate(module, imports = {}) { __release(a); } }, + functionFunction(fn) { + // bindings/esm/functionFunction(() => void) => () => void + fn = __lowerInternref(fn) || __notnull(); + return __liftInternref(exports.functionFunction(fn) >>> 0); + }, }, exports); function __lowerRecord10(value) { // bindings/esm/PlainObject @@ -337,8 +342,8 @@ export async function instantiate(module, imports = {}) { exports.__unpin(buffer); return buffer; } - const registry = new FinalizationRegistry(__release); class Internref extends Number {} + const registry = new FinalizationRegistry(__release); function __liftInternref(pointer) { if (!pointer) return null; const sentinel = new Internref(__retain(pointer)); diff --git a/tests/compiler/bindings/raw.release.wat b/tests/compiler/bindings/raw.release.wat index afafc3763b..964f5279b5 100644 --- a/tests/compiler/bindings/raw.release.wat +++ b/tests/compiler/bindings/raw.release.wat @@ -113,6 +113,7 @@ (export "arrayFunction" (func $export:bindings/esm/arrayFunction)) (export "objectFunction" (func $export:bindings/esm/objectFunction)) (export "internrefFunction" (func $export:bindings/esm/internrefFunction)) + (export "functionFunction" (func $export:bindings/esm/staticarrayU16)) (func $bindings/esm/plainFunction (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 From 55997009cc3e9d891b4950784802fccad6850f62 Mon Sep 17 00:00:00 2001 From: dcode Date: Fri, 22 Jul 2022 17:38:05 +0200 Subject: [PATCH 2/2] check globals as well --- tests/compiler/bindings/esm.debug.d.ts | 23 +- tests/compiler/bindings/esm.debug.js | 42 ++- tests/compiler/bindings/esm.debug.wat | 243 +++++++------- tests/compiler/bindings/esm.release.d.ts | 23 +- tests/compiler/bindings/esm.release.js | 42 ++- tests/compiler/bindings/esm.release.wat | 392 ++++++++++++----------- tests/compiler/bindings/esm.ts | 2 + tests/compiler/bindings/raw.debug.d.ts | 23 +- tests/compiler/bindings/raw.debug.js | 39 ++- tests/compiler/bindings/raw.debug.wat | 241 +++++++------- tests/compiler/bindings/raw.release.d.ts | 23 +- tests/compiler/bindings/raw.release.js | 39 ++- tests/compiler/bindings/raw.release.wat | 392 ++++++++++++----------- 13 files changed, 825 insertions(+), 699 deletions(-) diff --git a/tests/compiler/bindings/esm.debug.d.ts b/tests/compiler/bindings/esm.debug.d.ts index 6e2bafad5d..d98ef3b22f 100644 --- a/tests/compiler/bindings/esm.debug.d.ts +++ b/tests/compiler/bindings/esm.debug.d.ts @@ -124,27 +124,32 @@ export declare function arrayFunction(a: Array, b: Array): Array * @param b `bindings/esm/PlainObject` * @returns `bindings/esm/PlainObject` */ -export declare function objectFunction(a: __Record10, b: __Record10): __Record10; +export declare function objectFunction(a: __Record11, b: __Record11): __Record11; /** * bindings/esm/newInternref * @returns `bindings/esm/NonPlainObject` */ -export declare function newInternref(): __Internref13; +export declare function newInternref(): __Internref14; /** * bindings/esm/internrefFunction * @param a `bindings/esm/NonPlainObject` * @param b `bindings/esm/NonPlainObject` * @returns `bindings/esm/NonPlainObject` */ -export declare function internrefFunction(a: __Internref13, b: __Internref13): __Internref13; +export declare function internrefFunction(a: __Internref14, b: __Internref14): __Internref14; /** * bindings/esm/functionFunction * @param fn `() => void` * @returns `() => void` */ -export declare function functionFunction(fn: __Internref14): __Internref14; +export declare function functionFunction(fn: __Internref3): __Internref3; +/** bindings/esm/fn */ +export declare const fn: { + /** @type `() => void` */ + get value(): __Internref3 +}; /** bindings/esm/PlainObject */ -declare interface __Record10 { +declare interface __Record11 { /** @type `i8` */ a: number | TOmittable; /** @type `i16` */ @@ -179,10 +184,10 @@ declare interface __Record10 { p: Array | null | TOmittable; } /** bindings/esm/NonPlainObject */ -declare class __Internref13 extends Number { - private __nominal13: symbol; -} -/** ~lib/function/Function<%28%29=>void> */ declare class __Internref14 extends Number { private __nominal14: symbol; } +/** ~lib/function/Function<%28%29=>void> */ +declare class __Internref3 extends Number { + private __nominal3: symbol; +} diff --git a/tests/compiler/bindings/esm.debug.js b/tests/compiler/bindings/esm.debug.js index d2a6d9288f..0ce8f68c1f 100644 --- a/tests/compiler/bindings/esm.debug.js +++ b/tests/compiler/bindings/esm.debug.js @@ -127,8 +127,8 @@ async function instantiate(module, imports = {}) { }, typedarrayFunction(a, b) { // bindings/esm/typedarrayFunction(~lib/typedarray/Int16Array, ~lib/typedarray/Float32Array) => ~lib/typedarray/Uint64Array - a = __retain(__lowerTypedArray(Int16Array, 3, 1, a) || __notnull()); - b = __lowerTypedArray(Float32Array, 4, 2, b) || __notnull(); + a = __retain(__lowerTypedArray(Int16Array, 4, 1, a) || __notnull()); + b = __lowerTypedArray(Float32Array, 5, 2, b) || __notnull(); try { return __liftTypedArray(BigUint64Array, exports.typedarrayFunction(a, b) >>> 0); } finally { @@ -137,8 +137,8 @@ async function instantiate(module, imports = {}) { }, staticarrayFunction(a, b) { // bindings/esm/staticarrayFunction(~lib/staticarray/StaticArray, ~lib/staticarray/StaticArray) => ~lib/staticarray/StaticArray - a = __retain(__lowerStaticArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 6, 2, a, Int32Array) || __notnull()); - b = __lowerStaticArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 6, 2, b, Int32Array) || __notnull(); + a = __retain(__lowerStaticArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 7, 2, a, Int32Array) || __notnull()); + b = __lowerStaticArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 7, 2, b, Int32Array) || __notnull(); try { return __liftStaticArray(pointer => new Int32Array(memory.buffer)[pointer >>> 2], 2, exports.staticarrayFunction(a, b) >>> 0); } finally { @@ -147,18 +147,18 @@ async function instantiate(module, imports = {}) { }, staticarrayU16(a) { // bindings/esm/staticarrayU16(~lib/staticarray/StaticArray) => ~lib/staticarray/StaticArray - a = __lowerStaticArray((pointer, value) => { new Uint16Array(memory.buffer)[pointer >>> 1] = value; }, 7, 1, a, Uint16Array) || __notnull(); + a = __lowerStaticArray((pointer, value) => { new Uint16Array(memory.buffer)[pointer >>> 1] = value; }, 8, 1, a, Uint16Array) || __notnull(); return __liftStaticArray(pointer => new Uint16Array(memory.buffer)[pointer >>> 1], 1, exports.staticarrayU16(a) >>> 0); }, staticarrayI64(a) { // bindings/esm/staticarrayI64(~lib/staticarray/StaticArray) => ~lib/staticarray/StaticArray - a = __lowerStaticArray((pointer, value) => { new BigInt64Array(memory.buffer)[pointer >>> 3] = value || 0n; }, 8, 3, a, BigInt64Array) || __notnull(); + a = __lowerStaticArray((pointer, value) => { new BigInt64Array(memory.buffer)[pointer >>> 3] = value || 0n; }, 9, 3, a, BigInt64Array) || __notnull(); return __liftStaticArray(pointer => new BigInt64Array(memory.buffer)[pointer >>> 3], 3, exports.staticarrayI64(a) >>> 0); }, arrayFunction(a, b) { // bindings/esm/arrayFunction(~lib/array/Array, ~lib/array/Array) => ~lib/array/Array - a = __retain(__lowerArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 9, 2, a) || __notnull()); - b = __lowerArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 9, 2, b) || __notnull(); + a = __retain(__lowerArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 10, 2, a) || __notnull()); + b = __lowerArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 10, 2, b) || __notnull(); try { return __liftArray(pointer => new Int32Array(memory.buffer)[pointer >>> 2], 2, exports.arrayFunction(a, b) >>> 0); } finally { @@ -167,10 +167,10 @@ async function instantiate(module, imports = {}) { }, objectFunction(a, b) { // bindings/esm/objectFunction(bindings/esm/PlainObject, bindings/esm/PlainObject) => bindings/esm/PlainObject - a = __retain(__lowerRecord10(a) || __notnull()); - b = __lowerRecord10(b) || __notnull(); + a = __retain(__lowerRecord11(a) || __notnull()); + b = __lowerRecord11(b) || __notnull(); try { - return __liftRecord10(exports.objectFunction(a, b) >>> 0); + return __liftRecord11(exports.objectFunction(a, b) >>> 0); } finally { __release(a); } @@ -194,12 +194,19 @@ async function instantiate(module, imports = {}) { fn = __lowerInternref(fn) || __notnull(); return __liftInternref(exports.functionFunction(fn) >>> 0); }, + fn: { + // bindings/esm/fn: () => void + valueOf() { return this.value; }, + get value() { + return __liftInternref(exports.fn.value >>> 0); + } + }, }, exports); - function __lowerRecord10(value) { + function __lowerRecord11(value) { // bindings/esm/PlainObject // Hint: Opt-out from lowering as a record by providing an empty constructor if (value == null) return 0; - const pointer = exports.__pin(exports.__new(68, 10)); + const pointer = exports.__pin(exports.__new(68, 11)); new Int8Array(memory.buffer)[pointer + 0 >>> 0] = value.a; new Int16Array(memory.buffer)[pointer + 2 >>> 1] = value.b; new Int32Array(memory.buffer)[pointer + 4 >>> 2] = value.c; @@ -214,12 +221,12 @@ async function instantiate(module, imports = {}) { new Float32Array(memory.buffer)[pointer + 44 >>> 2] = value.l; new Float64Array(memory.buffer)[pointer + 48 >>> 3] = value.m; new Uint32Array(memory.buffer)[pointer + 56 >>> 2] = __lowerString(value.n); - new Uint32Array(memory.buffer)[pointer + 60 >>> 2] = __lowerTypedArray(Uint8Array, 11, 0, value.o); - new Uint32Array(memory.buffer)[pointer + 64 >>> 2] = __lowerArray((pointer, value) => { new Uint32Array(memory.buffer)[pointer >>> 2] = __lowerString(value) || __notnull(); }, 12, 2, value.p); + new Uint32Array(memory.buffer)[pointer + 60 >>> 2] = __lowerTypedArray(Uint8Array, 12, 0, value.o); + new Uint32Array(memory.buffer)[pointer + 64 >>> 2] = __lowerArray((pointer, value) => { new Uint32Array(memory.buffer)[pointer >>> 2] = __lowerString(value) || __notnull(); }, 13, 2, value.p); exports.__unpin(pointer); return pointer; } - function __liftRecord10(pointer) { + function __liftRecord11(pointer) { // bindings/esm/PlainObject // Hint: Opt-out from lifting as a record by providing an empty constructor if (!pointer) return null; @@ -401,7 +408,8 @@ export const { objectFunction, newInternref, internrefFunction, - functionFunction + functionFunction, + fn } = await (async url => instantiate( await (async () => { try { return await globalThis.WebAssembly.compileStreaming(globalThis.fetch(url)); } diff --git a/tests/compiler/bindings/esm.debug.wat b/tests/compiler/bindings/esm.debug.wat index 9a461b22b1..6452a6ab74 100644 --- a/tests/compiler/bindings/esm.debug.wat +++ b/tests/compiler/bindings/esm.debug.wat @@ -3,8 +3,8 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_none (func)) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) @@ -35,6 +35,7 @@ (global $bindings/esm/ConstEnum.ONE i32 (i32.const 1)) (global $bindings/esm/ConstEnum.TWO i32 (i32.const 2)) (global $bindings/esm/ConstEnum.THREE i32 (i32.const 3)) + (global $bindings/esm/fn i32 (i32.const 96)) (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/builtins/u64.MAX_VALUE i64 (i64.const -1)) (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) @@ -53,35 +54,36 @@ (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 1024)) - (global $~lib/memory/__data_end i32 (i32.const 1140)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17524)) - (global $~lib/memory/__heap_base i32 (i32.const 17524)) + (global $~lib/rt/__rtti_base i32 (i32.const 1056)) + (global $~lib/memory/__data_end i32 (i32.const 1180)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17564)) + (global $~lib/memory/__heap_base i32 (i32.const 17564)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) (data (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00b\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00t\00r\00a\00c\00e\00\00\00") - (data (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\004\002\00 \00f\00r\00o\00m\00 \00c\00o\00n\00s\00o\00l\00e\00.\00l\00o\00g\00\00\00\00\00\00\00") - (data (i32.const 172) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 220) "<\00\00\00\00\00\00\00\00\00\00\00\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\00\00\00\00\00\00") - (data (i32.const 284) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00t\00r\00a\00c\00e\00\00\00") + (data (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\004\002\00 \00f\00r\00o\00m\00 \00c\00o\00n\00s\00o\00l\00e\00.\00l\00o\00g\00\00\00\00\00\00\00") + (data (i32.const 204) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 252) "<\00\00\00\00\00\00\00\00\00\00\00\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\00\00\00\00\00\00") + (data (i32.const 316) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data (i32.const 380) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 448) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 476) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data (i32.const 540) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data (i32.const 592) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 620) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 684) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 716) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data (i32.const 780) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00\00\00") - (data (i32.const 844) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") - (data (i32.const 892) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d\00\00\00") - (data (i32.const 956) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d\00\00\00\00\00") - (data (i32.const 1024) "\0e\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\81\08\00\00\02\00\00\00\01\19\00\00\02\00\00\00\01\02\00\00\02\00\00\00$\t\00\00\00\00\00\00\a4\00\00\00\00\00\00\00$\n\00\00\00\00\00\00\02\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00A\00\00\00\02\00\00\00\02A\00\00\00\00\00\00 \00\00\00\00\00\00\00") - (table $0 1 1 funcref) - (elem $0 (i32.const 1)) + (data (i32.const 480) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 508) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data (i32.const 572) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data (i32.const 624) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 652) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 716) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 748) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data (i32.const 812) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00\00\00") + (data (i32.const 876) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data (i32.const 924) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d\00\00\00") + (data (i32.const 988) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d\00\00\00\00\00") + (data (i32.const 1056) "\0f\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\81\08\00\00\02\00\00\00\01\19\00\00\02\00\00\00\01\02\00\00\02\00\00\00$\t\00\00\00\00\00\00\a4\00\00\00\00\00\00\00$\n\00\00\00\00\00\00\02\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00A\00\00\00\02\00\00\00\02A\00\00\00\00\00\00 \00\00\00\00\00\00\00") + (table $0 2 2 funcref) + (elem $0 (i32.const 1) $start:bindings/esm~anonymous|0) (export "plainGlobal" (global $bindings/esm/plainGlobal)) (export "plainMutableGlobal" (global $bindings/esm/plainMutableGlobal)) (export "stringGlobal" (global $bindings/esm/stringGlobal)) @@ -97,6 +99,7 @@ (export "getMaxUnsigned32" (func $bindings/esm/getMaxUnsigned32)) (export "getMaxUnsigned64" (func $bindings/esm/getMaxUnsigned64)) (export "newInternref" (func $bindings/esm/newInternref)) + (export "fn" (global $bindings/esm/fn)) (export "__new" (func $~lib/rt/itcms/__new)) (export "__pin" (func $~lib/rt/itcms/__pin)) (export "__unpin" (func $~lib/rt/itcms/__unpin)) @@ -116,6 +119,9 @@ (export "objectFunction" (func $export:bindings/esm/objectFunction)) (export "internrefFunction" (func $export:bindings/esm/internrefFunction)) (export "functionFunction" (func $export:bindings/esm/functionFunction)) + (func $start:bindings/esm~anonymous|0 + nop + ) (func $bindings/esm/plainFunction (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 @@ -198,7 +204,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 400 i32.const 159 i32.const 16 call $~lib/builtins/abort @@ -264,7 +270,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 400 i32.const 127 i32.const 18 call $~lib/builtins/abort @@ -281,7 +287,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 400 i32.const 131 i32.const 16 call $~lib/builtins/abort @@ -303,8 +309,8 @@ i32.load i32.gt_u if - i32.const 496 - i32.const 560 + i32.const 528 + i32.const 592 i32.const 22 i32.const 28 call $~lib/builtins/abort @@ -370,7 +376,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 368 + i32.const 400 i32.const 147 i32.const 30 call $~lib/builtins/abort @@ -496,7 +502,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 672 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -516,7 +522,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 672 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -579,7 +585,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 672 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -711,7 +717,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 672 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -728,7 +734,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 672 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -808,7 +814,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 672 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -851,7 +857,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 672 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -869,7 +875,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 672 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -937,7 +943,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 672 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1042,7 +1048,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 672 i32.const 377 i32.const 14 call $~lib/builtins/abort @@ -1085,7 +1091,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 672 i32.const 384 i32.const 16 call $~lib/builtins/abort @@ -1118,7 +1124,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 672 i32.const 397 i32.const 5 call $~lib/builtins/abort @@ -1361,7 +1367,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 672 i32.const 559 i32.const 3 call $~lib/builtins/abort @@ -1583,7 +1589,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 400 i32.const 228 i32.const 20 call $~lib/builtins/abort @@ -1689,8 +1695,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 304 - i32.const 640 + i32.const 336 + i32.const 672 i32.const 458 i32.const 29 call $~lib/builtins/abort @@ -1774,7 +1780,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 672 i32.const 330 i32.const 14 call $~lib/builtins/abort @@ -1839,7 +1845,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 672 i32.const 343 i32.const 18 call $~lib/builtins/abort @@ -1990,7 +1996,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 672 i32.const 357 i32.const 14 call $~lib/builtins/abort @@ -2099,7 +2105,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 672 i32.const 496 i32.const 16 call $~lib/builtins/abort @@ -2119,7 +2125,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 672 i32.const 498 i32.const 14 call $~lib/builtins/abort @@ -2165,8 +2171,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 304 - i32.const 368 + i32.const 336 + i32.const 400 i32.const 260 i32.const 31 call $~lib/builtins/abort @@ -2248,7 +2254,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 400 i32.const 294 i32.const 14 call $~lib/builtins/abort @@ -2340,8 +2346,8 @@ i32.shr_u i32.ge_u if - i32.const 496 - i32.const 736 + i32.const 528 + i32.const 768 i32.const 448 i32.const 64 call $~lib/builtins/abort @@ -2363,8 +2369,8 @@ i32.shr_u i32.ge_u if - i32.const 496 - i32.const 736 + i32.const 528 + i32.const 768 i32.const 1164 i32.const 64 call $~lib/builtins/abort @@ -2387,8 +2393,8 @@ i32.shr_u i32.ge_u if - i32.const 496 - i32.const 736 + i32.const 528 + i32.const 768 i32.const 1294 i32.const 64 call $~lib/builtins/abort @@ -2417,8 +2423,8 @@ call $~lib/staticarray/StaticArray#get:length i32.ge_u if - i32.const 496 - i32.const 800 + i32.const 528 + i32.const 832 i32.const 118 i32.const 41 call $~lib/builtins/abort @@ -2452,8 +2458,8 @@ call $~lib/staticarray/StaticArray#get:length i32.ge_u if - i32.const 496 - i32.const 800 + i32.const 528 + i32.const 832 i32.const 133 i32.const 41 call $~lib/builtins/abort @@ -2505,8 +2511,8 @@ i32.load offset=12 i32.ge_u if - i32.const 496 - i32.const 864 + i32.const 528 + i32.const 896 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -2590,8 +2596,8 @@ i32.shr_u i32.gt_u if - i32.const 192 - i32.const 864 + i32.const 224 + i32.const 896 i32.const 19 i32.const 48 call $~lib/builtins/abort @@ -2682,8 +2688,8 @@ i32.const 0 i32.lt_s if - i32.const 496 - i32.const 864 + i32.const 528 + i32.const 896 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -2822,8 +2828,8 @@ i32.const 3 i32.eq if - i32.const 912 - i32.const 368 + i32.const 944 + i32.const 400 i32.const 337 i32.const 7 call $~lib/builtins/abort @@ -2854,8 +2860,8 @@ i32.const 3 i32.ne if - i32.const 976 - i32.const 368 + i32.const 1008 + i32.const 400 i32.const 351 i32.const 5 call $~lib/builtins/abort @@ -2943,19 +2949,19 @@ local.get $0 call $~lib/rt/itcms/__visit end - i32.const 496 + i32.const 528 local.get $0 call $~lib/rt/itcms/__visit - i32.const 192 + i32.const 224 local.get $0 call $~lib/rt/itcms/__visit - i32.const 304 + i32.const 336 local.get $0 call $~lib/rt/itcms/__visit - i32.const 912 + i32.const 944 local.get $0 call $~lib/rt/itcms/__visit - i32.const 976 + i32.const 1008 local.get $0 call $~lib/rt/itcms/__visit ) @@ -2970,6 +2976,17 @@ call $~lib/rt/itcms/__visit end ) + (func $~lib/function/Function<%28%29=>void>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>#__visit + ) (func $~lib/typedarray/Int16Array~visit (param $0 i32) (param $1 i32) local.get $0 local.get $1 @@ -3093,22 +3110,28 @@ block $~lib/typedarray/Uint64Array block $~lib/typedarray/Float32Array block $~lib/typedarray/Int16Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/typedarray/Int16Array $~lib/typedarray/Float32Array $~lib/typedarray/Uint64Array $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/array/Array $bindings/esm/PlainObject $~lib/typedarray/Uint8Array $~lib/array/Array<~lib/string/String> $bindings/esm/NonPlainObject $invalid + block $~lib/function/Function<%28%29=>void> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28%29=>void> $~lib/typedarray/Int16Array $~lib/typedarray/Float32Array $~lib/typedarray/Uint64Array $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/array/Array $bindings/esm/PlainObject $~lib/typedarray/Uint8Array $~lib/array/Array<~lib/string/String> $bindings/esm/NonPlainObject $invalid + end + return end return end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit return end local.get $0 local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit + call $~lib/function/Function<%28%29=>void>~visit return end local.get $0 @@ -3176,13 +3199,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 416 + i32.const 448 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 448 + i32.const 480 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 592 + i32.const 624 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace ) @@ -3191,8 +3214,8 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 17552 - i32.const 17600 + i32.const 17584 + i32.const 17632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3209,7 +3232,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 96 + i32.const 128 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 @@ -3222,7 +3245,7 @@ f64.const 0 f64.const 0 call $~lib/builtins/trace - i32.const 128 + i32.const 160 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 @@ -3258,8 +3281,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 192 - i32.const 240 + i32.const 224 + i32.const 272 i32.const 52 i32.const 43 call $~lib/builtins/abort @@ -3360,7 +3383,7 @@ i32.const 0 i32.eq if - i32.const 704 + i32.const 736 local.set $6 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -3464,8 +3487,8 @@ i32.shr_u i32.gt_u if - i32.const 192 - i32.const 240 + i32.const 224 + i32.const 272 i32.const 19 i32.const 57 call $~lib/builtins/abort @@ -3516,7 +3539,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 12 - i32.const 5 + i32.const 6 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -3636,8 +3659,8 @@ i32.shr_u i32.gt_u if - i32.const 192 - i32.const 800 + i32.const 224 + i32.const 832 i32.const 91 i32.const 60 call $~lib/builtins/abort @@ -3649,7 +3672,7 @@ local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 6 + i32.const 7 call $~lib/rt/itcms/__new local.tee $3 i32.store @@ -3764,7 +3787,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 9 + i32.const 10 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -3787,8 +3810,8 @@ i32.shr_u i32.gt_u if - i32.const 192 - i32.const 864 + i32.const 224 + i32.const 896 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -3930,7 +3953,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 68 - i32.const 10 + i32.const 11 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -4044,7 +4067,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 13 + i32.const 14 call $~lib/rt/itcms/__new local.tee $0 i32.store diff --git a/tests/compiler/bindings/esm.release.d.ts b/tests/compiler/bindings/esm.release.d.ts index 6e2bafad5d..d98ef3b22f 100644 --- a/tests/compiler/bindings/esm.release.d.ts +++ b/tests/compiler/bindings/esm.release.d.ts @@ -124,27 +124,32 @@ export declare function arrayFunction(a: Array, b: Array): Array * @param b `bindings/esm/PlainObject` * @returns `bindings/esm/PlainObject` */ -export declare function objectFunction(a: __Record10, b: __Record10): __Record10; +export declare function objectFunction(a: __Record11, b: __Record11): __Record11; /** * bindings/esm/newInternref * @returns `bindings/esm/NonPlainObject` */ -export declare function newInternref(): __Internref13; +export declare function newInternref(): __Internref14; /** * bindings/esm/internrefFunction * @param a `bindings/esm/NonPlainObject` * @param b `bindings/esm/NonPlainObject` * @returns `bindings/esm/NonPlainObject` */ -export declare function internrefFunction(a: __Internref13, b: __Internref13): __Internref13; +export declare function internrefFunction(a: __Internref14, b: __Internref14): __Internref14; /** * bindings/esm/functionFunction * @param fn `() => void` * @returns `() => void` */ -export declare function functionFunction(fn: __Internref14): __Internref14; +export declare function functionFunction(fn: __Internref3): __Internref3; +/** bindings/esm/fn */ +export declare const fn: { + /** @type `() => void` */ + get value(): __Internref3 +}; /** bindings/esm/PlainObject */ -declare interface __Record10 { +declare interface __Record11 { /** @type `i8` */ a: number | TOmittable; /** @type `i16` */ @@ -179,10 +184,10 @@ declare interface __Record10 { p: Array | null | TOmittable; } /** bindings/esm/NonPlainObject */ -declare class __Internref13 extends Number { - private __nominal13: symbol; -} -/** ~lib/function/Function<%28%29=>void> */ declare class __Internref14 extends Number { private __nominal14: symbol; } +/** ~lib/function/Function<%28%29=>void> */ +declare class __Internref3 extends Number { + private __nominal3: symbol; +} diff --git a/tests/compiler/bindings/esm.release.js b/tests/compiler/bindings/esm.release.js index fa7fca5def..599538b218 100644 --- a/tests/compiler/bindings/esm.release.js +++ b/tests/compiler/bindings/esm.release.js @@ -127,8 +127,8 @@ async function instantiate(module, imports = {}) { }, typedarrayFunction(a, b) { // bindings/esm/typedarrayFunction(~lib/typedarray/Int16Array, ~lib/typedarray/Float32Array) => ~lib/typedarray/Uint64Array - a = __retain(__lowerTypedArray(Int16Array, 3, 1, a) || __notnull()); - b = __lowerTypedArray(Float32Array, 4, 2, b) || __notnull(); + a = __retain(__lowerTypedArray(Int16Array, 4, 1, a) || __notnull()); + b = __lowerTypedArray(Float32Array, 5, 2, b) || __notnull(); try { return __liftTypedArray(BigUint64Array, exports.typedarrayFunction(a, b) >>> 0); } finally { @@ -137,8 +137,8 @@ async function instantiate(module, imports = {}) { }, staticarrayFunction(a, b) { // bindings/esm/staticarrayFunction(~lib/staticarray/StaticArray, ~lib/staticarray/StaticArray) => ~lib/staticarray/StaticArray - a = __retain(__lowerStaticArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 6, 2, a, Int32Array) || __notnull()); - b = __lowerStaticArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 6, 2, b, Int32Array) || __notnull(); + a = __retain(__lowerStaticArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 7, 2, a, Int32Array) || __notnull()); + b = __lowerStaticArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 7, 2, b, Int32Array) || __notnull(); try { return __liftStaticArray(pointer => new Int32Array(memory.buffer)[pointer >>> 2], 2, exports.staticarrayFunction(a, b) >>> 0); } finally { @@ -147,18 +147,18 @@ async function instantiate(module, imports = {}) { }, staticarrayU16(a) { // bindings/esm/staticarrayU16(~lib/staticarray/StaticArray) => ~lib/staticarray/StaticArray - a = __lowerStaticArray((pointer, value) => { new Uint16Array(memory.buffer)[pointer >>> 1] = value; }, 7, 1, a, Uint16Array) || __notnull(); + a = __lowerStaticArray((pointer, value) => { new Uint16Array(memory.buffer)[pointer >>> 1] = value; }, 8, 1, a, Uint16Array) || __notnull(); return __liftStaticArray(pointer => new Uint16Array(memory.buffer)[pointer >>> 1], 1, exports.staticarrayU16(a) >>> 0); }, staticarrayI64(a) { // bindings/esm/staticarrayI64(~lib/staticarray/StaticArray) => ~lib/staticarray/StaticArray - a = __lowerStaticArray((pointer, value) => { new BigInt64Array(memory.buffer)[pointer >>> 3] = value || 0n; }, 8, 3, a, BigInt64Array) || __notnull(); + a = __lowerStaticArray((pointer, value) => { new BigInt64Array(memory.buffer)[pointer >>> 3] = value || 0n; }, 9, 3, a, BigInt64Array) || __notnull(); return __liftStaticArray(pointer => new BigInt64Array(memory.buffer)[pointer >>> 3], 3, exports.staticarrayI64(a) >>> 0); }, arrayFunction(a, b) { // bindings/esm/arrayFunction(~lib/array/Array, ~lib/array/Array) => ~lib/array/Array - a = __retain(__lowerArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 9, 2, a) || __notnull()); - b = __lowerArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 9, 2, b) || __notnull(); + a = __retain(__lowerArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 10, 2, a) || __notnull()); + b = __lowerArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 10, 2, b) || __notnull(); try { return __liftArray(pointer => new Int32Array(memory.buffer)[pointer >>> 2], 2, exports.arrayFunction(a, b) >>> 0); } finally { @@ -167,10 +167,10 @@ async function instantiate(module, imports = {}) { }, objectFunction(a, b) { // bindings/esm/objectFunction(bindings/esm/PlainObject, bindings/esm/PlainObject) => bindings/esm/PlainObject - a = __retain(__lowerRecord10(a) || __notnull()); - b = __lowerRecord10(b) || __notnull(); + a = __retain(__lowerRecord11(a) || __notnull()); + b = __lowerRecord11(b) || __notnull(); try { - return __liftRecord10(exports.objectFunction(a, b) >>> 0); + return __liftRecord11(exports.objectFunction(a, b) >>> 0); } finally { __release(a); } @@ -194,12 +194,19 @@ async function instantiate(module, imports = {}) { fn = __lowerInternref(fn) || __notnull(); return __liftInternref(exports.functionFunction(fn) >>> 0); }, + fn: { + // bindings/esm/fn: () => void + valueOf() { return this.value; }, + get value() { + return __liftInternref(exports.fn.value >>> 0); + } + }, }, exports); - function __lowerRecord10(value) { + function __lowerRecord11(value) { // bindings/esm/PlainObject // Hint: Opt-out from lowering as a record by providing an empty constructor if (value == null) return 0; - const pointer = exports.__pin(exports.__new(68, 10)); + const pointer = exports.__pin(exports.__new(68, 11)); new Int8Array(memory.buffer)[pointer + 0 >>> 0] = value.a; new Int16Array(memory.buffer)[pointer + 2 >>> 1] = value.b; new Int32Array(memory.buffer)[pointer + 4 >>> 2] = value.c; @@ -214,12 +221,12 @@ async function instantiate(module, imports = {}) { new Float32Array(memory.buffer)[pointer + 44 >>> 2] = value.l; new Float64Array(memory.buffer)[pointer + 48 >>> 3] = value.m; new Uint32Array(memory.buffer)[pointer + 56 >>> 2] = __lowerString(value.n); - new Uint32Array(memory.buffer)[pointer + 60 >>> 2] = __lowerTypedArray(Uint8Array, 11, 0, value.o); - new Uint32Array(memory.buffer)[pointer + 64 >>> 2] = __lowerArray((pointer, value) => { new Uint32Array(memory.buffer)[pointer >>> 2] = __lowerString(value) || __notnull(); }, 12, 2, value.p); + new Uint32Array(memory.buffer)[pointer + 60 >>> 2] = __lowerTypedArray(Uint8Array, 12, 0, value.o); + new Uint32Array(memory.buffer)[pointer + 64 >>> 2] = __lowerArray((pointer, value) => { new Uint32Array(memory.buffer)[pointer >>> 2] = __lowerString(value) || __notnull(); }, 13, 2, value.p); exports.__unpin(pointer); return pointer; } - function __liftRecord10(pointer) { + function __liftRecord11(pointer) { // bindings/esm/PlainObject // Hint: Opt-out from lifting as a record by providing an empty constructor if (!pointer) return null; @@ -401,7 +408,8 @@ export const { objectFunction, newInternref, internrefFunction, - functionFunction + functionFunction, + fn } = await (async url => instantiate( await (async () => { try { return await globalThis.WebAssembly.compileStreaming(globalThis.fetch(url)); } diff --git a/tests/compiler/bindings/esm.release.wat b/tests/compiler/bindings/esm.release.wat index 3afe1c28c8..d46f201b4b 100644 --- a/tests/compiler/bindings/esm.release.wat +++ b/tests/compiler/bindings/esm.release.wat @@ -28,6 +28,7 @@ (global $bindings/esm/ConstEnum.ONE i32 (i32.const 1)) (global $bindings/esm/ConstEnum.TWO i32 (i32.const 2)) (global $bindings/esm/ConstEnum.THREE i32 (i32.const 3)) + (global $bindings/esm/fn i32 (i32.const 1120)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -39,8 +40,8 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 2048)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18548)) + (global $~lib/rt/__rtti_base i32 (i32.const 2080)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18588)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) (data (i32.const 1036) "\1c") @@ -48,38 +49,40 @@ (data (i32.const 1068) "\1c") (data (i32.const 1080) "\01\00\00\00\02\00\00\00b") (data (i32.const 1100) "\1c") - (data (i32.const 1112) "\01\00\00\00\n\00\00\00t\00r\00a\00c\00e") - (data (i32.const 1132) "<") - (data (i32.const 1144) "\01\00\00\00&\00\00\004\002\00 \00f\00r\00o\00m\00 \00c\00o\00n\00s\00o\00l\00e\00.\00l\00o\00g") - (data (i32.const 1196) ",") - (data (i32.const 1208) "\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 1244) "<") - (data (i32.const 1256) "\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 1308) "<") - (data (i32.const 1320) "\01\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1372) "<") - (data (i32.const 1384) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data (i32.const 1500) "<") - (data (i32.const 1512) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1564) ",") - (data (i32.const 1576) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 1644) "<") - (data (i32.const 1656) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1708) "\1c") - (data (i32.const 1720) "\01") - (data (i32.const 1740) "<") - (data (i32.const 1752) "\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1804) "<") - (data (i32.const 1816) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1868) ",") - (data (i32.const 1880) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1916) "<") - (data (i32.const 1928) "\01\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d") - (data (i32.const 1980) "<") - (data (i32.const 1992) "\01\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d") - (data (i32.const 2048) "\0e\00\00\00 \00\00\00\00\00\00\00 ") - (data (i32.const 2076) "\81\08\00\00\02\00\00\00\01\19\00\00\02\00\00\00\01\02\00\00\02\00\00\00$\t\00\00\00\00\00\00\a4\00\00\00\00\00\00\00$\n\00\00\00\00\00\00\02\t") - (data (i32.const 2140) "A\00\00\00\02\00\00\00\02A\00\00\00\00\00\00 ") + (data (i32.const 1112) "\03\00\00\00\08\00\00\00\01") + (data (i32.const 1132) "\1c") + (data (i32.const 1144) "\01\00\00\00\n\00\00\00t\00r\00a\00c\00e") + (data (i32.const 1164) "<") + (data (i32.const 1176) "\01\00\00\00&\00\00\004\002\00 \00f\00r\00o\00m\00 \00c\00o\00n\00s\00o\00l\00e\00.\00l\00o\00g") + (data (i32.const 1228) ",") + (data (i32.const 1240) "\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 1276) "<") + (data (i32.const 1288) "\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 1340) "<") + (data (i32.const 1352) "\01\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1404) "<") + (data (i32.const 1416) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data (i32.const 1532) "<") + (data (i32.const 1544) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 1596) ",") + (data (i32.const 1608) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 1676) "<") + (data (i32.const 1688) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1740) "\1c") + (data (i32.const 1752) "\01") + (data (i32.const 1772) "<") + (data (i32.const 1784) "\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1836) "<") + (data (i32.const 1848) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1900) ",") + (data (i32.const 1912) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1948) "<") + (data (i32.const 1960) "\01\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d") + (data (i32.const 2012) "<") + (data (i32.const 2024) "\01\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d") + (data (i32.const 2080) "\0f\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 2116) "\81\08\00\00\02\00\00\00\01\19\00\00\02\00\00\00\01\02\00\00\02\00\00\00$\t\00\00\00\00\00\00\a4\00\00\00\00\00\00\00$\n\00\00\00\00\00\00\02\t") + (data (i32.const 2180) "A\00\00\00\02\00\00\00\02A\00\00\00\00\00\00 ") (export "plainGlobal" (global $bindings/esm/plainGlobal)) (export "plainMutableGlobal" (global $bindings/esm/plainMutableGlobal)) (export "stringGlobal" (global $bindings/esm/stringGlobal)) @@ -95,6 +98,7 @@ (export "getMaxUnsigned32" (func $bindings/esm/getMaxUnsigned32)) (export "getMaxUnsigned64" (func $bindings/esm/getMaxUnsigned64)) (export "newInternref" (func $bindings/esm/newInternref)) + (export "fn" (global $bindings/esm/fn)) (export "__new" (func $~lib/rt/itcms/__new)) (export "__pin" (func $~lib/rt/itcms/__pin)) (export "__unpin" (func $~lib/rt/itcms/__unpin)) @@ -141,15 +145,15 @@ local.get $0 call $byn-split-outlined-A$~lib/rt/itcms/__visit end - i32.const 1520 + i32.const 1552 call $byn-split-outlined-A$~lib/rt/itcms/__visit - i32.const 1216 + i32.const 1248 call $byn-split-outlined-A$~lib/rt/itcms/__visit - i32.const 1328 + i32.const 1360 call $byn-split-outlined-A$~lib/rt/itcms/__visit - i32.const 1936 + i32.const 1968 call $byn-split-outlined-A$~lib/rt/itcms/__visit - i32.const 2000 + i32.const 2032 call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -170,7 +174,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 1424 i32.const 159 i32.const 16 call $~lib/builtins/abort @@ -200,7 +204,7 @@ if i32.const 0 local.get $0 - i32.const 18548 + i32.const 18588 i32.lt_u local.get $0 i32.load offset=8 @@ -208,7 +212,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1424 i32.const 127 i32.const 18 call $~lib/builtins/abort @@ -222,7 +226,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1424 i32.const 131 i32.const 16 call $~lib/builtins/abort @@ -254,7 +258,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1424 i32.const 147 i32.const 30 call $~lib/builtins/abort @@ -276,12 +280,12 @@ i32.const 1 else local.get $2 - i32.const 2048 + i32.const 2080 i32.load i32.gt_u if - i32.const 1520 - i32.const 1584 + i32.const 1552 + i32.const 1616 i32.const 22 i32.const 28 call $~lib/builtins/abort @@ -290,7 +294,7 @@ local.get $2 i32.const 3 i32.shl - i32.const 2052 + i32.const 2084 i32.add i32.load i32.const 32 @@ -337,7 +341,7 @@ i32.eqz if i32.const 0 - i32.const 1664 + i32.const 1696 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -351,7 +355,7 @@ i32.lt_u if i32.const 0 - i32.const 1664 + i32.const 1696 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -397,7 +401,7 @@ i32.eqz if i32.const 0 - i32.const 1664 + i32.const 1696 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -487,7 +491,7 @@ i32.eqz if i32.const 0 - i32.const 1664 + i32.const 1696 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -501,7 +505,7 @@ i32.eqz if i32.const 0 - i32.const 1664 + i32.const 1696 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -562,7 +566,7 @@ i32.eqz if i32.const 0 - i32.const 1664 + i32.const 1696 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -595,7 +599,7 @@ i32.lt_u if i32.const 0 - i32.const 1664 + i32.const 1696 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -610,7 +614,7 @@ i32.ne if i32.const 0 - i32.const 1664 + i32.const 1696 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -661,7 +665,7 @@ i32.eqz if i32.const 0 - i32.const 1664 + i32.const 1696 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -731,7 +735,7 @@ i32.gt_u if i32.const 0 - i32.const 1664 + i32.const 1696 i32.const 377 i32.const 14 call $~lib/builtins/abort @@ -756,7 +760,7 @@ i32.gt_u if i32.const 0 - i32.const 1664 + i32.const 1696 i32.const 384 i32.const 16 call $~lib/builtins/abort @@ -784,7 +788,7 @@ i32.gt_u if i32.const 0 - i32.const 1664 + i32.const 1696 i32.const 397 i32.const 5 call $~lib/builtins/abort @@ -855,10 +859,10 @@ if unreachable end - i32.const 18560 + i32.const 18592 i32.const 0 i32.store - i32.const 20128 + i32.const 20160 i32.const 0 i32.store loop $for-loop|0 @@ -869,7 +873,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 18560 + i32.const 18592 i32.add i32.const 0 i32.store offset=4 @@ -887,7 +891,7 @@ i32.add i32.const 2 i32.shl - i32.const 18560 + i32.const 18592 i32.add i32.const 0 i32.store offset=96 @@ -905,13 +909,13 @@ br $for-loop|0 end end - i32.const 18560 - i32.const 20132 + i32.const 18592 + i32.const 20164 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 18560 + i32.const 18592 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -996,7 +1000,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 18548 + i32.const 18588 i32.lt_u if local.get $0 @@ -1089,14 +1093,14 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 1424 i32.const 228 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 18548 + i32.const 18588 i32.lt_u if local.get $0 @@ -1119,7 +1123,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 18548 + i32.const 18588 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1148,7 +1152,7 @@ end if i32.const 0 - i32.const 1664 + i32.const 1696 i32.const 559 i32.const 3 call $~lib/builtins/abort @@ -1231,7 +1235,7 @@ i32.eqz if i32.const 0 - i32.const 1664 + i32.const 1696 i32.const 330 i32.const 14 call $~lib/builtins/abort @@ -1283,7 +1287,7 @@ i32.eqz if i32.const 0 - i32.const 1664 + i32.const 1696 i32.const 343 i32.const 18 call $~lib/builtins/abort @@ -1315,8 +1319,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1328 - i32.const 1392 + i32.const 1360 + i32.const 1424 i32.const 260 i32.const 31 call $~lib/builtins/abort @@ -1381,8 +1385,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1328 - i32.const 1664 + i32.const 1360 + i32.const 1696 i32.const 458 i32.const 29 call $~lib/builtins/abort @@ -1472,7 +1476,7 @@ i32.eqz if i32.const 0 - i32.const 1664 + i32.const 1696 i32.const 496 i32.const 16 call $~lib/builtins/abort @@ -1487,7 +1491,7 @@ i32.gt_u if i32.const 0 - i32.const 1664 + i32.const 1696 i32.const 498 i32.const 14 call $~lib/builtins/abort @@ -1506,7 +1510,7 @@ i32.and if i32.const 0 - i32.const 1664 + i32.const 1696 i32.const 357 i32.const 14 call $~lib/builtins/abort @@ -1620,11 +1624,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s if - i32.const 18576 - i32.const 18624 + i32.const 18608 + i32.const 18656 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1660,7 +1664,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 1728 + i32.const 1760 local.set $2 br $__inlined_func$~lib/string/String#concat end @@ -1695,8 +1699,8 @@ i32.shr_u i32.ge_u if - i32.const 1520 - i32.const 1760 + i32.const 1552 + i32.const 1792 i32.const 1164 i32.const 64 call $~lib/builtins/abort @@ -1721,8 +1725,8 @@ i32.shr_u i32.ge_u if - i32.const 1520 - i32.const 1824 + i32.const 1552 + i32.const 1856 i32.const 118 i32.const 41 call $~lib/builtins/abort @@ -1745,8 +1749,8 @@ i32.shr_u i32.ge_u if - i32.const 1520 - i32.const 1824 + i32.const 1552 + i32.const 1856 i32.const 133 i32.const 41 call $~lib/builtins/abort @@ -1766,8 +1770,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1520 - i32.const 1888 + i32.const 1552 + i32.const 1920 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -1795,8 +1799,8 @@ i32.const 0 i32.lt_s if - i32.const 1520 - i32.const 1888 + i32.const 1552 + i32.const 1920 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -1817,8 +1821,8 @@ i32.const 268435455 i32.gt_u if - i32.const 1216 - i32.const 1888 + i32.const 1248 + i32.const 1920 i32.const 19 i32.const 48 call $~lib/builtins/abort @@ -1928,11 +1932,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s if - i32.const 18576 - i32.const 18624 + i32.const 18608 + i32.const 18656 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1944,7 +1948,7 @@ i32.store local.get $0 i32.const 0 - i32.const 13 + i32.const 14 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -1970,8 +1974,8 @@ i32.const 3 i32.eq if - i32.const 1936 - i32.const 1392 + i32.const 1968 + i32.const 1424 i32.const 337 i32.const 7 call $~lib/builtins/abort @@ -2023,8 +2027,8 @@ i32.const 3 i32.ne if - i32.const 2000 - i32.const 1392 + i32.const 2032 + i32.const 1424 i32.const 351 i32.const 5 call $~lib/builtins/abort @@ -2112,16 +2116,26 @@ block $~lib/staticarray/StaticArray block $~lib/staticarray/StaticArray block $~lib/staticarray/StaticArray - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $folding-inner1 $bindings/esm/PlainObject $folding-inner0 $~lib/array/Array<~lib/string/String> $bindings/esm/NonPlainObject $invalid + block $~lib/function/Function<%28%29=>void> + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner1 $~lib/function/Function<%28%29=>void> $folding-inner0 $folding-inner0 $folding-inner0 $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $folding-inner1 $bindings/esm/PlainObject $folding-inner0 $~lib/array/Array<~lib/string/String> $bindings/esm/NonPlainObject $invalid + end + return end return end + local.get $0 + i32.load offset=4 + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end return @@ -2221,11 +2235,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s if - i32.const 18576 - i32.const 18624 + i32.const 18608 + i32.const 18656 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2236,9 +2250,9 @@ i32.const 0 i32.store local.get $0 - i32.const 1120 + i32.const 1152 i32.store - i32.const 1120 + i32.const 1152 i32.const 1 f64.const 42 f64.const 0 @@ -2247,9 +2261,9 @@ f64.const 0 call $~lib/builtins/trace global.get $~lib/memory/__stack_pointer - i32.const 1152 + i32.const 1184 i32.store - i32.const 1152 + i32.const 1184 call $~lib/bindings/dom/console.log global.get $~lib/bindings/dom/Math.E call $~lib/bindings/dom/Math.log @@ -2263,19 +2277,11 @@ memory.size i32.const 16 i32.shl - i32.const 18548 + i32.const 18588 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1444 - i32.const 1440 - i32.store - i32.const 1448 - i32.const 1440 - i32.store - i32.const 1440 - global.set $~lib/rt/itcms/pinSpace i32.const 1476 i32.const 1472 i32.store @@ -2283,14 +2289,22 @@ i32.const 1472 i32.store i32.const 1472 + global.set $~lib/rt/itcms/pinSpace + i32.const 1508 + i32.const 1504 + i32.store + i32.const 1512 + i32.const 1504 + i32.store + i32.const 1504 global.set $~lib/rt/itcms/toSpace - i32.const 1620 - i32.const 1616 + i32.const 1652 + i32.const 1648 i32.store - i32.const 1624 - i32.const 1616 + i32.const 1656 + i32.const 1648 i32.store - i32.const 1616 + i32.const 1648 global.set $~lib/rt/itcms/fromSpace ) (func $export:bindings/esm/bufferFunction (param $0 i32) (param $1 i32) (result i32) @@ -2304,7 +2318,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2319,7 +2333,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2343,7 +2357,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2353,8 +2367,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1216 - i32.const 1264 + i32.const 1248 + i32.const 1296 i32.const 52 i32.const 43 call $~lib/builtins/abort @@ -2394,8 +2408,8 @@ local.get $5 return end - i32.const 18576 - i32.const 18624 + i32.const 18608 + i32.const 18656 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2408,11 +2422,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s if - i32.const 18576 - i32.const 18624 + i32.const 18608 + i32.const 18656 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2441,7 +2455,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2456,7 +2470,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2491,8 +2505,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 18576 - i32.const 18624 + i32.const 18608 + i32.const 18656 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2510,7 +2524,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -2525,7 +2539,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -2550,7 +2564,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner00 global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s br_if $folding-inner00 global.get $~lib/memory/__stack_pointer @@ -2559,7 +2573,7 @@ i32.store local.get $2 i32.const 12 - i32.const 5 + i32.const 6 call $~lib/rt/itcms/__new local.tee $2 i32.store @@ -2569,7 +2583,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s br_if $folding-inner00 global.get $~lib/memory/__stack_pointer @@ -2598,8 +2612,8 @@ i32.const 134217727 i32.gt_u if - i32.const 1216 - i32.const 1264 + i32.const 1248 + i32.const 1296 i32.const 19 i32.const 57 call $~lib/builtins/abort @@ -2662,8 +2676,8 @@ i32.shr_u i32.ge_u if - i32.const 1520 - i32.const 1760 + i32.const 1552 + i32.const 1792 i32.const 448 i32.const 64 call $~lib/builtins/abort @@ -2710,8 +2724,8 @@ i32.shr_u i32.ge_u if - i32.const 1520 - i32.const 1760 + i32.const 1552 + i32.const 1792 i32.const 1294 i32.const 64 call $~lib/builtins/abort @@ -2746,8 +2760,8 @@ local.get $2 return end - i32.const 18576 - i32.const 18624 + i32.const 18608 + i32.const 18656 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2763,7 +2777,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -2780,7 +2794,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2806,7 +2820,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2816,8 +2830,8 @@ i32.const 268435455 i32.gt_u if - i32.const 1216 - i32.const 1824 + i32.const 1248 + i32.const 1856 i32.const 91 i32.const 60 call $~lib/builtins/abort @@ -2827,7 +2841,7 @@ local.get $4 i32.const 2 i32.shl - i32.const 6 + i32.const 7 call $~lib/rt/itcms/__new local.tee $4 i32.store @@ -2908,8 +2922,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 18576 - i32.const 18624 + i32.const 18608 + i32.const 18656 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2922,11 +2936,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s if - i32.const 18576 - i32.const 18624 + i32.const 18608 + i32.const 18656 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2954,7 +2968,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -2973,7 +2987,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2991,7 +3005,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3000,7 +3014,7 @@ i64.store local.get $0 i32.const 16 - i32.const 9 + i32.const 10 call $~lib/rt/itcms/__new local.tee $2 i32.store @@ -3020,8 +3034,8 @@ i32.const 268435455 i32.gt_u if - i32.const 1216 - i32.const 1888 + i32.const 1248 + i32.const 1920 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -3126,8 +3140,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 18576 - i32.const 18624 + i32.const 18608 + i32.const 18656 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3142,7 +3156,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -3159,7 +3173,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3171,7 +3185,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3180,7 +3194,7 @@ i32.store local.get $3 i32.const 68 - i32.const 10 + i32.const 11 call $~lib/rt/itcms/__new local.tee $3 i32.store @@ -3268,8 +3282,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 18576 - i32.const 18624 + i32.const 18608 + i32.const 18656 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3282,11 +3296,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s if - i32.const 18576 - i32.const 18624 + i32.const 18608 + i32.const 18656 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3329,7 +3343,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1424 i32.const 294 i32.const 14 call $~lib/builtins/abort diff --git a/tests/compiler/bindings/esm.ts b/tests/compiler/bindings/esm.ts index 5f59c1e289..3e124ed2ad 100644 --- a/tests/compiler/bindings/esm.ts +++ b/tests/compiler/bindings/esm.ts @@ -134,6 +134,8 @@ export function functionFunction(fn: () => void): () => void { return fn; } +export const fn = function(): void {}; + trace("trace", 1, 42); import { console, Math } from "bindings/dom"; diff --git a/tests/compiler/bindings/raw.debug.d.ts b/tests/compiler/bindings/raw.debug.d.ts index 80c51a7d21..6a7a80544c 100644 --- a/tests/compiler/bindings/raw.debug.d.ts +++ b/tests/compiler/bindings/raw.debug.d.ts @@ -125,28 +125,33 @@ declare namespace __AdaptedExports { * @param b `bindings/esm/PlainObject` * @returns `bindings/esm/PlainObject` */ - export function objectFunction(a: __Record10, b: __Record10): __Record10; + export function objectFunction(a: __Record11, b: __Record11): __Record11; /** * bindings/esm/newInternref * @returns `bindings/esm/NonPlainObject` */ - export function newInternref(): __Internref13; + export function newInternref(): __Internref14; /** * bindings/esm/internrefFunction * @param a `bindings/esm/NonPlainObject` * @param b `bindings/esm/NonPlainObject` * @returns `bindings/esm/NonPlainObject` */ - export function internrefFunction(a: __Internref13, b: __Internref13): __Internref13; + export function internrefFunction(a: __Internref14, b: __Internref14): __Internref14; /** * bindings/esm/functionFunction * @param fn `() => void` * @returns `() => void` */ - export function functionFunction(fn: __Internref14): __Internref14; + export function functionFunction(fn: __Internref3): __Internref3; + /** bindings/esm/fn */ + export const fn: { + /** @type `() => void` */ + get value(): __Internref3 + }; } /** bindings/esm/PlainObject */ -declare interface __Record10 { +declare interface __Record11 { /** @type `i8` */ a: number | TOmittable; /** @type `i16` */ @@ -181,13 +186,13 @@ declare interface __Record10 { p: Array | null | TOmittable; } /** bindings/esm/NonPlainObject */ -declare class __Internref13 extends Number { - private __nominal13: symbol; -} -/** ~lib/function/Function<%28%29=>void> */ declare class __Internref14 extends Number { private __nominal14: symbol; } +/** ~lib/function/Function<%28%29=>void> */ +declare class __Internref3 extends Number { + private __nominal3: symbol; +} /** Instantiates the compiled WebAssembly module with the given imports. */ export declare function instantiate(module: WebAssembly.Module, imports: { env: unknown, diff --git a/tests/compiler/bindings/raw.debug.js b/tests/compiler/bindings/raw.debug.js index 9e2769a3fa..88facf8735 100644 --- a/tests/compiler/bindings/raw.debug.js +++ b/tests/compiler/bindings/raw.debug.js @@ -127,8 +127,8 @@ export async function instantiate(module, imports = {}) { }, typedarrayFunction(a, b) { // bindings/esm/typedarrayFunction(~lib/typedarray/Int16Array, ~lib/typedarray/Float32Array) => ~lib/typedarray/Uint64Array - a = __retain(__lowerTypedArray(Int16Array, 3, 1, a) || __notnull()); - b = __lowerTypedArray(Float32Array, 4, 2, b) || __notnull(); + a = __retain(__lowerTypedArray(Int16Array, 4, 1, a) || __notnull()); + b = __lowerTypedArray(Float32Array, 5, 2, b) || __notnull(); try { return __liftTypedArray(BigUint64Array, exports.typedarrayFunction(a, b) >>> 0); } finally { @@ -137,8 +137,8 @@ export async function instantiate(module, imports = {}) { }, staticarrayFunction(a, b) { // bindings/esm/staticarrayFunction(~lib/staticarray/StaticArray, ~lib/staticarray/StaticArray) => ~lib/staticarray/StaticArray - a = __retain(__lowerStaticArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 6, 2, a, Int32Array) || __notnull()); - b = __lowerStaticArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 6, 2, b, Int32Array) || __notnull(); + a = __retain(__lowerStaticArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 7, 2, a, Int32Array) || __notnull()); + b = __lowerStaticArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 7, 2, b, Int32Array) || __notnull(); try { return __liftStaticArray(pointer => new Int32Array(memory.buffer)[pointer >>> 2], 2, exports.staticarrayFunction(a, b) >>> 0); } finally { @@ -147,18 +147,18 @@ export async function instantiate(module, imports = {}) { }, staticarrayU16(a) { // bindings/esm/staticarrayU16(~lib/staticarray/StaticArray) => ~lib/staticarray/StaticArray - a = __lowerStaticArray((pointer, value) => { new Uint16Array(memory.buffer)[pointer >>> 1] = value; }, 7, 1, a, Uint16Array) || __notnull(); + a = __lowerStaticArray((pointer, value) => { new Uint16Array(memory.buffer)[pointer >>> 1] = value; }, 8, 1, a, Uint16Array) || __notnull(); return __liftStaticArray(pointer => new Uint16Array(memory.buffer)[pointer >>> 1], 1, exports.staticarrayU16(a) >>> 0); }, staticarrayI64(a) { // bindings/esm/staticarrayI64(~lib/staticarray/StaticArray) => ~lib/staticarray/StaticArray - a = __lowerStaticArray((pointer, value) => { new BigInt64Array(memory.buffer)[pointer >>> 3] = value || 0n; }, 8, 3, a, BigInt64Array) || __notnull(); + a = __lowerStaticArray((pointer, value) => { new BigInt64Array(memory.buffer)[pointer >>> 3] = value || 0n; }, 9, 3, a, BigInt64Array) || __notnull(); return __liftStaticArray(pointer => new BigInt64Array(memory.buffer)[pointer >>> 3], 3, exports.staticarrayI64(a) >>> 0); }, arrayFunction(a, b) { // bindings/esm/arrayFunction(~lib/array/Array, ~lib/array/Array) => ~lib/array/Array - a = __retain(__lowerArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 9, 2, a) || __notnull()); - b = __lowerArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 9, 2, b) || __notnull(); + a = __retain(__lowerArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 10, 2, a) || __notnull()); + b = __lowerArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 10, 2, b) || __notnull(); try { return __liftArray(pointer => new Int32Array(memory.buffer)[pointer >>> 2], 2, exports.arrayFunction(a, b) >>> 0); } finally { @@ -167,10 +167,10 @@ export async function instantiate(module, imports = {}) { }, objectFunction(a, b) { // bindings/esm/objectFunction(bindings/esm/PlainObject, bindings/esm/PlainObject) => bindings/esm/PlainObject - a = __retain(__lowerRecord10(a) || __notnull()); - b = __lowerRecord10(b) || __notnull(); + a = __retain(__lowerRecord11(a) || __notnull()); + b = __lowerRecord11(b) || __notnull(); try { - return __liftRecord10(exports.objectFunction(a, b) >>> 0); + return __liftRecord11(exports.objectFunction(a, b) >>> 0); } finally { __release(a); } @@ -194,12 +194,19 @@ export async function instantiate(module, imports = {}) { fn = __lowerInternref(fn) || __notnull(); return __liftInternref(exports.functionFunction(fn) >>> 0); }, + fn: { + // bindings/esm/fn: () => void + valueOf() { return this.value; }, + get value() { + return __liftInternref(exports.fn.value >>> 0); + } + }, }, exports); - function __lowerRecord10(value) { + function __lowerRecord11(value) { // bindings/esm/PlainObject // Hint: Opt-out from lowering as a record by providing an empty constructor if (value == null) return 0; - const pointer = exports.__pin(exports.__new(68, 10)); + const pointer = exports.__pin(exports.__new(68, 11)); new Int8Array(memory.buffer)[pointer + 0 >>> 0] = value.a; new Int16Array(memory.buffer)[pointer + 2 >>> 1] = value.b; new Int32Array(memory.buffer)[pointer + 4 >>> 2] = value.c; @@ -214,12 +221,12 @@ export async function instantiate(module, imports = {}) { new Float32Array(memory.buffer)[pointer + 44 >>> 2] = value.l; new Float64Array(memory.buffer)[pointer + 48 >>> 3] = value.m; new Uint32Array(memory.buffer)[pointer + 56 >>> 2] = __lowerString(value.n); - new Uint32Array(memory.buffer)[pointer + 60 >>> 2] = __lowerTypedArray(Uint8Array, 11, 0, value.o); - new Uint32Array(memory.buffer)[pointer + 64 >>> 2] = __lowerArray((pointer, value) => { new Uint32Array(memory.buffer)[pointer >>> 2] = __lowerString(value) || __notnull(); }, 12, 2, value.p); + new Uint32Array(memory.buffer)[pointer + 60 >>> 2] = __lowerTypedArray(Uint8Array, 12, 0, value.o); + new Uint32Array(memory.buffer)[pointer + 64 >>> 2] = __lowerArray((pointer, value) => { new Uint32Array(memory.buffer)[pointer >>> 2] = __lowerString(value) || __notnull(); }, 13, 2, value.p); exports.__unpin(pointer); return pointer; } - function __liftRecord10(pointer) { + function __liftRecord11(pointer) { // bindings/esm/PlainObject // Hint: Opt-out from lifting as a record by providing an empty constructor if (!pointer) return null; diff --git a/tests/compiler/bindings/raw.debug.wat b/tests/compiler/bindings/raw.debug.wat index 16d04dbbf2..e846c0e2db 100644 --- a/tests/compiler/bindings/raw.debug.wat +++ b/tests/compiler/bindings/raw.debug.wat @@ -35,6 +35,7 @@ (global $bindings/esm/ConstEnum.ONE i32 (i32.const 1)) (global $bindings/esm/ConstEnum.TWO i32 (i32.const 2)) (global $bindings/esm/ConstEnum.THREE i32 (i32.const 3)) + (global $bindings/esm/fn i32 (i32.const 96)) (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/builtins/u64.MAX_VALUE i64 (i64.const -1)) (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) @@ -53,35 +54,36 @@ (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 1024)) - (global $~lib/memory/__data_end i32 (i32.const 1140)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17524)) - (global $~lib/memory/__heap_base i32 (i32.const 17524)) + (global $~lib/rt/__rtti_base i32 (i32.const 1056)) + (global $~lib/memory/__data_end i32 (i32.const 1180)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17564)) + (global $~lib/memory/__heap_base i32 (i32.const 17564)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) (data (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00b\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00t\00r\00a\00c\00e\00\00\00") - (data (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\004\002\00 \00f\00r\00o\00m\00 \00c\00o\00n\00s\00o\00l\00e\00.\00l\00o\00g\00\00\00\00\00\00\00") - (data (i32.const 172) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 220) "<\00\00\00\00\00\00\00\00\00\00\00\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\00\00\00\00\00\00") - (data (i32.const 284) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00t\00r\00a\00c\00e\00\00\00") + (data (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\004\002\00 \00f\00r\00o\00m\00 \00c\00o\00n\00s\00o\00l\00e\00.\00l\00o\00g\00\00\00\00\00\00\00") + (data (i32.const 204) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 252) "<\00\00\00\00\00\00\00\00\00\00\00\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\00\00\00\00\00\00") + (data (i32.const 316) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data (i32.const 380) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 448) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 476) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data (i32.const 540) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data (i32.const 592) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 620) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 684) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 716) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data (i32.const 780) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00\00\00") - (data (i32.const 844) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") - (data (i32.const 892) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d\00\00\00") - (data (i32.const 956) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d\00\00\00\00\00") - (data (i32.const 1024) "\0e\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\81\08\00\00\02\00\00\00\01\19\00\00\02\00\00\00\01\02\00\00\02\00\00\00$\t\00\00\00\00\00\00\a4\00\00\00\00\00\00\00$\n\00\00\00\00\00\00\02\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00A\00\00\00\02\00\00\00\02A\00\00\00\00\00\00 \00\00\00\00\00\00\00") - (table $0 1 1 funcref) - (elem $0 (i32.const 1)) + (data (i32.const 480) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 508) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data (i32.const 572) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data (i32.const 624) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 652) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 716) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 748) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data (i32.const 812) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00\00\00") + (data (i32.const 876) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data (i32.const 924) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d\00\00\00") + (data (i32.const 988) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d\00\00\00\00\00") + (data (i32.const 1056) "\0f\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\81\08\00\00\02\00\00\00\01\19\00\00\02\00\00\00\01\02\00\00\02\00\00\00$\t\00\00\00\00\00\00\a4\00\00\00\00\00\00\00$\n\00\00\00\00\00\00\02\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00A\00\00\00\02\00\00\00\02A\00\00\00\00\00\00 \00\00\00\00\00\00\00") + (table $0 2 2 funcref) + (elem $0 (i32.const 1) $start:bindings/esm~anonymous|0) (export "plainGlobal" (global $bindings/esm/plainGlobal)) (export "plainMutableGlobal" (global $bindings/esm/plainMutableGlobal)) (export "stringGlobal" (global $bindings/esm/stringGlobal)) @@ -97,6 +99,7 @@ (export "getMaxUnsigned32" (func $bindings/esm/getMaxUnsigned32)) (export "getMaxUnsigned64" (func $bindings/esm/getMaxUnsigned64)) (export "newInternref" (func $bindings/esm/newInternref)) + (export "fn" (global $bindings/esm/fn)) (export "__new" (func $~lib/rt/itcms/__new)) (export "__pin" (func $~lib/rt/itcms/__pin)) (export "__unpin" (func $~lib/rt/itcms/__unpin)) @@ -116,6 +119,9 @@ (export "objectFunction" (func $export:bindings/esm/objectFunction)) (export "internrefFunction" (func $export:bindings/esm/internrefFunction)) (export "functionFunction" (func $export:bindings/esm/functionFunction)) + (func $start:bindings/esm~anonymous|0 + nop + ) (func $start:bindings/raw call $start:bindings/esm ) @@ -201,7 +207,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 400 i32.const 159 i32.const 16 call $~lib/builtins/abort @@ -267,7 +273,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 400 i32.const 127 i32.const 18 call $~lib/builtins/abort @@ -284,7 +290,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 400 i32.const 131 i32.const 16 call $~lib/builtins/abort @@ -306,8 +312,8 @@ i32.load i32.gt_u if - i32.const 496 - i32.const 560 + i32.const 528 + i32.const 592 i32.const 22 i32.const 28 call $~lib/builtins/abort @@ -373,7 +379,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 368 + i32.const 400 i32.const 147 i32.const 30 call $~lib/builtins/abort @@ -499,7 +505,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 672 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -519,7 +525,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 672 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -582,7 +588,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 672 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -714,7 +720,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 672 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -731,7 +737,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 672 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -811,7 +817,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 672 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -854,7 +860,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 672 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -872,7 +878,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 672 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -940,7 +946,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 672 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1045,7 +1051,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 672 i32.const 377 i32.const 14 call $~lib/builtins/abort @@ -1088,7 +1094,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 672 i32.const 384 i32.const 16 call $~lib/builtins/abort @@ -1121,7 +1127,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 672 i32.const 397 i32.const 5 call $~lib/builtins/abort @@ -1364,7 +1370,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 672 i32.const 559 i32.const 3 call $~lib/builtins/abort @@ -1586,7 +1592,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 400 i32.const 228 i32.const 20 call $~lib/builtins/abort @@ -1692,8 +1698,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 304 - i32.const 640 + i32.const 336 + i32.const 672 i32.const 458 i32.const 29 call $~lib/builtins/abort @@ -1777,7 +1783,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 672 i32.const 330 i32.const 14 call $~lib/builtins/abort @@ -1842,7 +1848,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 672 i32.const 343 i32.const 18 call $~lib/builtins/abort @@ -1993,7 +1999,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 672 i32.const 357 i32.const 14 call $~lib/builtins/abort @@ -2102,7 +2108,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 672 i32.const 496 i32.const 16 call $~lib/builtins/abort @@ -2122,7 +2128,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 672 i32.const 498 i32.const 14 call $~lib/builtins/abort @@ -2168,8 +2174,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 304 - i32.const 368 + i32.const 336 + i32.const 400 i32.const 260 i32.const 31 call $~lib/builtins/abort @@ -2251,7 +2257,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 400 i32.const 294 i32.const 14 call $~lib/builtins/abort @@ -2343,8 +2349,8 @@ i32.shr_u i32.ge_u if - i32.const 496 - i32.const 736 + i32.const 528 + i32.const 768 i32.const 448 i32.const 64 call $~lib/builtins/abort @@ -2366,8 +2372,8 @@ i32.shr_u i32.ge_u if - i32.const 496 - i32.const 736 + i32.const 528 + i32.const 768 i32.const 1164 i32.const 64 call $~lib/builtins/abort @@ -2390,8 +2396,8 @@ i32.shr_u i32.ge_u if - i32.const 496 - i32.const 736 + i32.const 528 + i32.const 768 i32.const 1294 i32.const 64 call $~lib/builtins/abort @@ -2420,8 +2426,8 @@ call $~lib/staticarray/StaticArray#get:length i32.ge_u if - i32.const 496 - i32.const 800 + i32.const 528 + i32.const 832 i32.const 118 i32.const 41 call $~lib/builtins/abort @@ -2455,8 +2461,8 @@ call $~lib/staticarray/StaticArray#get:length i32.ge_u if - i32.const 496 - i32.const 800 + i32.const 528 + i32.const 832 i32.const 133 i32.const 41 call $~lib/builtins/abort @@ -2508,8 +2514,8 @@ i32.load offset=12 i32.ge_u if - i32.const 496 - i32.const 864 + i32.const 528 + i32.const 896 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -2593,8 +2599,8 @@ i32.shr_u i32.gt_u if - i32.const 192 - i32.const 864 + i32.const 224 + i32.const 896 i32.const 19 i32.const 48 call $~lib/builtins/abort @@ -2685,8 +2691,8 @@ i32.const 0 i32.lt_s if - i32.const 496 - i32.const 864 + i32.const 528 + i32.const 896 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -2825,8 +2831,8 @@ i32.const 3 i32.eq if - i32.const 912 - i32.const 368 + i32.const 944 + i32.const 400 i32.const 337 i32.const 7 call $~lib/builtins/abort @@ -2857,8 +2863,8 @@ i32.const 3 i32.ne if - i32.const 976 - i32.const 368 + i32.const 1008 + i32.const 400 i32.const 351 i32.const 5 call $~lib/builtins/abort @@ -2932,19 +2938,19 @@ ) (func $~lib/rt/__visit_globals (param $0 i32) (local $1 i32) - i32.const 496 + i32.const 528 local.get $0 call $~lib/rt/itcms/__visit - i32.const 192 + i32.const 224 local.get $0 call $~lib/rt/itcms/__visit - i32.const 304 + i32.const 336 local.get $0 call $~lib/rt/itcms/__visit - i32.const 912 + i32.const 944 local.get $0 call $~lib/rt/itcms/__visit - i32.const 976 + i32.const 1008 local.get $0 call $~lib/rt/itcms/__visit global.get $bindings/esm/stringGlobal @@ -2973,6 +2979,17 @@ call $~lib/rt/itcms/__visit end ) + (func $~lib/function/Function<%28%29=>void>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>#__visit + ) (func $~lib/typedarray/Int16Array~visit (param $0 i32) (param $1 i32) local.get $0 local.get $1 @@ -3096,22 +3113,28 @@ block $~lib/typedarray/Uint64Array block $~lib/typedarray/Float32Array block $~lib/typedarray/Int16Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/typedarray/Int16Array $~lib/typedarray/Float32Array $~lib/typedarray/Uint64Array $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/array/Array $bindings/esm/PlainObject $~lib/typedarray/Uint8Array $~lib/array/Array<~lib/string/String> $bindings/esm/NonPlainObject $invalid + block $~lib/function/Function<%28%29=>void> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28%29=>void> $~lib/typedarray/Int16Array $~lib/typedarray/Float32Array $~lib/typedarray/Uint64Array $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/array/Array $bindings/esm/PlainObject $~lib/typedarray/Uint8Array $~lib/array/Array<~lib/string/String> $bindings/esm/NonPlainObject $invalid + end + return end return end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit return end local.get $0 local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit + call $~lib/function/Function<%28%29=>void>~visit return end local.get $0 @@ -3179,13 +3202,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 416 + i32.const 448 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 448 + i32.const 480 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 592 + i32.const 624 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace ) @@ -3194,8 +3217,8 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 17552 - i32.const 17600 + i32.const 17584 + i32.const 17632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3212,7 +3235,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 96 + i32.const 128 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 @@ -3225,7 +3248,7 @@ f64.const 0 f64.const 0 call $~lib/builtins/trace - i32.const 128 + i32.const 160 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 @@ -3261,8 +3284,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 192 - i32.const 240 + i32.const 224 + i32.const 272 i32.const 52 i32.const 43 call $~lib/builtins/abort @@ -3363,7 +3386,7 @@ i32.const 0 i32.eq if - i32.const 704 + i32.const 736 local.set $6 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -3467,8 +3490,8 @@ i32.shr_u i32.gt_u if - i32.const 192 - i32.const 240 + i32.const 224 + i32.const 272 i32.const 19 i32.const 57 call $~lib/builtins/abort @@ -3519,7 +3542,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 12 - i32.const 5 + i32.const 6 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -3639,8 +3662,8 @@ i32.shr_u i32.gt_u if - i32.const 192 - i32.const 800 + i32.const 224 + i32.const 832 i32.const 91 i32.const 60 call $~lib/builtins/abort @@ -3652,7 +3675,7 @@ local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 6 + i32.const 7 call $~lib/rt/itcms/__new local.tee $3 i32.store @@ -3767,7 +3790,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 9 + i32.const 10 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -3790,8 +3813,8 @@ i32.shr_u i32.gt_u if - i32.const 192 - i32.const 864 + i32.const 224 + i32.const 896 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -3933,7 +3956,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 68 - i32.const 10 + i32.const 11 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -4047,7 +4070,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 13 + i32.const 14 call $~lib/rt/itcms/__new local.tee $0 i32.store diff --git a/tests/compiler/bindings/raw.release.d.ts b/tests/compiler/bindings/raw.release.d.ts index 80c51a7d21..6a7a80544c 100644 --- a/tests/compiler/bindings/raw.release.d.ts +++ b/tests/compiler/bindings/raw.release.d.ts @@ -125,28 +125,33 @@ declare namespace __AdaptedExports { * @param b `bindings/esm/PlainObject` * @returns `bindings/esm/PlainObject` */ - export function objectFunction(a: __Record10, b: __Record10): __Record10; + export function objectFunction(a: __Record11, b: __Record11): __Record11; /** * bindings/esm/newInternref * @returns `bindings/esm/NonPlainObject` */ - export function newInternref(): __Internref13; + export function newInternref(): __Internref14; /** * bindings/esm/internrefFunction * @param a `bindings/esm/NonPlainObject` * @param b `bindings/esm/NonPlainObject` * @returns `bindings/esm/NonPlainObject` */ - export function internrefFunction(a: __Internref13, b: __Internref13): __Internref13; + export function internrefFunction(a: __Internref14, b: __Internref14): __Internref14; /** * bindings/esm/functionFunction * @param fn `() => void` * @returns `() => void` */ - export function functionFunction(fn: __Internref14): __Internref14; + export function functionFunction(fn: __Internref3): __Internref3; + /** bindings/esm/fn */ + export const fn: { + /** @type `() => void` */ + get value(): __Internref3 + }; } /** bindings/esm/PlainObject */ -declare interface __Record10 { +declare interface __Record11 { /** @type `i8` */ a: number | TOmittable; /** @type `i16` */ @@ -181,13 +186,13 @@ declare interface __Record10 { p: Array | null | TOmittable; } /** bindings/esm/NonPlainObject */ -declare class __Internref13 extends Number { - private __nominal13: symbol; -} -/** ~lib/function/Function<%28%29=>void> */ declare class __Internref14 extends Number { private __nominal14: symbol; } +/** ~lib/function/Function<%28%29=>void> */ +declare class __Internref3 extends Number { + private __nominal3: symbol; +} /** Instantiates the compiled WebAssembly module with the given imports. */ export declare function instantiate(module: WebAssembly.Module, imports: { env: unknown, diff --git a/tests/compiler/bindings/raw.release.js b/tests/compiler/bindings/raw.release.js index 9e2769a3fa..88facf8735 100644 --- a/tests/compiler/bindings/raw.release.js +++ b/tests/compiler/bindings/raw.release.js @@ -127,8 +127,8 @@ export async function instantiate(module, imports = {}) { }, typedarrayFunction(a, b) { // bindings/esm/typedarrayFunction(~lib/typedarray/Int16Array, ~lib/typedarray/Float32Array) => ~lib/typedarray/Uint64Array - a = __retain(__lowerTypedArray(Int16Array, 3, 1, a) || __notnull()); - b = __lowerTypedArray(Float32Array, 4, 2, b) || __notnull(); + a = __retain(__lowerTypedArray(Int16Array, 4, 1, a) || __notnull()); + b = __lowerTypedArray(Float32Array, 5, 2, b) || __notnull(); try { return __liftTypedArray(BigUint64Array, exports.typedarrayFunction(a, b) >>> 0); } finally { @@ -137,8 +137,8 @@ export async function instantiate(module, imports = {}) { }, staticarrayFunction(a, b) { // bindings/esm/staticarrayFunction(~lib/staticarray/StaticArray, ~lib/staticarray/StaticArray) => ~lib/staticarray/StaticArray - a = __retain(__lowerStaticArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 6, 2, a, Int32Array) || __notnull()); - b = __lowerStaticArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 6, 2, b, Int32Array) || __notnull(); + a = __retain(__lowerStaticArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 7, 2, a, Int32Array) || __notnull()); + b = __lowerStaticArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 7, 2, b, Int32Array) || __notnull(); try { return __liftStaticArray(pointer => new Int32Array(memory.buffer)[pointer >>> 2], 2, exports.staticarrayFunction(a, b) >>> 0); } finally { @@ -147,18 +147,18 @@ export async function instantiate(module, imports = {}) { }, staticarrayU16(a) { // bindings/esm/staticarrayU16(~lib/staticarray/StaticArray) => ~lib/staticarray/StaticArray - a = __lowerStaticArray((pointer, value) => { new Uint16Array(memory.buffer)[pointer >>> 1] = value; }, 7, 1, a, Uint16Array) || __notnull(); + a = __lowerStaticArray((pointer, value) => { new Uint16Array(memory.buffer)[pointer >>> 1] = value; }, 8, 1, a, Uint16Array) || __notnull(); return __liftStaticArray(pointer => new Uint16Array(memory.buffer)[pointer >>> 1], 1, exports.staticarrayU16(a) >>> 0); }, staticarrayI64(a) { // bindings/esm/staticarrayI64(~lib/staticarray/StaticArray) => ~lib/staticarray/StaticArray - a = __lowerStaticArray((pointer, value) => { new BigInt64Array(memory.buffer)[pointer >>> 3] = value || 0n; }, 8, 3, a, BigInt64Array) || __notnull(); + a = __lowerStaticArray((pointer, value) => { new BigInt64Array(memory.buffer)[pointer >>> 3] = value || 0n; }, 9, 3, a, BigInt64Array) || __notnull(); return __liftStaticArray(pointer => new BigInt64Array(memory.buffer)[pointer >>> 3], 3, exports.staticarrayI64(a) >>> 0); }, arrayFunction(a, b) { // bindings/esm/arrayFunction(~lib/array/Array, ~lib/array/Array) => ~lib/array/Array - a = __retain(__lowerArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 9, 2, a) || __notnull()); - b = __lowerArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 9, 2, b) || __notnull(); + a = __retain(__lowerArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 10, 2, a) || __notnull()); + b = __lowerArray((pointer, value) => { new Int32Array(memory.buffer)[pointer >>> 2] = value; }, 10, 2, b) || __notnull(); try { return __liftArray(pointer => new Int32Array(memory.buffer)[pointer >>> 2], 2, exports.arrayFunction(a, b) >>> 0); } finally { @@ -167,10 +167,10 @@ export async function instantiate(module, imports = {}) { }, objectFunction(a, b) { // bindings/esm/objectFunction(bindings/esm/PlainObject, bindings/esm/PlainObject) => bindings/esm/PlainObject - a = __retain(__lowerRecord10(a) || __notnull()); - b = __lowerRecord10(b) || __notnull(); + a = __retain(__lowerRecord11(a) || __notnull()); + b = __lowerRecord11(b) || __notnull(); try { - return __liftRecord10(exports.objectFunction(a, b) >>> 0); + return __liftRecord11(exports.objectFunction(a, b) >>> 0); } finally { __release(a); } @@ -194,12 +194,19 @@ export async function instantiate(module, imports = {}) { fn = __lowerInternref(fn) || __notnull(); return __liftInternref(exports.functionFunction(fn) >>> 0); }, + fn: { + // bindings/esm/fn: () => void + valueOf() { return this.value; }, + get value() { + return __liftInternref(exports.fn.value >>> 0); + } + }, }, exports); - function __lowerRecord10(value) { + function __lowerRecord11(value) { // bindings/esm/PlainObject // Hint: Opt-out from lowering as a record by providing an empty constructor if (value == null) return 0; - const pointer = exports.__pin(exports.__new(68, 10)); + const pointer = exports.__pin(exports.__new(68, 11)); new Int8Array(memory.buffer)[pointer + 0 >>> 0] = value.a; new Int16Array(memory.buffer)[pointer + 2 >>> 1] = value.b; new Int32Array(memory.buffer)[pointer + 4 >>> 2] = value.c; @@ -214,12 +221,12 @@ export async function instantiate(module, imports = {}) { new Float32Array(memory.buffer)[pointer + 44 >>> 2] = value.l; new Float64Array(memory.buffer)[pointer + 48 >>> 3] = value.m; new Uint32Array(memory.buffer)[pointer + 56 >>> 2] = __lowerString(value.n); - new Uint32Array(memory.buffer)[pointer + 60 >>> 2] = __lowerTypedArray(Uint8Array, 11, 0, value.o); - new Uint32Array(memory.buffer)[pointer + 64 >>> 2] = __lowerArray((pointer, value) => { new Uint32Array(memory.buffer)[pointer >>> 2] = __lowerString(value) || __notnull(); }, 12, 2, value.p); + new Uint32Array(memory.buffer)[pointer + 60 >>> 2] = __lowerTypedArray(Uint8Array, 12, 0, value.o); + new Uint32Array(memory.buffer)[pointer + 64 >>> 2] = __lowerArray((pointer, value) => { new Uint32Array(memory.buffer)[pointer >>> 2] = __lowerString(value) || __notnull(); }, 13, 2, value.p); exports.__unpin(pointer); return pointer; } - function __liftRecord10(pointer) { + function __liftRecord11(pointer) { // bindings/esm/PlainObject // Hint: Opt-out from lifting as a record by providing an empty constructor if (!pointer) return null; diff --git a/tests/compiler/bindings/raw.release.wat b/tests/compiler/bindings/raw.release.wat index 964f5279b5..92ff37695f 100644 --- a/tests/compiler/bindings/raw.release.wat +++ b/tests/compiler/bindings/raw.release.wat @@ -28,6 +28,7 @@ (global $bindings/esm/ConstEnum.ONE i32 (i32.const 1)) (global $bindings/esm/ConstEnum.TWO i32 (i32.const 2)) (global $bindings/esm/ConstEnum.THREE i32 (i32.const 3)) + (global $bindings/esm/fn i32 (i32.const 1120)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -39,8 +40,8 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 2048)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18548)) + (global $~lib/rt/__rtti_base i32 (i32.const 2080)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18588)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) (data (i32.const 1036) "\1c") @@ -48,38 +49,40 @@ (data (i32.const 1068) "\1c") (data (i32.const 1080) "\01\00\00\00\02\00\00\00b") (data (i32.const 1100) "\1c") - (data (i32.const 1112) "\01\00\00\00\n\00\00\00t\00r\00a\00c\00e") - (data (i32.const 1132) "<") - (data (i32.const 1144) "\01\00\00\00&\00\00\004\002\00 \00f\00r\00o\00m\00 \00c\00o\00n\00s\00o\00l\00e\00.\00l\00o\00g") - (data (i32.const 1196) ",") - (data (i32.const 1208) "\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 1244) "<") - (data (i32.const 1256) "\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 1308) "<") - (data (i32.const 1320) "\01\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1372) "<") - (data (i32.const 1384) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data (i32.const 1500) "<") - (data (i32.const 1512) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1564) ",") - (data (i32.const 1576) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 1644) "<") - (data (i32.const 1656) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1708) "\1c") - (data (i32.const 1720) "\01") - (data (i32.const 1740) "<") - (data (i32.const 1752) "\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1804) "<") - (data (i32.const 1816) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1868) ",") - (data (i32.const 1880) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1916) "<") - (data (i32.const 1928) "\01\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d") - (data (i32.const 1980) "<") - (data (i32.const 1992) "\01\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d") - (data (i32.const 2048) "\0e\00\00\00 \00\00\00\00\00\00\00 ") - (data (i32.const 2076) "\81\08\00\00\02\00\00\00\01\19\00\00\02\00\00\00\01\02\00\00\02\00\00\00$\t\00\00\00\00\00\00\a4\00\00\00\00\00\00\00$\n\00\00\00\00\00\00\02\t") - (data (i32.const 2140) "A\00\00\00\02\00\00\00\02A\00\00\00\00\00\00 ") + (data (i32.const 1112) "\03\00\00\00\08\00\00\00\01") + (data (i32.const 1132) "\1c") + (data (i32.const 1144) "\01\00\00\00\n\00\00\00t\00r\00a\00c\00e") + (data (i32.const 1164) "<") + (data (i32.const 1176) "\01\00\00\00&\00\00\004\002\00 \00f\00r\00o\00m\00 \00c\00o\00n\00s\00o\00l\00e\00.\00l\00o\00g") + (data (i32.const 1228) ",") + (data (i32.const 1240) "\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 1276) "<") + (data (i32.const 1288) "\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 1340) "<") + (data (i32.const 1352) "\01\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1404) "<") + (data (i32.const 1416) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data (i32.const 1532) "<") + (data (i32.const 1544) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 1596) ",") + (data (i32.const 1608) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 1676) "<") + (data (i32.const 1688) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1740) "\1c") + (data (i32.const 1752) "\01") + (data (i32.const 1772) "<") + (data (i32.const 1784) "\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1836) "<") + (data (i32.const 1848) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1900) ",") + (data (i32.const 1912) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1948) "<") + (data (i32.const 1960) "\01\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d") + (data (i32.const 2012) "<") + (data (i32.const 2024) "\01\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d") + (data (i32.const 2080) "\0f\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 2116) "\81\08\00\00\02\00\00\00\01\19\00\00\02\00\00\00\01\02\00\00\02\00\00\00$\t\00\00\00\00\00\00\a4\00\00\00\00\00\00\00$\n\00\00\00\00\00\00\02\t") + (data (i32.const 2180) "A\00\00\00\02\00\00\00\02A\00\00\00\00\00\00 ") (export "plainGlobal" (global $bindings/esm/plainGlobal)) (export "plainMutableGlobal" (global $bindings/esm/plainMutableGlobal)) (export "stringGlobal" (global $bindings/esm/stringGlobal)) @@ -95,6 +98,7 @@ (export "getMaxUnsigned32" (func $bindings/esm/getMaxUnsigned32)) (export "getMaxUnsigned64" (func $bindings/esm/getMaxUnsigned64)) (export "newInternref" (func $bindings/esm/newInternref)) + (export "fn" (global $bindings/esm/fn)) (export "__new" (func $~lib/rt/itcms/__new)) (export "__pin" (func $~lib/rt/itcms/__pin)) (export "__unpin" (func $~lib/rt/itcms/__unpin)) @@ -133,15 +137,15 @@ (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1520 + i32.const 1552 call $byn-split-outlined-A$~lib/rt/itcms/__visit - i32.const 1216 + i32.const 1248 call $byn-split-outlined-A$~lib/rt/itcms/__visit - i32.const 1328 + i32.const 1360 call $byn-split-outlined-A$~lib/rt/itcms/__visit - i32.const 1936 + i32.const 1968 call $byn-split-outlined-A$~lib/rt/itcms/__visit - i32.const 2000 + i32.const 2032 call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 call $byn-split-outlined-A$~lib/rt/itcms/__visit @@ -170,7 +174,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 1424 i32.const 159 i32.const 16 call $~lib/builtins/abort @@ -200,7 +204,7 @@ if i32.const 0 local.get $0 - i32.const 18548 + i32.const 18588 i32.lt_u local.get $0 i32.load offset=8 @@ -208,7 +212,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1424 i32.const 127 i32.const 18 call $~lib/builtins/abort @@ -222,7 +226,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1424 i32.const 131 i32.const 16 call $~lib/builtins/abort @@ -254,7 +258,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1424 i32.const 147 i32.const 30 call $~lib/builtins/abort @@ -276,12 +280,12 @@ i32.const 1 else local.get $2 - i32.const 2048 + i32.const 2080 i32.load i32.gt_u if - i32.const 1520 - i32.const 1584 + i32.const 1552 + i32.const 1616 i32.const 22 i32.const 28 call $~lib/builtins/abort @@ -290,7 +294,7 @@ local.get $2 i32.const 3 i32.shl - i32.const 2052 + i32.const 2084 i32.add i32.load i32.const 32 @@ -337,7 +341,7 @@ i32.eqz if i32.const 0 - i32.const 1664 + i32.const 1696 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -351,7 +355,7 @@ i32.lt_u if i32.const 0 - i32.const 1664 + i32.const 1696 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -397,7 +401,7 @@ i32.eqz if i32.const 0 - i32.const 1664 + i32.const 1696 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -487,7 +491,7 @@ i32.eqz if i32.const 0 - i32.const 1664 + i32.const 1696 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -501,7 +505,7 @@ i32.eqz if i32.const 0 - i32.const 1664 + i32.const 1696 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -562,7 +566,7 @@ i32.eqz if i32.const 0 - i32.const 1664 + i32.const 1696 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -595,7 +599,7 @@ i32.lt_u if i32.const 0 - i32.const 1664 + i32.const 1696 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -610,7 +614,7 @@ i32.ne if i32.const 0 - i32.const 1664 + i32.const 1696 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -661,7 +665,7 @@ i32.eqz if i32.const 0 - i32.const 1664 + i32.const 1696 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -731,7 +735,7 @@ i32.gt_u if i32.const 0 - i32.const 1664 + i32.const 1696 i32.const 377 i32.const 14 call $~lib/builtins/abort @@ -756,7 +760,7 @@ i32.gt_u if i32.const 0 - i32.const 1664 + i32.const 1696 i32.const 384 i32.const 16 call $~lib/builtins/abort @@ -784,7 +788,7 @@ i32.gt_u if i32.const 0 - i32.const 1664 + i32.const 1696 i32.const 397 i32.const 5 call $~lib/builtins/abort @@ -855,10 +859,10 @@ if unreachable end - i32.const 18560 + i32.const 18592 i32.const 0 i32.store - i32.const 20128 + i32.const 20160 i32.const 0 i32.store loop $for-loop|0 @@ -869,7 +873,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 18560 + i32.const 18592 i32.add i32.const 0 i32.store offset=4 @@ -887,7 +891,7 @@ i32.add i32.const 2 i32.shl - i32.const 18560 + i32.const 18592 i32.add i32.const 0 i32.store offset=96 @@ -905,13 +909,13 @@ br $for-loop|0 end end - i32.const 18560 - i32.const 20132 + i32.const 18592 + i32.const 20164 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 18560 + i32.const 18592 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -996,7 +1000,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 18548 + i32.const 18588 i32.lt_u if local.get $0 @@ -1089,14 +1093,14 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 1424 i32.const 228 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 18548 + i32.const 18588 i32.lt_u if local.get $0 @@ -1119,7 +1123,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 18548 + i32.const 18588 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1148,7 +1152,7 @@ end if i32.const 0 - i32.const 1664 + i32.const 1696 i32.const 559 i32.const 3 call $~lib/builtins/abort @@ -1231,7 +1235,7 @@ i32.eqz if i32.const 0 - i32.const 1664 + i32.const 1696 i32.const 330 i32.const 14 call $~lib/builtins/abort @@ -1283,7 +1287,7 @@ i32.eqz if i32.const 0 - i32.const 1664 + i32.const 1696 i32.const 343 i32.const 18 call $~lib/builtins/abort @@ -1315,8 +1319,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1328 - i32.const 1392 + i32.const 1360 + i32.const 1424 i32.const 260 i32.const 31 call $~lib/builtins/abort @@ -1381,8 +1385,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1328 - i32.const 1664 + i32.const 1360 + i32.const 1696 i32.const 458 i32.const 29 call $~lib/builtins/abort @@ -1472,7 +1476,7 @@ i32.eqz if i32.const 0 - i32.const 1664 + i32.const 1696 i32.const 496 i32.const 16 call $~lib/builtins/abort @@ -1487,7 +1491,7 @@ i32.gt_u if i32.const 0 - i32.const 1664 + i32.const 1696 i32.const 498 i32.const 14 call $~lib/builtins/abort @@ -1506,7 +1510,7 @@ i32.and if i32.const 0 - i32.const 1664 + i32.const 1696 i32.const 357 i32.const 14 call $~lib/builtins/abort @@ -1620,11 +1624,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s if - i32.const 18576 - i32.const 18624 + i32.const 18608 + i32.const 18656 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1660,7 +1664,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 1728 + i32.const 1760 local.set $2 br $__inlined_func$~lib/string/String#concat end @@ -1695,8 +1699,8 @@ i32.shr_u i32.ge_u if - i32.const 1520 - i32.const 1760 + i32.const 1552 + i32.const 1792 i32.const 1164 i32.const 64 call $~lib/builtins/abort @@ -1721,8 +1725,8 @@ i32.shr_u i32.ge_u if - i32.const 1520 - i32.const 1824 + i32.const 1552 + i32.const 1856 i32.const 118 i32.const 41 call $~lib/builtins/abort @@ -1745,8 +1749,8 @@ i32.shr_u i32.ge_u if - i32.const 1520 - i32.const 1824 + i32.const 1552 + i32.const 1856 i32.const 133 i32.const 41 call $~lib/builtins/abort @@ -1766,8 +1770,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1520 - i32.const 1888 + i32.const 1552 + i32.const 1920 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -1795,8 +1799,8 @@ i32.const 0 i32.lt_s if - i32.const 1520 - i32.const 1888 + i32.const 1552 + i32.const 1920 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -1817,8 +1821,8 @@ i32.const 268435455 i32.gt_u if - i32.const 1216 - i32.const 1888 + i32.const 1248 + i32.const 1920 i32.const 19 i32.const 48 call $~lib/builtins/abort @@ -1928,11 +1932,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s if - i32.const 18576 - i32.const 18624 + i32.const 18608 + i32.const 18656 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1944,7 +1948,7 @@ i32.store local.get $0 i32.const 0 - i32.const 13 + i32.const 14 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -1970,8 +1974,8 @@ i32.const 3 i32.eq if - i32.const 1936 - i32.const 1392 + i32.const 1968 + i32.const 1424 i32.const 337 i32.const 7 call $~lib/builtins/abort @@ -2023,8 +2027,8 @@ i32.const 3 i32.ne if - i32.const 2000 - i32.const 1392 + i32.const 2032 + i32.const 1424 i32.const 351 i32.const 5 call $~lib/builtins/abort @@ -2112,16 +2116,26 @@ block $~lib/staticarray/StaticArray block $~lib/staticarray/StaticArray block $~lib/staticarray/StaticArray - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $folding-inner1 $bindings/esm/PlainObject $folding-inner0 $~lib/array/Array<~lib/string/String> $bindings/esm/NonPlainObject $invalid + block $~lib/function/Function<%28%29=>void> + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner1 $~lib/function/Function<%28%29=>void> $folding-inner0 $folding-inner0 $folding-inner0 $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $folding-inner1 $bindings/esm/PlainObject $folding-inner0 $~lib/array/Array<~lib/string/String> $bindings/esm/NonPlainObject $invalid + end + return end return end + local.get $0 + i32.load offset=4 + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end return @@ -2221,11 +2235,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s if - i32.const 18576 - i32.const 18624 + i32.const 18608 + i32.const 18656 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2236,9 +2250,9 @@ i32.const 0 i32.store local.get $0 - i32.const 1120 + i32.const 1152 i32.store - i32.const 1120 + i32.const 1152 i32.const 1 f64.const 42 f64.const 0 @@ -2247,9 +2261,9 @@ f64.const 0 call $~lib/builtins/trace global.get $~lib/memory/__stack_pointer - i32.const 1152 + i32.const 1184 i32.store - i32.const 1152 + i32.const 1184 call $~lib/bindings/dom/console.log global.get $~lib/bindings/dom/Math.E call $~lib/bindings/dom/Math.log @@ -2263,19 +2277,11 @@ memory.size i32.const 16 i32.shl - i32.const 18548 + i32.const 18588 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1444 - i32.const 1440 - i32.store - i32.const 1448 - i32.const 1440 - i32.store - i32.const 1440 - global.set $~lib/rt/itcms/pinSpace i32.const 1476 i32.const 1472 i32.store @@ -2283,14 +2289,22 @@ i32.const 1472 i32.store i32.const 1472 + global.set $~lib/rt/itcms/pinSpace + i32.const 1508 + i32.const 1504 + i32.store + i32.const 1512 + i32.const 1504 + i32.store + i32.const 1504 global.set $~lib/rt/itcms/toSpace - i32.const 1620 - i32.const 1616 + i32.const 1652 + i32.const 1648 i32.store - i32.const 1624 - i32.const 1616 + i32.const 1656 + i32.const 1648 i32.store - i32.const 1616 + i32.const 1648 global.set $~lib/rt/itcms/fromSpace ) (func $export:bindings/esm/bufferFunction (param $0 i32) (param $1 i32) (result i32) @@ -2304,7 +2318,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2319,7 +2333,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2343,7 +2357,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2353,8 +2367,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1216 - i32.const 1264 + i32.const 1248 + i32.const 1296 i32.const 52 i32.const 43 call $~lib/builtins/abort @@ -2394,8 +2408,8 @@ local.get $5 return end - i32.const 18576 - i32.const 18624 + i32.const 18608 + i32.const 18656 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2408,11 +2422,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s if - i32.const 18576 - i32.const 18624 + i32.const 18608 + i32.const 18656 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2441,7 +2455,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2456,7 +2470,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2491,8 +2505,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 18576 - i32.const 18624 + i32.const 18608 + i32.const 18656 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2510,7 +2524,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -2525,7 +2539,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -2550,7 +2564,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner00 global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s br_if $folding-inner00 global.get $~lib/memory/__stack_pointer @@ -2559,7 +2573,7 @@ i32.store local.get $2 i32.const 12 - i32.const 5 + i32.const 6 call $~lib/rt/itcms/__new local.tee $2 i32.store @@ -2569,7 +2583,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s br_if $folding-inner00 global.get $~lib/memory/__stack_pointer @@ -2598,8 +2612,8 @@ i32.const 134217727 i32.gt_u if - i32.const 1216 - i32.const 1264 + i32.const 1248 + i32.const 1296 i32.const 19 i32.const 57 call $~lib/builtins/abort @@ -2662,8 +2676,8 @@ i32.shr_u i32.ge_u if - i32.const 1520 - i32.const 1760 + i32.const 1552 + i32.const 1792 i32.const 448 i32.const 64 call $~lib/builtins/abort @@ -2710,8 +2724,8 @@ i32.shr_u i32.ge_u if - i32.const 1520 - i32.const 1760 + i32.const 1552 + i32.const 1792 i32.const 1294 i32.const 64 call $~lib/builtins/abort @@ -2746,8 +2760,8 @@ local.get $2 return end - i32.const 18576 - i32.const 18624 + i32.const 18608 + i32.const 18656 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2763,7 +2777,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -2780,7 +2794,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2806,7 +2820,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2816,8 +2830,8 @@ i32.const 268435455 i32.gt_u if - i32.const 1216 - i32.const 1824 + i32.const 1248 + i32.const 1856 i32.const 91 i32.const 60 call $~lib/builtins/abort @@ -2827,7 +2841,7 @@ local.get $4 i32.const 2 i32.shl - i32.const 6 + i32.const 7 call $~lib/rt/itcms/__new local.tee $4 i32.store @@ -2908,8 +2922,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 18576 - i32.const 18624 + i32.const 18608 + i32.const 18656 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2922,11 +2936,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s if - i32.const 18576 - i32.const 18624 + i32.const 18608 + i32.const 18656 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2954,7 +2968,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -2973,7 +2987,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2991,7 +3005,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3000,7 +3014,7 @@ i64.store local.get $0 i32.const 16 - i32.const 9 + i32.const 10 call $~lib/rt/itcms/__new local.tee $2 i32.store @@ -3020,8 +3034,8 @@ i32.const 268435455 i32.gt_u if - i32.const 1216 - i32.const 1888 + i32.const 1248 + i32.const 1920 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -3126,8 +3140,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 18576 - i32.const 18624 + i32.const 18608 + i32.const 18656 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3142,7 +3156,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -3159,7 +3173,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3171,7 +3185,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3180,7 +3194,7 @@ i32.store local.get $3 i32.const 68 - i32.const 10 + i32.const 11 call $~lib/rt/itcms/__new local.tee $3 i32.store @@ -3268,8 +3282,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 18576 - i32.const 18624 + i32.const 18608 + i32.const 18656 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3282,11 +3296,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2164 + i32.const 2204 i32.lt_s if - i32.const 18576 - i32.const 18624 + i32.const 18608 + i32.const 18656 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3329,7 +3343,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1424 i32.const 294 i32.const 14 call $~lib/builtins/abort