Skip to content

WasiMemory

Defined in: packages/runtime/src/wasm/wasi-types.ts:464

Wraps a WasmLinearMemory (WebAssembly.Memory) and provides typed read/write helpers for the WASI ABI.

Ownership / lifetime rule. The internal DataView and Uint8Array views are cached over the memory’s ArrayBuffer on construction. memory.grow() detaches the old buffer and allocates a new one — any cached view of the old buffer becomes a zero-length stale reference. After any operation that may grow memory, callers MUST invoke WasiMemory.refresh before the next read/write. The WasiHost wraps every syscall with a memory refresh, and the raw asyncify orchestrator refreshes after its constructor (which may memory.grow() to allocate its unwind/rewind buffer).

const mem = new WasiMemory(instance.exports.memory as WasmLinearMemory)
mem.setU32(ptr, 42)
const s = mem.readString(strPtr, strLen)

WasmLinearMemory

new WasiMemory(memory): WasiMemory

Defined in: packages/runtime/src/wasm/wasi-types.ts:470

WasmLinearMemory

WasiMemory

getU16(ptr): number

Defined in: packages/runtime/src/wasm/wasi-types.ts:496

number

number


getU32(ptr): number

Defined in: packages/runtime/src/wasm/wasi-types.ts:506

number

number


getU64(ptr): bigint

Defined in: packages/runtime/src/wasm/wasi-types.ts:516

number

bigint


getU8(ptr): number

Defined in: packages/runtime/src/wasm/wasi-types.ts:486

number

number


readBytes(ptr, len): Uint8Array

Defined in: packages/runtime/src/wasm/wasi-types.ts:556

Read len bytes from memory at ptr. Returns a copy.

number

number

Uint8Array


readIovecs(iovecPtr, iovecCount): WasiIovec[]

Defined in: packages/runtime/src/wasm/wasi-types.ts:577

Read an array of WASI iovec structs from memory. Each iovec is 8 bytes: u32 buf_ptr, u32 buf_len.

number

pointer to first iovec struct

number

number of iovec structs

WasiIovec[]


readString(ptr, len): string

Defined in: packages/runtime/src/wasm/wasi-types.ts:540

Read a UTF-8 string from memory at ptr with the given byte length.

number

number

string


refresh(memory): void

Defined in: packages/runtime/src/wasm/wasi-types.ts:479

Re-synchronize internal views after memory.grow(). Must be called before any read/write after a grow.

WasmLinearMemory

void


setU16(ptr, value): void

Defined in: packages/runtime/src/wasm/wasi-types.ts:500

number

number

void


setU32(ptr, value): void

Defined in: packages/runtime/src/wasm/wasi-types.ts:510

number

number

void


setU64(ptr, value): void

Defined in: packages/runtime/src/wasm/wasi-types.ts:520

number

bigint

void


setU8(ptr, value): void

Defined in: packages/runtime/src/wasm/wasi-types.ts:490

number

number

void


slice(ptr, len): Uint8Array

Defined in: packages/runtime/src/wasm/wasi-types.ts:564

Get a subarray view (no copy) into the memory at ptr for len bytes. The caller must not use this view after a grow().

number

number

Uint8Array


writeBytes(ptr, data): void

Defined in: packages/runtime/src/wasm/wasi-types.ts:549

Write bytes into memory at ptr.

number

Uint8Array

void


writeString(ptr, str): number

Defined in: packages/runtime/src/wasm/wasi-types.ts:531

Write a UTF-8 encoded string into memory at ptr. Does NOT write a NUL terminator.

number

string

number

the number of bytes written