@asciiz/atoolkit 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/ReadMe.md +198 -0
- package/dist/acircuit/chip.d.ts +46 -0
- package/dist/acircuit/chip.d.ts.map +1 -0
- package/dist/acircuit/chip.js +104 -0
- package/dist/acircuit/chip.js.map +1 -0
- package/dist/acircuit/circuit.d.ts +86 -0
- package/dist/acircuit/circuit.d.ts.map +1 -0
- package/dist/acircuit/circuit.js +606 -0
- package/dist/acircuit/circuit.js.map +1 -0
- package/dist/acircuit/composite.d.ts +32 -0
- package/dist/acircuit/composite.d.ts.map +1 -0
- package/dist/acircuit/composite.js +88 -0
- package/dist/acircuit/composite.js.map +1 -0
- package/dist/acircuit/index.d.ts +7 -0
- package/dist/acircuit/index.d.ts.map +1 -0
- package/dist/acircuit/index.js +6 -0
- package/dist/acircuit/index.js.map +1 -0
- package/dist/acircuit/socket.d.ts +20 -0
- package/dist/acircuit/socket.d.ts.map +1 -0
- package/dist/acircuit/socket.js +23 -0
- package/dist/acircuit/socket.js.map +1 -0
- package/dist/acircuit/types.d.ts +94 -0
- package/dist/acircuit/types.d.ts.map +1 -0
- package/dist/acircuit/types.js +2 -0
- package/dist/acircuit/types.js.map +1 -0
- package/dist/acircuit/wire.d.ts +26 -0
- package/dist/acircuit/wire.d.ts.map +1 -0
- package/dist/acircuit/wire.js +23 -0
- package/dist/acircuit/wire.js.map +1 -0
- package/dist/adiag/bus.d.ts +65 -0
- package/dist/adiag/bus.d.ts.map +1 -0
- package/dist/adiag/bus.js +225 -0
- package/dist/adiag/bus.js.map +1 -0
- package/dist/adiag/index.d.ts +3 -0
- package/dist/adiag/index.d.ts.map +1 -0
- package/dist/adiag/index.js +2 -0
- package/dist/adiag/index.js.map +1 -0
- package/dist/aecs/ComponentSet.d.ts +33 -0
- package/dist/aecs/ComponentSet.d.ts.map +1 -0
- package/dist/aecs/ComponentSet.js +127 -0
- package/dist/aecs/ComponentSet.js.map +1 -0
- package/dist/aecs/Entity.d.ts +43 -0
- package/dist/aecs/Entity.d.ts.map +1 -0
- package/dist/aecs/Entity.js +82 -0
- package/dist/aecs/Entity.js.map +1 -0
- package/dist/aecs/FloatSet.d.ts +34 -0
- package/dist/aecs/FloatSet.d.ts.map +1 -0
- package/dist/aecs/FloatSet.js +147 -0
- package/dist/aecs/FloatSet.js.map +1 -0
- package/dist/aecs/Query.d.ts +90 -0
- package/dist/aecs/Query.d.ts.map +1 -0
- package/dist/aecs/Query.js +304 -0
- package/dist/aecs/Query.js.map +1 -0
- package/dist/aecs/index.d.ts +6 -0
- package/dist/aecs/index.d.ts.map +1 -0
- package/dist/aecs/index.js +6 -0
- package/dist/aecs/index.js.map +1 -0
- package/dist/aecs/join.d.ts +2 -0
- package/dist/aecs/join.d.ts.map +1 -0
- package/dist/aecs/join.js +2 -0
- package/dist/aecs/join.js.map +1 -0
- package/dist/alm/constants.d.ts +11 -0
- package/dist/alm/constants.d.ts.map +1 -0
- package/dist/alm/constants.js +17 -0
- package/dist/alm/constants.js.map +1 -0
- package/dist/alm/index.d.ts +9 -0
- package/dist/alm/index.d.ts.map +1 -0
- package/dist/alm/index.js +12 -0
- package/dist/alm/index.js.map +1 -0
- package/dist/alm/mat3.d.ts +63 -0
- package/dist/alm/mat3.d.ts.map +1 -0
- package/dist/alm/mat3.js +393 -0
- package/dist/alm/mat3.js.map +1 -0
- package/dist/alm/mat4.d.ts +157 -0
- package/dist/alm/mat4.d.ts.map +1 -0
- package/dist/alm/mat4.js +1448 -0
- package/dist/alm/mat4.js.map +1 -0
- package/dist/alm/quat.d.ts +89 -0
- package/dist/alm/quat.d.ts.map +1 -0
- package/dist/alm/quat.js +543 -0
- package/dist/alm/quat.js.map +1 -0
- package/dist/alm/spatial.d.ts +102 -0
- package/dist/alm/spatial.d.ts.map +1 -0
- package/dist/alm/spatial.js +389 -0
- package/dist/alm/spatial.js.map +1 -0
- package/dist/alm/vec2.d.ts +97 -0
- package/dist/alm/vec2.d.ts.map +1 -0
- package/dist/alm/vec2.js +369 -0
- package/dist/alm/vec2.js.map +1 -0
- package/dist/alm/vec3.d.ts +117 -0
- package/dist/alm/vec3.d.ts.map +1 -0
- package/dist/alm/vec3.js +547 -0
- package/dist/alm/vec3.js.map +1 -0
- package/dist/alm/vec4.d.ts +95 -0
- package/dist/alm/vec4.d.ts.map +1 -0
- package/dist/alm/vec4.js +452 -0
- package/dist/alm/vec4.js.map +1 -0
- package/dist/atempo/cadence.d.ts +58 -0
- package/dist/atempo/cadence.d.ts.map +1 -0
- package/dist/atempo/cadence.js +110 -0
- package/dist/atempo/cadence.js.map +1 -0
- package/dist/atempo/clip.d.ts +37 -0
- package/dist/atempo/clip.d.ts.map +1 -0
- package/dist/atempo/clip.js +92 -0
- package/dist/atempo/clip.js.map +1 -0
- package/dist/atempo/curve.d.ts +6 -0
- package/dist/atempo/curve.d.ts.map +1 -0
- package/dist/atempo/curve.js +2 -0
- package/dist/atempo/curve.js.map +1 -0
- package/dist/atempo/curves/bezier.d.ts +7 -0
- package/dist/atempo/curves/bezier.d.ts.map +1 -0
- package/dist/atempo/curves/bezier.js +46 -0
- package/dist/atempo/curves/bezier.js.map +1 -0
- package/dist/atempo/curves/bounce.d.ts +6 -0
- package/dist/atempo/curves/bounce.d.ts.map +1 -0
- package/dist/atempo/curves/bounce.js +22 -0
- package/dist/atempo/curves/bounce.js.map +1 -0
- package/dist/atempo/curves/cubic.d.ts +14 -0
- package/dist/atempo/curves/cubic.d.ts.map +1 -0
- package/dist/atempo/curves/cubic.js +22 -0
- package/dist/atempo/curves/cubic.js.map +1 -0
- package/dist/atempo/curves/elastic.d.ts +6 -0
- package/dist/atempo/curves/elastic.d.ts.map +1 -0
- package/dist/atempo/curves/elastic.js +12 -0
- package/dist/atempo/curves/elastic.js.map +1 -0
- package/dist/atempo/curves/expo.d.ts +14 -0
- package/dist/atempo/curves/expo.d.ts.map +1 -0
- package/dist/atempo/curves/expo.js +26 -0
- package/dist/atempo/curves/expo.js.map +1 -0
- package/dist/atempo/curves/holdSnap.d.ts +6 -0
- package/dist/atempo/curves/holdSnap.d.ts.map +1 -0
- package/dist/atempo/curves/holdSnap.js +15 -0
- package/dist/atempo/curves/holdSnap.js.map +1 -0
- package/dist/atempo/curves/index.d.ts +14 -0
- package/dist/atempo/curves/index.d.ts.map +1 -0
- package/dist/atempo/curves/index.js +14 -0
- package/dist/atempo/curves/index.js.map +1 -0
- package/dist/atempo/curves/linear.d.ts +6 -0
- package/dist/atempo/curves/linear.d.ts.map +1 -0
- package/dist/atempo/curves/linear.js +5 -0
- package/dist/atempo/curves/linear.js.map +1 -0
- package/dist/atempo/curves/overshoot.d.ts +6 -0
- package/dist/atempo/curves/overshoot.d.ts.map +1 -0
- package/dist/atempo/curves/overshoot.js +16 -0
- package/dist/atempo/curves/overshoot.js.map +1 -0
- package/dist/atempo/curves/quad.d.ts +14 -0
- package/dist/atempo/curves/quad.d.ts.map +1 -0
- package/dist/atempo/curves/quad.js +22 -0
- package/dist/atempo/curves/quad.js.map +1 -0
- package/dist/atempo/curves/step.d.ts +6 -0
- package/dist/atempo/curves/step.d.ts.map +1 -0
- package/dist/atempo/curves/step.js +11 -0
- package/dist/atempo/curves/step.js.map +1 -0
- package/dist/atempo/index.d.ts +17 -0
- package/dist/atempo/index.d.ts.map +1 -0
- package/dist/atempo/index.js +18 -0
- package/dist/atempo/index.js.map +1 -0
- package/dist/atempo/phase.d.ts +66 -0
- package/dist/atempo/phase.d.ts.map +1 -0
- package/dist/atempo/phase.js +121 -0
- package/dist/atempo/phase.js.map +1 -0
- package/dist/atempo/spring.d.ts +20 -0
- package/dist/atempo/spring.d.ts.map +1 -0
- package/dist/atempo/spring.js +71 -0
- package/dist/atempo/spring.js.map +1 -0
- package/dist/atempo/track.d.ts +69 -0
- package/dist/atempo/track.d.ts.map +1 -0
- package/dist/atempo/track.js +184 -0
- package/dist/atempo/track.js.map +1 -0
- package/dist/atempo/tracks/color.d.ts +20 -0
- package/dist/atempo/tracks/color.d.ts.map +1 -0
- package/dist/atempo/tracks/color.js +52 -0
- package/dist/atempo/tracks/color.js.map +1 -0
- package/dist/atempo/tracks/float.d.ts +9 -0
- package/dist/atempo/tracks/float.d.ts.map +1 -0
- package/dist/atempo/tracks/float.js +13 -0
- package/dist/atempo/tracks/float.js.map +1 -0
- package/dist/atempo/tracks/index.d.ts +8 -0
- package/dist/atempo/tracks/index.d.ts.map +1 -0
- package/dist/atempo/tracks/index.js +8 -0
- package/dist/atempo/tracks/index.js.map +1 -0
- package/dist/atempo/tracks/quat.d.ts +16 -0
- package/dist/atempo/tracks/quat.d.ts.map +1 -0
- package/dist/atempo/tracks/quat.js +72 -0
- package/dist/atempo/tracks/quat.js.map +1 -0
- package/dist/atempo/tracks/vec.d.ts +11 -0
- package/dist/atempo/tracks/vec.d.ts.map +1 -0
- package/dist/atempo/tracks/vec.js +27 -0
- package/dist/atempo/tracks/vec.js.map +1 -0
- package/dist/awasm/abi/index.d.ts +4 -0
- package/dist/awasm/abi/index.d.ts.map +1 -0
- package/dist/awasm/abi/index.js +4 -0
- package/dist/awasm/abi/index.js.map +1 -0
- package/dist/awasm/abi/layout.d.ts +40 -0
- package/dist/awasm/abi/layout.d.ts.map +1 -0
- package/dist/awasm/abi/layout.js +100 -0
- package/dist/awasm/abi/layout.js.map +1 -0
- package/dist/awasm/abi/slice.d.ts +28 -0
- package/dist/awasm/abi/slice.d.ts.map +1 -0
- package/dist/awasm/abi/slice.js +68 -0
- package/dist/awasm/abi/slice.js.map +1 -0
- package/dist/awasm/abi/string-buffer.d.ts +23 -0
- package/dist/awasm/abi/string-buffer.d.ts.map +1 -0
- package/dist/awasm/abi/string-buffer.js +52 -0
- package/dist/awasm/abi/string-buffer.js.map +1 -0
- package/dist/awasm/index.d.ts +5 -0
- package/dist/awasm/index.d.ts.map +1 -0
- package/dist/awasm/index.js +8 -0
- package/dist/awasm/index.js.map +1 -0
- package/dist/awasm/memory/block-pool.d.ts +31 -0
- package/dist/awasm/memory/block-pool.d.ts.map +1 -0
- package/dist/awasm/memory/block-pool.js +98 -0
- package/dist/awasm/memory/block-pool.js.map +1 -0
- package/dist/awasm/memory/index.d.ts +5 -0
- package/dist/awasm/memory/index.d.ts.map +1 -0
- package/dist/awasm/memory/index.js +5 -0
- package/dist/awasm/memory/index.js.map +1 -0
- package/dist/awasm/memory/linear-arena.d.ts +36 -0
- package/dist/awasm/memory/linear-arena.d.ts.map +1 -0
- package/dist/awasm/memory/linear-arena.js +94 -0
- package/dist/awasm/memory/linear-arena.js.map +1 -0
- package/dist/awasm/memory/memory-view.d.ts +51 -0
- package/dist/awasm/memory/memory-view.d.ts.map +1 -0
- package/dist/awasm/memory/memory-view.js +110 -0
- package/dist/awasm/memory/memory-view.js.map +1 -0
- package/dist/awasm/memory/wasm-memory.d.ts +40 -0
- package/dist/awasm/memory/wasm-memory.d.ts.map +1 -0
- package/dist/awasm/memory/wasm-memory.js +88 -0
- package/dist/awasm/memory/wasm-memory.js.map +1 -0
- package/dist/awasm/runtime/host-bridge.d.ts +30 -0
- package/dist/awasm/runtime/host-bridge.d.ts.map +1 -0
- package/dist/awasm/runtime/host-bridge.js +57 -0
- package/dist/awasm/runtime/host-bridge.js.map +1 -0
- package/dist/awasm/runtime/index.d.ts +5 -0
- package/dist/awasm/runtime/index.d.ts.map +1 -0
- package/dist/awasm/runtime/index.js +5 -0
- package/dist/awasm/runtime/index.js.map +1 -0
- package/dist/awasm/runtime/module-inspector.d.ts +32 -0
- package/dist/awasm/runtime/module-inspector.d.ts.map +1 -0
- package/dist/awasm/runtime/module-inspector.js +43 -0
- package/dist/awasm/runtime/module-inspector.js.map +1 -0
- package/dist/awasm/runtime/module-loader.d.ts +17 -0
- package/dist/awasm/runtime/module-loader.d.ts.map +1 -0
- package/dist/awasm/runtime/module-loader.js +99 -0
- package/dist/awasm/runtime/module-loader.js.map +1 -0
- package/dist/awasm/runtime/wasm-instance.d.ts +25 -0
- package/dist/awasm/runtime/wasm-instance.d.ts.map +1 -0
- package/dist/awasm/runtime/wasm-instance.js +60 -0
- package/dist/awasm/runtime/wasm-instance.js.map +1 -0
- package/dist/awasm/thread/atomic-queue.d.ts +33 -0
- package/dist/awasm/thread/atomic-queue.d.ts.map +1 -0
- package/dist/awasm/thread/atomic-queue.js +78 -0
- package/dist/awasm/thread/atomic-queue.js.map +1 -0
- package/dist/awasm/thread/index.d.ts +4 -0
- package/dist/awasm/thread/index.d.ts.map +1 -0
- package/dist/awasm/thread/index.js +4 -0
- package/dist/awasm/thread/index.js.map +1 -0
- package/dist/awasm/thread/shared-memory.d.ts +38 -0
- package/dist/awasm/thread/shared-memory.d.ts.map +1 -0
- package/dist/awasm/thread/shared-memory.js +74 -0
- package/dist/awasm/thread/shared-memory.js.map +1 -0
- package/dist/awasm/thread/worker-pool.d.ts +43 -0
- package/dist/awasm/thread/worker-pool.d.ts.map +1 -0
- package/dist/awasm/thread/worker-pool.js +118 -0
- package/dist/awasm/thread/worker-pool.js.map +1 -0
- package/dist/awgpu/binding.d.ts +108 -0
- package/dist/awgpu/binding.d.ts.map +1 -0
- package/dist/awgpu/binding.js +251 -0
- package/dist/awgpu/binding.js.map +1 -0
- package/dist/awgpu/device.d.ts +68 -0
- package/dist/awgpu/device.d.ts.map +1 -0
- package/dist/awgpu/device.js +150 -0
- package/dist/awgpu/device.js.map +1 -0
- package/dist/awgpu/graph.d.ts +77 -0
- package/dist/awgpu/graph.d.ts.map +1 -0
- package/dist/awgpu/graph.js +288 -0
- package/dist/awgpu/graph.js.map +1 -0
- package/dist/awgpu/index.d.ts +10 -0
- package/dist/awgpu/index.d.ts.map +1 -0
- package/dist/awgpu/index.js +19 -0
- package/dist/awgpu/index.js.map +1 -0
- package/dist/awgpu/memory.d.ts +231 -0
- package/dist/awgpu/memory.d.ts.map +1 -0
- package/dist/awgpu/memory.js +547 -0
- package/dist/awgpu/memory.js.map +1 -0
- package/dist/awgpu/pipeline.d.ts +114 -0
- package/dist/awgpu/pipeline.d.ts.map +1 -0
- package/dist/awgpu/pipeline.js +335 -0
- package/dist/awgpu/pipeline.js.map +1 -0
- package/dist/awgpu/sequence.d.ts +83 -0
- package/dist/awgpu/sequence.d.ts.map +1 -0
- package/dist/awgpu/sequence.js +273 -0
- package/dist/awgpu/sequence.js.map +1 -0
- package/dist/awgpu/state.d.ts +27 -0
- package/dist/awgpu/state.d.ts.map +1 -0
- package/dist/awgpu/state.js +43 -0
- package/dist/awgpu/state.js.map +1 -0
- package/dist/awgpu/stream.d.ts +57 -0
- package/dist/awgpu/stream.d.ts.map +1 -0
- package/dist/awgpu/stream.js +139 -0
- package/dist/awgpu/stream.js.map +1 -0
- package/dist/awgpu/target.d.ts +98 -0
- package/dist/awgpu/target.d.ts.map +1 -0
- package/dist/awgpu/target.js +357 -0
- package/dist/awgpu/target.js.map +1 -0
- package/dist/awgpu_old/buffer.d.ts +78 -0
- package/dist/awgpu_old/buffer.d.ts.map +1 -0
- package/dist/awgpu_old/buffer.js +220 -0
- package/dist/awgpu_old/buffer.js.map +1 -0
- package/dist/awgpu_old/device.d.ts +69 -0
- package/dist/awgpu_old/device.d.ts.map +1 -0
- package/dist/awgpu_old/device.js +121 -0
- package/dist/awgpu_old/device.js.map +1 -0
- package/dist/awgpu_old/frame.d.ts +17 -0
- package/dist/awgpu_old/frame.d.ts.map +1 -0
- package/dist/awgpu_old/frame.js +29 -0
- package/dist/awgpu_old/frame.js.map +1 -0
- package/dist/awgpu_old/index.d.ts +8 -0
- package/dist/awgpu_old/index.d.ts.map +1 -0
- package/dist/awgpu_old/index.js +18 -0
- package/dist/awgpu_old/index.js.map +1 -0
- package/dist/awgpu_old/layout.d.ts +70 -0
- package/dist/awgpu_old/layout.d.ts.map +1 -0
- package/dist/awgpu_old/layout.js +137 -0
- package/dist/awgpu_old/layout.js.map +1 -0
- package/dist/awgpu_old/pass.d.ts +97 -0
- package/dist/awgpu_old/pass.d.ts.map +1 -0
- package/dist/awgpu_old/pass.js +302 -0
- package/dist/awgpu_old/pass.js.map +1 -0
- package/dist/awgpu_old/pipeline.d.ts +73 -0
- package/dist/awgpu_old/pipeline.d.ts.map +1 -0
- package/dist/awgpu_old/pipeline.js +226 -0
- package/dist/awgpu_old/pipeline.js.map +1 -0
- package/dist/awgpu_old/target.d.ts +186 -0
- package/dist/awgpu_old/target.d.ts.map +1 -0
- package/dist/awgpu_old/target.js +428 -0
- package/dist/awgpu_old/target.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/package.json +106 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../awasm/abi/layout.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { WasmMemory } from "../memory/wasm-memory.js";
|
|
2
|
+
/**
|
|
3
|
+
* Value object encapsulating a span of WebAssembly linear memory (pointer + length).
|
|
4
|
+
* Exposes zero-copy typed sub-array views and transfer methods over active linear memory buffers.
|
|
5
|
+
*/
|
|
6
|
+
export declare class Slice {
|
|
7
|
+
readonly ptr: number;
|
|
8
|
+
readonly length: number;
|
|
9
|
+
constructor(ptr: number, length: number);
|
|
10
|
+
/**
|
|
11
|
+
* Slices an 8-bit unsigned integer view across the memory span.
|
|
12
|
+
*/
|
|
13
|
+
readUint8(memory: WasmMemory): Uint8Array;
|
|
14
|
+
/**
|
|
15
|
+
* Slices a 32-bit floating point view across the memory span. Requires 4-byte pointer alignment.
|
|
16
|
+
*/
|
|
17
|
+
readFloat32(memory: WasmMemory): Float32Array;
|
|
18
|
+
/**
|
|
19
|
+
* Slices a 32-bit unsigned integer view across the memory span. Requires 4-byte pointer alignment.
|
|
20
|
+
*/
|
|
21
|
+
readUint32(memory: WasmMemory): Uint32Array;
|
|
22
|
+
/**
|
|
23
|
+
* Copies external typed array bytes directly into the guest linear memory span.
|
|
24
|
+
*/
|
|
25
|
+
copyFrom(source: ArrayBufferView, memory: WasmMemory): void;
|
|
26
|
+
private assertBounds;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=slice.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slice.d.ts","sourceRoot":"","sources":["../../../awasm/abi/slice.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD;;;GAGG;AACH,qBAAa,KAAK;IACd,SAAgB,GAAG,EAAE,MAAM,CAAC;IAC5B,SAAgB,MAAM,EAAE,MAAM,CAAC;gBAEnB,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAWvC;;OAEG;IACI,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU;IAKhD;;OAEG;IACI,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,YAAY;IASpD;;OAEG;IACI,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,WAAW;IASlD;;OAEG;IACI,QAAQ,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI;IAYlE,OAAO,CAAC,YAAY;CAOvB"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// ================================================================
|
|
2
|
+
// Awasm - ABI: Slice
|
|
3
|
+
// ================================================================
|
|
4
|
+
/**
|
|
5
|
+
* Value object encapsulating a span of WebAssembly linear memory (pointer + length).
|
|
6
|
+
* Exposes zero-copy typed sub-array views and transfer methods over active linear memory buffers.
|
|
7
|
+
*/
|
|
8
|
+
export class Slice {
|
|
9
|
+
ptr;
|
|
10
|
+
length;
|
|
11
|
+
constructor(ptr, length) {
|
|
12
|
+
if (ptr < 0) {
|
|
13
|
+
throw new Error(`Pointer must be non-negative, received ${ptr}`);
|
|
14
|
+
}
|
|
15
|
+
if (length < 0) {
|
|
16
|
+
throw new Error(`Length must be non-negative, received ${length}`);
|
|
17
|
+
}
|
|
18
|
+
this.ptr = ptr;
|
|
19
|
+
this.length = length;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Slices an 8-bit unsigned integer view across the memory span.
|
|
23
|
+
*/
|
|
24
|
+
readUint8(memory) {
|
|
25
|
+
this.assertBounds(memory);
|
|
26
|
+
return new Uint8Array(memory.buffer, this.ptr, this.length);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Slices a 32-bit floating point view across the memory span. Requires 4-byte pointer alignment.
|
|
30
|
+
*/
|
|
31
|
+
readFloat32(memory) {
|
|
32
|
+
this.assertBounds(memory);
|
|
33
|
+
if ((this.ptr & 3) !== 0) {
|
|
34
|
+
throw new Error(`Slice pointer ${this.ptr} is not 4-byte aligned for Float32`);
|
|
35
|
+
}
|
|
36
|
+
const elementCount = Math.floor(this.length / 4);
|
|
37
|
+
return new Float32Array(memory.buffer, this.ptr, elementCount);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Slices a 32-bit unsigned integer view across the memory span. Requires 4-byte pointer alignment.
|
|
41
|
+
*/
|
|
42
|
+
readUint32(memory) {
|
|
43
|
+
this.assertBounds(memory);
|
|
44
|
+
if ((this.ptr & 3) !== 0) {
|
|
45
|
+
throw new Error(`Slice pointer ${this.ptr} is not 4-byte aligned for Uint32`);
|
|
46
|
+
}
|
|
47
|
+
const elementCount = Math.floor(this.length / 4);
|
|
48
|
+
return new Uint32Array(memory.buffer, this.ptr, elementCount);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Copies external typed array bytes directly into the guest linear memory span.
|
|
52
|
+
*/
|
|
53
|
+
copyFrom(source, memory) {
|
|
54
|
+
this.assertBounds(memory);
|
|
55
|
+
const sourceBytes = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);
|
|
56
|
+
if (sourceBytes.byteLength > this.length) {
|
|
57
|
+
throw new Error(`Source byte length ${sourceBytes.byteLength} exceeds slice capacity of ${this.length} bytes`);
|
|
58
|
+
}
|
|
59
|
+
const targetBytes = new Uint8Array(memory.buffer, this.ptr, sourceBytes.byteLength);
|
|
60
|
+
targetBytes.set(sourceBytes);
|
|
61
|
+
}
|
|
62
|
+
assertBounds(memory) {
|
|
63
|
+
if (this.ptr + this.length > memory.byteLength) {
|
|
64
|
+
throw new Error(`Slice span [${this.ptr}, ${this.ptr + this.length}) exceeds memory byte length ${memory.byteLength}`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=slice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slice.js","sourceRoot":"","sources":["../../../awasm/abi/slice.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { WasmMemory } from "../memory/wasm-memory.js";
|
|
2
|
+
import { LinearArena } from "../memory/linear-arena.js";
|
|
3
|
+
import { Slice } from "./slice.js";
|
|
4
|
+
/**
|
|
5
|
+
* UTF-8 string marshalling across host JavaScript and guest linear memory.
|
|
6
|
+
* Uses singleton TextEncoder and TextDecoder instances to eliminate garbage collection.
|
|
7
|
+
*/
|
|
8
|
+
export declare class StringBuffer {
|
|
9
|
+
/**
|
|
10
|
+
* Encodes a JavaScript string directly into arena memory and appends a null terminator.
|
|
11
|
+
* Rewinds unused allocated bytes and returns a Slice containing guest pointer and byte length.
|
|
12
|
+
*/
|
|
13
|
+
static write(text: string, arena: LinearArena, memory: WasmMemory): Slice;
|
|
14
|
+
/**
|
|
15
|
+
* Decodes a UTF-8 guest memory byte span into a JavaScript string.
|
|
16
|
+
*/
|
|
17
|
+
static read(ptr: number, length: number, memory: WasmMemory): string;
|
|
18
|
+
/**
|
|
19
|
+
* Scans for a null terminator in linear memory and decodes the resulting UTF-8 string.
|
|
20
|
+
*/
|
|
21
|
+
static readNullTerminated(ptr: number, memory: WasmMemory, maxScanBytes?: number): string;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=string-buffer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string-buffer.d.ts","sourceRoot":"","sources":["../../../awasm/abi/string-buffer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAKnC;;;GAGG;AACH,qBAAa,YAAY;IACrB;;;OAGG;WACW,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,KAAK;IAgBhF;;OAEG;WACW,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM;IAQ3E;;OAEG;WACW,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,GAAE,MAAa,GAAG,MAAM;CAazG"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// ================================================================
|
|
2
|
+
// Awasm - ABI: StringBuffer
|
|
3
|
+
// ================================================================
|
|
4
|
+
import { Slice } from "./slice.js";
|
|
5
|
+
const encoder = new TextEncoder();
|
|
6
|
+
const decoder = new TextDecoder("utf-8");
|
|
7
|
+
/**
|
|
8
|
+
* UTF-8 string marshalling across host JavaScript and guest linear memory.
|
|
9
|
+
* Uses singleton TextEncoder and TextDecoder instances to eliminate garbage collection.
|
|
10
|
+
*/
|
|
11
|
+
export class StringBuffer {
|
|
12
|
+
/**
|
|
13
|
+
* Encodes a JavaScript string directly into arena memory and appends a null terminator.
|
|
14
|
+
* Rewinds unused allocated bytes and returns a Slice containing guest pointer and byte length.
|
|
15
|
+
*/
|
|
16
|
+
static write(text, arena, memory) {
|
|
17
|
+
const maxBytes = text.length * 3 + 1;
|
|
18
|
+
const ptr = arena.allocate(maxBytes, 1);
|
|
19
|
+
const memoryBytes = new Uint8Array(memory.buffer, ptr, maxBytes);
|
|
20
|
+
const result = encoder.encodeInto(text, memoryBytes);
|
|
21
|
+
const written = result.written ?? 0;
|
|
22
|
+
memoryBytes[written] = 0;
|
|
23
|
+
const actualAllocated = written + 1;
|
|
24
|
+
arena.rewind(ptr + actualAllocated);
|
|
25
|
+
return new Slice(ptr, written);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Decodes a UTF-8 guest memory byte span into a JavaScript string.
|
|
29
|
+
*/
|
|
30
|
+
static read(ptr, length, memory) {
|
|
31
|
+
if (ptr + length > memory.byteLength) {
|
|
32
|
+
throw new Error(`String span [${ptr}, ${ptr + length}) exceeds memory byte length ${memory.byteLength}`);
|
|
33
|
+
}
|
|
34
|
+
const bytes = new Uint8Array(memory.buffer, ptr, length);
|
|
35
|
+
return decoder.decode(bytes);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Scans for a null terminator in linear memory and decodes the resulting UTF-8 string.
|
|
39
|
+
*/
|
|
40
|
+
static readNullTerminated(ptr, memory, maxScanBytes = 4096) {
|
|
41
|
+
const memoryBytes = new Uint8Array(memory.buffer);
|
|
42
|
+
const limit = Math.min(memory.byteLength, ptr + maxScanBytes);
|
|
43
|
+
let end = ptr;
|
|
44
|
+
while (end < limit && memoryBytes[end] !== 0) {
|
|
45
|
+
end++;
|
|
46
|
+
}
|
|
47
|
+
const length = end - ptr;
|
|
48
|
+
const bytes = new Uint8Array(memory.buffer, ptr, length);
|
|
49
|
+
return decoder.decode(bytes);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=string-buffer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string-buffer.js","sourceRoot":"","sources":["../../../awasm/abi/string-buffer.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,6BAA6B;AAC7B,mEAAmE;AAInE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAClC,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;AAEzC;;;GAGG;AACH,MAAM,OAAO,YAAY;IACrB;;;OAGG;IACI,MAAM,CAAC,KAAK,CAAC,IAAY,EAAE,KAAkB,EAAE,MAAkB;QACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAExC,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;QACjE,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAErD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;QACpC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAEzB,MAAM,eAAe,GAAG,OAAO,GAAG,CAAC,CAAC;QACpC,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,eAAe,CAAC,CAAC;QAEpC,OAAO,IAAI,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,IAAI,CAAC,GAAW,EAAE,MAAc,EAAE,MAAkB;QAC9D,IAAI,GAAG,GAAG,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,KAAK,GAAG,GAAG,MAAM,gCAAgC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QAC7G,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QACzD,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,kBAAkB,CAAC,GAAW,EAAE,MAAkB,EAAE,eAAuB,IAAI;QACzF,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,GAAG,YAAY,CAAC,CAAC;QAC9D,IAAI,GAAG,GAAG,GAAG,CAAC;QAEd,OAAO,GAAG,GAAG,KAAK,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,GAAG,EAAE,CAAC;QACV,CAAC;QAED,MAAM,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QACzD,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../awasm/index.ts"],"names":[],"mappings":"AAIA,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// ================================================================
|
|
2
|
+
// Awasm - WebAssembly Computational Engine & Memory Subsystems
|
|
3
|
+
// ================================================================
|
|
4
|
+
export * from "./memory/index.js";
|
|
5
|
+
export * from "./abi/index.js";
|
|
6
|
+
export * from "./runtime/index.js";
|
|
7
|
+
export * from "./thread/index.js";
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../awasm/index.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,gEAAgE;AAChE,mEAAmE;AAEnE,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { WasmMemory } from "./wasm-memory.js";
|
|
2
|
+
/**
|
|
3
|
+
* Fixed-size slab allocator managing uniform memory blocks in linear memory.
|
|
4
|
+
* Maintains an intrusive single-linked free-list in the first 4 bytes of idle blocks.
|
|
5
|
+
*/
|
|
6
|
+
export declare class BlockPool {
|
|
7
|
+
private readonly _memory;
|
|
8
|
+
private readonly _offset;
|
|
9
|
+
private readonly _blockCount;
|
|
10
|
+
private readonly _blockSize;
|
|
11
|
+
private _freeHead;
|
|
12
|
+
private _availableCount;
|
|
13
|
+
constructor(memory: WasmMemory, offset: number, blockCount: number, blockSize: number);
|
|
14
|
+
private formatFreeList;
|
|
15
|
+
/**
|
|
16
|
+
* Acquires a free block from the intrusive stack in O(1) time.
|
|
17
|
+
* Returns byte offset pointer, or -1 when pool is exhausted.
|
|
18
|
+
*/
|
|
19
|
+
acquire(): number;
|
|
20
|
+
/**
|
|
21
|
+
* Releases an allocated block back to the intrusive stack in O(1) time.
|
|
22
|
+
*/
|
|
23
|
+
release(pointer: number): void;
|
|
24
|
+
get capacity(): number;
|
|
25
|
+
get available(): number;
|
|
26
|
+
get blockSize(): number;
|
|
27
|
+
get offset(): number;
|
|
28
|
+
get totalByteLength(): number;
|
|
29
|
+
get memory(): WasmMemory;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=block-pool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"block-pool.d.ts","sourceRoot":"","sources":["../../../awasm/memory/block-pool.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;GAGG;AACH,qBAAa,SAAS;IAClB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,eAAe,CAAS;gBAEpB,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAwBrF,OAAO,CAAC,cAAc;IAgBtB;;;OAGG;IACI,OAAO,IAAI,MAAM;IAaxB;;OAEG;IACI,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAgBrC,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAED,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED,IAAW,MAAM,IAAI,MAAM,CAE1B;IAED,IAAW,eAAe,IAAI,MAAM,CAEnC;IAED,IAAW,MAAM,IAAI,UAAU,CAE9B;CACJ"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
// ================================================================
|
|
2
|
+
// Awasm - Linear Memory: BlockPool
|
|
3
|
+
// ================================================================
|
|
4
|
+
import { WasmMemory } from "./wasm-memory.js";
|
|
5
|
+
/**
|
|
6
|
+
* Fixed-size slab allocator managing uniform memory blocks in linear memory.
|
|
7
|
+
* Maintains an intrusive single-linked free-list in the first 4 bytes of idle blocks.
|
|
8
|
+
*/
|
|
9
|
+
export class BlockPool {
|
|
10
|
+
_memory;
|
|
11
|
+
_offset;
|
|
12
|
+
_blockCount;
|
|
13
|
+
_blockSize;
|
|
14
|
+
_freeHead;
|
|
15
|
+
_availableCount;
|
|
16
|
+
constructor(memory, offset, blockCount, blockSize) {
|
|
17
|
+
if (blockSize < 4) {
|
|
18
|
+
throw new Error(`Block size must be at least 4 bytes for intrusive pointer, received ${blockSize}`);
|
|
19
|
+
}
|
|
20
|
+
if (blockCount <= 0) {
|
|
21
|
+
throw new Error(`Block count must be positive, received ${blockCount}`);
|
|
22
|
+
}
|
|
23
|
+
const totalBytes = blockCount * blockSize;
|
|
24
|
+
if (offset + totalBytes > memory.byteLength) {
|
|
25
|
+
const neededPages = Math.ceil((offset + totalBytes - memory.byteLength) / WasmMemory.PAGE_SIZE);
|
|
26
|
+
memory.grow(neededPages);
|
|
27
|
+
}
|
|
28
|
+
this._memory = memory;
|
|
29
|
+
this._offset = offset;
|
|
30
|
+
this._blockCount = blockCount;
|
|
31
|
+
this._blockSize = blockSize;
|
|
32
|
+
this._freeHead = offset;
|
|
33
|
+
this._availableCount = blockCount;
|
|
34
|
+
this.formatFreeList();
|
|
35
|
+
}
|
|
36
|
+
formatFreeList() {
|
|
37
|
+
const view = new DataView(this._memory.buffer);
|
|
38
|
+
let ptr = this._offset;
|
|
39
|
+
for (let i = 0; i < this._blockCount - 1; i++) {
|
|
40
|
+
const nextPtr = ptr + this._blockSize;
|
|
41
|
+
view.setUint32(ptr, nextPtr, true);
|
|
42
|
+
ptr = nextPtr;
|
|
43
|
+
}
|
|
44
|
+
// Final block terminator: 0xFFFFFFFF
|
|
45
|
+
view.setUint32(ptr, 0xffffffff, true);
|
|
46
|
+
this._freeHead = this._offset;
|
|
47
|
+
this._availableCount = this._blockCount;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Acquires a free block from the intrusive stack in O(1) time.
|
|
51
|
+
* Returns byte offset pointer, or -1 when pool is exhausted.
|
|
52
|
+
*/
|
|
53
|
+
acquire() {
|
|
54
|
+
if (this._freeHead === 0xffffffff || this._availableCount === 0) {
|
|
55
|
+
return -1;
|
|
56
|
+
}
|
|
57
|
+
const allocatedPtr = this._freeHead;
|
|
58
|
+
const view = new DataView(this._memory.buffer);
|
|
59
|
+
this._freeHead = view.getUint32(allocatedPtr, true);
|
|
60
|
+
this._availableCount -= 1;
|
|
61
|
+
return allocatedPtr;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Releases an allocated block back to the intrusive stack in O(1) time.
|
|
65
|
+
*/
|
|
66
|
+
release(pointer) {
|
|
67
|
+
if (pointer < this._offset || pointer >= this._offset + this._blockCount * this._blockSize) {
|
|
68
|
+
throw new Error(`Pointer ${pointer} falls outside block pool span`);
|
|
69
|
+
}
|
|
70
|
+
const offsetWithinPool = pointer - this._offset;
|
|
71
|
+
if (offsetWithinPool % this._blockSize !== 0) {
|
|
72
|
+
throw new Error(`Pointer ${pointer} is not aligned to block boundary of ${this._blockSize} bytes`);
|
|
73
|
+
}
|
|
74
|
+
const view = new DataView(this._memory.buffer);
|
|
75
|
+
view.setUint32(pointer, this._freeHead, true);
|
|
76
|
+
this._freeHead = pointer;
|
|
77
|
+
this._availableCount += 1;
|
|
78
|
+
}
|
|
79
|
+
get capacity() {
|
|
80
|
+
return this._blockCount;
|
|
81
|
+
}
|
|
82
|
+
get available() {
|
|
83
|
+
return this._availableCount;
|
|
84
|
+
}
|
|
85
|
+
get blockSize() {
|
|
86
|
+
return this._blockSize;
|
|
87
|
+
}
|
|
88
|
+
get offset() {
|
|
89
|
+
return this._offset;
|
|
90
|
+
}
|
|
91
|
+
get totalByteLength() {
|
|
92
|
+
return this._blockCount * this._blockSize;
|
|
93
|
+
}
|
|
94
|
+
get memory() {
|
|
95
|
+
return this._memory;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=block-pool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"block-pool.js","sourceRoot":"","sources":["../../../awasm/memory/block-pool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { WasmMemory, type MemoryDescriptor, type MemoryResizeListener } from "./wasm-memory.js";
|
|
2
|
+
export { LinearArena } from "./linear-arena.js";
|
|
3
|
+
export { BlockPool } from "./block-pool.js";
|
|
4
|
+
export { MemoryView } from "./memory-view.js";
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../awasm/memory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,gBAAgB,EAAE,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../awasm/memory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAoD,MAAM,kBAAkB,CAAC;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { WasmMemory } from "./wasm-memory.js";
|
|
2
|
+
/**
|
|
3
|
+
* Monotonic bump allocator operating within a reserved span of linear memory.
|
|
4
|
+
* Enforces power-of-two alignments and provides O(1) watermark rewind and reset operations.
|
|
5
|
+
*/
|
|
6
|
+
export declare class LinearArena {
|
|
7
|
+
private readonly _memory;
|
|
8
|
+
private readonly _baseOffset;
|
|
9
|
+
private readonly _byteCapacity;
|
|
10
|
+
private _currentOffset;
|
|
11
|
+
constructor(memory: WasmMemory, baseOffset?: number, byteCapacity?: number);
|
|
12
|
+
/**
|
|
13
|
+
* Allocates a contiguous byte span with the specified power-of-two alignment.
|
|
14
|
+
* Automatically expands underlying linear memory when permitted.
|
|
15
|
+
*/
|
|
16
|
+
allocate(byteSize: number, alignment?: number): number;
|
|
17
|
+
/**
|
|
18
|
+
* Returns the current allocation offset watermark.
|
|
19
|
+
*/
|
|
20
|
+
mark(): number;
|
|
21
|
+
/**
|
|
22
|
+
* Restores the allocation offset to a previously recorded watermark.
|
|
23
|
+
*/
|
|
24
|
+
rewind(mark: number): void;
|
|
25
|
+
/**
|
|
26
|
+
* Resets the allocation offset to the base pointer, recycling all arena memory in O(1) time.
|
|
27
|
+
*/
|
|
28
|
+
reset(): void;
|
|
29
|
+
get baseOffset(): number;
|
|
30
|
+
get currentOffset(): number;
|
|
31
|
+
get allocatedBytes(): number;
|
|
32
|
+
get availableBytes(): number;
|
|
33
|
+
get byteCapacity(): number;
|
|
34
|
+
get memory(): WasmMemory;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=linear-arena.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linear-arena.d.ts","sourceRoot":"","sources":["../../../awasm/memory/linear-arena.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;GAGG;AACH,qBAAa,WAAW;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,cAAc,CAAS;gBAEnB,MAAM,EAAE,UAAU,EAAE,UAAU,GAAE,MAAU,EAAE,YAAY,CAAC,EAAE,MAAM;IAgB7E;;;OAGG;IACI,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAE,MAAU,GAAG,MAAM;IA+BhE;;OAEG;IACI,IAAI,IAAI,MAAM;IAIrB;;OAEG;IACI,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOjC;;OAEG;IACI,KAAK,IAAI,IAAI;IAIpB,IAAW,UAAU,IAAI,MAAM,CAE9B;IAED,IAAW,aAAa,IAAI,MAAM,CAEjC;IAED,IAAW,cAAc,IAAI,MAAM,CAElC;IAED,IAAW,cAAc,IAAI,MAAM,CAElC;IAED,IAAW,YAAY,IAAI,MAAM,CAEhC;IAED,IAAW,MAAM,IAAI,UAAU,CAE9B;CACJ"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
// ================================================================
|
|
2
|
+
// Awasm - Linear Memory: LinearArena
|
|
3
|
+
// ================================================================
|
|
4
|
+
import { WasmMemory } from "./wasm-memory.js";
|
|
5
|
+
/**
|
|
6
|
+
* Monotonic bump allocator operating within a reserved span of linear memory.
|
|
7
|
+
* Enforces power-of-two alignments and provides O(1) watermark rewind and reset operations.
|
|
8
|
+
*/
|
|
9
|
+
export class LinearArena {
|
|
10
|
+
_memory;
|
|
11
|
+
_baseOffset;
|
|
12
|
+
_byteCapacity;
|
|
13
|
+
_currentOffset;
|
|
14
|
+
constructor(memory, baseOffset = 0, byteCapacity) {
|
|
15
|
+
if (baseOffset < 0) {
|
|
16
|
+
throw new Error(`Base offset must be non-negative, received ${baseOffset}`);
|
|
17
|
+
}
|
|
18
|
+
this._memory = memory;
|
|
19
|
+
this._baseOffset = baseOffset;
|
|
20
|
+
this._currentOffset = baseOffset;
|
|
21
|
+
const maxAvailable = memory.byteLength - baseOffset;
|
|
22
|
+
if (maxAvailable < 0) {
|
|
23
|
+
throw new Error(`Base offset ${baseOffset} exceeds memory byte length ${memory.byteLength}`);
|
|
24
|
+
}
|
|
25
|
+
this._byteCapacity = byteCapacity !== undefined ? Math.min(byteCapacity, maxAvailable) : maxAvailable;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Allocates a contiguous byte span with the specified power-of-two alignment.
|
|
29
|
+
* Automatically expands underlying linear memory when permitted.
|
|
30
|
+
*/
|
|
31
|
+
allocate(byteSize, alignment = 8) {
|
|
32
|
+
if (byteSize <= 0) {
|
|
33
|
+
return this._currentOffset;
|
|
34
|
+
}
|
|
35
|
+
const mask = alignment - 1;
|
|
36
|
+
if ((alignment & mask) !== 0) {
|
|
37
|
+
throw new Error(`Alignment must be a power of two, received ${alignment}`);
|
|
38
|
+
}
|
|
39
|
+
const alignedOffset = (this._currentOffset + mask) & ~mask;
|
|
40
|
+
const nextOffset = alignedOffset + byteSize;
|
|
41
|
+
if (nextOffset - this._baseOffset > this._byteCapacity) {
|
|
42
|
+
const requiredBytes = nextOffset - this._memory.byteLength;
|
|
43
|
+
if (requiredBytes > 0) {
|
|
44
|
+
const pagesNeeded = Math.ceil(requiredBytes / WasmMemory.PAGE_SIZE);
|
|
45
|
+
this._memory.grow(pagesNeeded);
|
|
46
|
+
}
|
|
47
|
+
if (nextOffset - this._baseOffset > this._byteCapacity) {
|
|
48
|
+
throw new Error(`Arena allocation of ${byteSize} bytes exceeds capacity ${this._byteCapacity} at offset ${alignedOffset}`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
this._currentOffset = nextOffset;
|
|
52
|
+
return alignedOffset;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Returns the current allocation offset watermark.
|
|
56
|
+
*/
|
|
57
|
+
mark() {
|
|
58
|
+
return this._currentOffset;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Restores the allocation offset to a previously recorded watermark.
|
|
62
|
+
*/
|
|
63
|
+
rewind(mark) {
|
|
64
|
+
if (mark < this._baseOffset || mark > this._currentOffset) {
|
|
65
|
+
throw new Error(`Invalid watermark ${mark}; must be between ${this._baseOffset} and ${this._currentOffset}`);
|
|
66
|
+
}
|
|
67
|
+
this._currentOffset = mark;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Resets the allocation offset to the base pointer, recycling all arena memory in O(1) time.
|
|
71
|
+
*/
|
|
72
|
+
reset() {
|
|
73
|
+
this._currentOffset = this._baseOffset;
|
|
74
|
+
}
|
|
75
|
+
get baseOffset() {
|
|
76
|
+
return this._baseOffset;
|
|
77
|
+
}
|
|
78
|
+
get currentOffset() {
|
|
79
|
+
return this._currentOffset;
|
|
80
|
+
}
|
|
81
|
+
get allocatedBytes() {
|
|
82
|
+
return this._currentOffset - this._baseOffset;
|
|
83
|
+
}
|
|
84
|
+
get availableBytes() {
|
|
85
|
+
return this._byteCapacity - (this._currentOffset - this._baseOffset);
|
|
86
|
+
}
|
|
87
|
+
get byteCapacity() {
|
|
88
|
+
return this._byteCapacity;
|
|
89
|
+
}
|
|
90
|
+
get memory() {
|
|
91
|
+
return this._memory;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=linear-arena.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linear-arena.js","sourceRoot":"","sources":["../../../awasm/memory/linear-arena.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { WasmMemory } from "./wasm-memory.js";
|
|
2
|
+
/**
|
|
3
|
+
* Detachment-resilient typed array accessors over WebAssembly linear memory.
|
|
4
|
+
* Caches buffer references and revalidates views against WasmMemory generation counters
|
|
5
|
+
* to prevent accessing detached ArrayBuffers following memory expansion.
|
|
6
|
+
*/
|
|
7
|
+
export declare class MemoryView {
|
|
8
|
+
private readonly _memory;
|
|
9
|
+
private _cachedGeneration;
|
|
10
|
+
private _cachedBuffer;
|
|
11
|
+
constructor(memory: WasmMemory);
|
|
12
|
+
private resolveBuffer;
|
|
13
|
+
/**
|
|
14
|
+
* Slices an 8-bit unsigned integer view over linear memory.
|
|
15
|
+
*/
|
|
16
|
+
asUint8(byteOffset: number, length: number): Uint8Array;
|
|
17
|
+
/**
|
|
18
|
+
* Slices an 8-bit signed integer view over linear memory.
|
|
19
|
+
*/
|
|
20
|
+
asInt8(byteOffset: number, length: number): Int8Array;
|
|
21
|
+
/**
|
|
22
|
+
* Slices a 16-bit signed integer view over linear memory. Requires 2-byte alignment.
|
|
23
|
+
*/
|
|
24
|
+
asInt16(byteOffset: number, length: number): Int16Array;
|
|
25
|
+
/**
|
|
26
|
+
* Slices a 16-bit unsigned integer view over linear memory. Requires 2-byte alignment.
|
|
27
|
+
*/
|
|
28
|
+
asUint16(byteOffset: number, length: number): Uint16Array;
|
|
29
|
+
/**
|
|
30
|
+
* Slices a 32-bit signed integer view over linear memory. Requires 4-byte alignment.
|
|
31
|
+
*/
|
|
32
|
+
asInt32(byteOffset: number, length: number): Int32Array;
|
|
33
|
+
/**
|
|
34
|
+
* Slices a 32-bit unsigned integer view over linear memory. Requires 4-byte alignment.
|
|
35
|
+
*/
|
|
36
|
+
asUint32(byteOffset: number, length: number): Uint32Array;
|
|
37
|
+
/**
|
|
38
|
+
* Slices a 32-bit floating point view over linear memory. Requires 4-byte alignment.
|
|
39
|
+
*/
|
|
40
|
+
asFloat32(byteOffset: number, length: number): Float32Array;
|
|
41
|
+
/**
|
|
42
|
+
* Slices a 64-bit floating point view over linear memory. Requires 8-byte alignment.
|
|
43
|
+
*/
|
|
44
|
+
asFloat64(byteOffset: number, length: number): Float64Array;
|
|
45
|
+
/**
|
|
46
|
+
* Slices a DataView window over linear memory.
|
|
47
|
+
*/
|
|
48
|
+
asDataView(byteOffset: number, byteLength: number): DataView;
|
|
49
|
+
get memory(): WasmMemory;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=memory-view.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-view.d.ts","sourceRoot":"","sources":["../../../awasm/memory/memory-view.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;;GAIG;AACH,qBAAa,UAAU;IACnB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,aAAa,CAAc;gBAEvB,MAAM,EAAE,UAAU;IAM9B,OAAO,CAAC,aAAa;IAQrB;;OAEG;IACI,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU;IAK9D;;OAEG;IACI,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS;IAK5D;;OAEG;IACI,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU;IAQ9D;;OAEG;IACI,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW;IAQhE;;OAEG;IACI,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU;IAQ9D;;OAEG;IACI,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW;IAQhE;;OAEG;IACI,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY;IAQlE;;OAEG;IACI,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY;IAQlE;;OAEG;IACI,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,QAAQ;IAKnE,IAAW,MAAM,IAAI,UAAU,CAE9B;CACJ"}
|