@fluffylabs/anan-as 1.1.4 → 1.1.6-38dddc8

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.
Files changed (64) hide show
  1. package/README.md +107 -12
  2. package/dist/bin/build-inline.js +70 -0
  3. package/dist/bin/index.js +293 -0
  4. package/dist/bin/src/fuzz.js +155 -0
  5. package/dist/bin/src/log-host-call.js +41 -0
  6. package/dist/bin/src/test-json.js +135 -0
  7. package/dist/bin/src/trace-parse.js +315 -0
  8. package/dist/bin/src/trace-replay.js +130 -0
  9. package/dist/bin/src/tracer.js +64 -0
  10. package/dist/bin/src/utils.js +25 -0
  11. package/dist/bin/test.js +1 -0
  12. package/dist/build/compiler-inline.d.ts +11 -0
  13. package/dist/build/compiler-inline.js +22 -0
  14. package/dist/build/compiler.d.ts +26 -0
  15. package/dist/build/compiler.js +76 -0
  16. package/dist/build/compiler.wasm +0 -0
  17. package/{build → dist/build}/debug-inline.d.ts +1 -1
  18. package/dist/build/debug-inline.js +22 -0
  19. package/{build → dist/build}/debug-raw-inline.d.ts +1 -1
  20. package/dist/build/debug-raw-inline.js +22 -0
  21. package/{build → dist/build}/debug-raw.d.ts +155 -37
  22. package/{build → dist/build}/debug-raw.js +128 -41
  23. package/dist/build/debug-raw.wasm +0 -0
  24. package/{build → dist/build}/debug.d.ts +155 -37
  25. package/{build → dist/build}/debug.js +141 -43
  26. package/dist/build/debug.wasm +0 -0
  27. package/{build → dist/build}/release-inline.d.ts +1 -1
  28. package/dist/build/release-inline.js +22 -0
  29. package/{build → dist/build}/release-mini-inline.d.ts +1 -1
  30. package/dist/build/release-mini-inline.js +22 -0
  31. package/{build → dist/build}/release-mini.d.ts +155 -37
  32. package/{build → dist/build}/release-mini.js +141 -43
  33. package/dist/build/release-mini.wasm +0 -0
  34. package/{build → dist/build}/release-stub-inline.d.ts +1 -1
  35. package/dist/build/release-stub-inline.js +22 -0
  36. package/{build → dist/build}/release-stub.d.ts +155 -37
  37. package/{build → dist/build}/release-stub.js +141 -43
  38. package/dist/build/release-stub.wasm +0 -0
  39. package/{build → dist/build}/release.d.ts +155 -37
  40. package/{build → dist/build}/release.js +141 -43
  41. package/dist/build/release.wasm +0 -0
  42. package/{build → dist/build}/test-inline.d.ts +1 -1
  43. package/dist/build/test-inline.js +22 -0
  44. package/dist/build/test.wasm +0 -0
  45. package/dist/test/test-as.js +3 -0
  46. package/dist/test/test-gas-cost.js +57 -0
  47. package/dist/test/test-trace-replay.js +19 -0
  48. package/dist/test/test-w3f.js +121 -0
  49. package/dist/web/bump-version.js +7 -0
  50. package/package.json +48 -37
  51. package/build/debug-inline.js +0 -22
  52. package/build/debug-raw-inline.js +0 -22
  53. package/build/debug-raw.wasm +0 -0
  54. package/build/debug.wasm +0 -0
  55. package/build/release-inline.js +0 -22
  56. package/build/release-mini-inline.js +0 -22
  57. package/build/release-mini.wasm +0 -0
  58. package/build/release-stub-inline.js +0 -22
  59. package/build/release-stub.wasm +0 -0
  60. package/build/release.wasm +0 -0
  61. package/build/test-inline.js +0 -22
  62. package/build/test.wasm +0 -0
  63. /package/{build → dist/build}/test.d.ts +0 -0
  64. /package/{build → dist/build}/test.js +0 -0
@@ -1,22 +1,10 @@
1
1
  declare namespace __AdaptedExports {
2
2
  /** Exported memory */
3
3
  export const memory: WebAssembly.Memory;
4
- /**
5
- * assembly/api-internal/getAssembly
6
- * @param p `assembly/program/Program`
7
- * @returns `~lib/string/String`
8
- */
9
- export function getAssembly(p: __Internref26): string;
10
- /**
11
- * assembly/program-build/wrapAsProgram
12
- * @param bytecode `~lib/typedarray/Uint8Array`
13
- * @returns `~lib/typedarray/Uint8Array`
14
- */
15
- export function wrapAsProgram(bytecode: Uint8Array): Uint8Array;
16
4
  /**
17
5
  * assembly/api-debugger/resetJAM
18
6
  * @param program `~lib/array/Array<u8>`
19
- * @param pc `f64`
7
+ * @param pc `u32`
20
8
  * @param initialGas `i64`
21
9
  * @param args `~lib/array/Array<u8>`
22
10
  * @param hasMetadata `bool`
@@ -111,6 +99,48 @@ declare namespace __AdaptedExports {
111
99
  * @returns `bool`
112
100
  */
113
101
  export function setMemory(address: number, data: Uint8Array): boolean;
102
+ /**
103
+ * assembly/api-internal/getAssembly
104
+ * @param p `assembly/program/Program`
105
+ * @returns `~lib/string/String`
106
+ */
107
+ export function getAssembly(p: __Internref26): string;
108
+ /**
109
+ * assembly/api-internal/buildMemory
110
+ * @param builder `assembly/memory/MemoryBuilder`
111
+ * @param pages `~lib/array/Array<assembly/api-types/InitialPage>`
112
+ * @param chunks `~lib/array/Array<assembly/api-types/InitialChunk>`
113
+ * @returns `assembly/memory/Memory`
114
+ */
115
+ export function buildMemory(builder: __Internref41, pages: Array<__Record44<undefined>>, chunks: Array<__Record46<undefined>>): __Internref15;
116
+ /**
117
+ * assembly/api-internal/vmInit
118
+ * @param input `assembly/api-types/VmInput`
119
+ * @param useSbrkGas `bool`
120
+ * @returns `assembly/interpreter/Interpreter`
121
+ */
122
+ export function vmInit(input: __Internref49, useSbrkGas?: boolean): __Internref25;
123
+ /**
124
+ * assembly/api-internal/vmRunOnce
125
+ * @param input `assembly/api-types/VmInput`
126
+ * @param logs `bool`
127
+ * @param useSbrkGas `bool`
128
+ * @returns `assembly/api-types/VmOutput`
129
+ */
130
+ export function vmRunOnce(input: __Internref49, logs?: boolean, useSbrkGas?: boolean): __Record50<never>;
131
+ /**
132
+ * assembly/api-internal/vmExecute
133
+ * @param int `assembly/interpreter/Interpreter`
134
+ * @param logs `bool`
135
+ */
136
+ export function vmExecute(int: __Internref25, logs?: boolean): void;
137
+ /**
138
+ * assembly/api-internal/vmDestroy
139
+ * @param int `assembly/interpreter/Interpreter`
140
+ * @param dumpMemory `bool`
141
+ * @returns `assembly/api-types/VmOutput`
142
+ */
143
+ export function vmDestroy(int: __Internref25, dumpMemory?: boolean): __Record50<never>;
114
144
  /** assembly/api-utils/InputKind */
115
145
  export enum InputKind {
116
146
  /** @type `i32` */
@@ -132,7 +162,7 @@ declare namespace __AdaptedExports {
132
162
  * @param withMetadata `i32`
133
163
  * @returns `~lib/array/Array<assembly/gas-costs/BlockGasCost>`
134
164
  */
135
- export function getGasCosts(input: Array<number>, kind: number, withMetadata: number): Array<__Record50<never>>;
165
+ export function getGasCosts(input: Array<number>, kind: number, withMetadata: number): Array<__Record55<never>>;
136
166
  /**
137
167
  * assembly/api-utils/disassemble
138
168
  * @param input `~lib/array/Array<u8>`
@@ -147,12 +177,13 @@ declare namespace __AdaptedExports {
147
177
  * @param hasMetadata `i32`
148
178
  * @param program `~lib/array/Array<u8>`
149
179
  * @param initialRegisters `~lib/array/Array<u64>`
150
- * @param initialPageMap `~lib/array/Array<assembly/api-internal/InitialPage>`
151
- * @param initialMemory `~lib/array/Array<assembly/api-internal/InitialChunk>`
180
+ * @param initialPageMap `~lib/array/Array<assembly/api-types/InitialPage>`
181
+ * @param initialMemory `~lib/array/Array<assembly/api-types/InitialChunk>`
152
182
  * @param args `~lib/array/Array<u8>`
183
+ * @param preallocateMemoryPages `u32`
153
184
  * @returns `assembly/spi/StandardProgram`
154
185
  */
155
- export function prepareProgram(kind: number, hasMetadata: number, program: Array<number>, initialRegisters: Array<bigint>, initialPageMap: Array<__Record46<undefined>>, initialMemory: Array<__Record48<undefined>>, args: Array<number>): __Internref42;
186
+ export function prepareProgram(kind: number, hasMetadata: number, program: Array<number>, initialRegisters: Array<bigint>, initialPageMap: Array<__Record44<undefined>>, initialMemory: Array<__Record46<undefined>>, args: Array<number>, preallocateMemoryPages: number): __Internref40;
156
187
  /**
157
188
  * assembly/api-utils/runProgram
158
189
  * @param program `assembly/spi/StandardProgram`
@@ -160,24 +191,72 @@ declare namespace __AdaptedExports {
160
191
  * @param programCounter `u32`
161
192
  * @param logs `bool`
162
193
  * @param useSbrkGas `bool`
163
- * @returns `assembly/api-internal/VmOutput`
194
+ * @returns `assembly/api-types/VmOutput`
195
+ */
196
+ export function runProgram(program: __Internref40, initialGas?: bigint, programCounter?: number, logs?: boolean, useSbrkGas?: boolean): __Record50<never>;
197
+ /**
198
+ * assembly/api-utils/pvmStart
199
+ * @param program `assembly/spi/StandardProgram`
200
+ * @param useSbrkGas `bool`
201
+ * @returns `u32`
202
+ */
203
+ export function pvmStart(program: __Internref40, useSbrkGas?: boolean): number;
204
+ /**
205
+ * assembly/api-utils/pvmDestroy
206
+ * @param pvmId `u32`
207
+ * @returns `assembly/api-types/VmOutput | null`
208
+ */
209
+ export function pvmDestroy(pvmId: number): __Record50<never> | null;
210
+ /**
211
+ * assembly/api-utils/pvmSetRegisters
212
+ * @param pvmId `u32`
213
+ * @param registers `~lib/array/Array<u64>`
214
+ */
215
+ export function pvmSetRegisters(pvmId: number, registers: Array<bigint>): void;
216
+ /**
217
+ * assembly/api-utils/pvmReadMemory
218
+ * @param pvmId `u32`
219
+ * @param address `u32`
220
+ * @param length `u32`
221
+ * @returns `~lib/typedarray/Uint8Array | null`
222
+ */
223
+ export function pvmReadMemory(pvmId: number, address: number, length: number): Uint8Array | null;
224
+ /**
225
+ * assembly/api-utils/pvmWriteMemory
226
+ * @param pvmId `u32`
227
+ * @param address `u32`
228
+ * @param data `~lib/typedarray/Uint8Array`
229
+ * @returns `bool`
164
230
  */
165
- export function runProgram(program: __Internref42, initialGas?: bigint, programCounter?: number, logs?: boolean, useSbrkGas?: boolean): __Record55<never>;
231
+ export function pvmWriteMemory(pvmId: number, address: number, data: Uint8Array): boolean;
232
+ /**
233
+ * assembly/api-utils/pvmResume
234
+ * @param pvmId `u32`
235
+ * @param gas `i64`
236
+ * @param pc `u32`
237
+ * @param logs `bool`
238
+ * @returns `assembly/api-types/VmPause | null`
239
+ */
240
+ export function pvmResume(pvmId: number, gas: bigint, pc: number, logs?: boolean): __Record59<never> | null;
241
+ /**
242
+ * assembly/program-build/wrapAsProgram
243
+ * @param bytecode `~lib/typedarray/Uint8Array`
244
+ * @returns `~lib/typedarray/Uint8Array`
245
+ */
246
+ export function wrapAsProgram(bytecode: Uint8Array): Uint8Array;
166
247
  }
167
248
  /** assembly/program/Program */
168
249
  declare class __Internref26 extends Number {
169
250
  private __nominal26: symbol;
170
251
  private __nominal0: symbol;
171
252
  }
172
- /** assembly/gas-costs/BlockGasCost */
173
- declare interface __Record50<TOmittable> {
174
- /** @type `u32` */
175
- pc: number | TOmittable;
176
- /** @type `u64` */
177
- gas: bigint | TOmittable;
253
+ /** assembly/memory/MemoryBuilder */
254
+ declare class __Internref41 extends Number {
255
+ private __nominal41: symbol;
256
+ private __nominal0: symbol;
178
257
  }
179
- /** assembly/api-internal/InitialPage */
180
- declare interface __Record46<TOmittable> {
258
+ /** assembly/api-types/InitialPage */
259
+ declare interface __Record44<TOmittable> {
181
260
  /** @type `u32` */
182
261
  address: number | TOmittable;
183
262
  /** @type `u32` */
@@ -185,32 +264,71 @@ declare interface __Record46<TOmittable> {
185
264
  /** @type `i32` */
186
265
  access: number | TOmittable;
187
266
  }
188
- /** assembly/api-internal/InitialChunk */
189
- declare interface __Record48<TOmittable> {
267
+ /** assembly/api-types/InitialChunk */
268
+ declare interface __Record46<TOmittable> {
190
269
  /** @type `u32` */
191
270
  address: number | TOmittable;
192
271
  /** @type `~lib/array/Array<u8>` */
193
272
  data: Array<number>;
194
273
  }
195
- /** assembly/spi/StandardProgram */
196
- declare class __Internref42 extends Number {
197
- private __nominal42: symbol;
274
+ /** assembly/memory/Memory */
275
+ declare class __Internref15 extends Number {
276
+ private __nominal15: symbol;
198
277
  private __nominal0: symbol;
199
278
  }
200
- /** assembly/api-internal/VmOutput */
201
- declare interface __Record55<TOmittable> {
279
+ /** assembly/api-types/VmInput */
280
+ declare class __Internref49 extends Number {
281
+ private __nominal49: symbol;
282
+ private __nominal0: symbol;
283
+ }
284
+ /** assembly/interpreter/Interpreter */
285
+ declare class __Internref25 extends Number {
286
+ private __nominal25: symbol;
287
+ private __nominal0: symbol;
288
+ }
289
+ /** assembly/api-types/VmOutput */
290
+ declare interface __Record50<TOmittable> {
202
291
  /** @type `i32` */
203
292
  status: number | TOmittable;
293
+ /** @type `u32` */
294
+ exitCode: number | TOmittable;
295
+ /** @type `u32` */
296
+ pc: number | TOmittable;
297
+ /** @type `i64` */
298
+ gas: bigint | TOmittable;
299
+ /** @type `~lib/array/Array<u8>` */
300
+ result: Array<number>;
204
301
  /** @type `~lib/array/Array<u64>` */
205
302
  registers: Array<bigint>;
303
+ /** @type `~lib/array/Array<assembly/api-types/InitialChunk>` */
304
+ memory: Array<__Record46<never>>;
305
+ }
306
+ /** assembly/gas-costs/BlockGasCost */
307
+ declare interface __Record55<TOmittable> {
206
308
  /** @type `u32` */
207
309
  pc: number | TOmittable;
208
- /** @type `~lib/array/Array<assembly/api-internal/InitialChunk>` */
209
- memory: Array<__Record48<never>>;
210
- /** @type `i64` */
310
+ /** @type `u64` */
211
311
  gas: bigint | TOmittable;
312
+ }
313
+ /** assembly/spi/StandardProgram */
314
+ declare class __Internref40 extends Number {
315
+ private __nominal40: symbol;
316
+ private __nominal0: symbol;
317
+ }
318
+ /** assembly/api-types/VmPause */
319
+ declare interface __Record59<TOmittable> {
320
+ /** @type `i32` */
321
+ status: number | TOmittable;
212
322
  /** @type `u32` */
213
323
  exitCode: number | TOmittable;
324
+ /** @type `u32` */
325
+ pc: number | TOmittable;
326
+ /** @type `u32` */
327
+ nextPc: number | TOmittable;
328
+ /** @type `i64` */
329
+ gas: bigint | TOmittable;
330
+ /** @type `~lib/array/Array<u64>` */
331
+ registers: Array<bigint>;
214
332
  }
215
333
  /** Instantiates the compiled WebAssembly module with the given imports. */
216
334
  export declare function instantiate(module: WebAssembly.Module, imports: {
@@ -22,18 +22,8 @@ export async function instantiate(module, imports = {}) {
22
22
  const { exports } = await WebAssembly.instantiate(module, adaptedImports);
23
23
  const memory = exports.memory || imports.env.memory;
24
24
  const adaptedExports = Object.setPrototypeOf({
25
- getAssembly(p) {
26
- // assembly/api-internal/getAssembly(assembly/program/Program) => ~lib/string/String
27
- p = __lowerInternref(p) || __notnull();
28
- return __liftString(exports.getAssembly(p) >>> 0);
29
- },
30
- wrapAsProgram(bytecode) {
31
- // assembly/program-build/wrapAsProgram(~lib/typedarray/Uint8Array) => ~lib/typedarray/Uint8Array
32
- bytecode = __lowerTypedArray(Uint8Array, 10, 0, bytecode) || __notnull();
33
- return __liftTypedArray(Uint8Array, exports.wrapAsProgram(bytecode) >>> 0);
34
- },
35
25
  resetJAM(program, pc, initialGas, args, hasMetadata) {
36
- // assembly/api-debugger/resetJAM(~lib/array/Array<u8>, f64, i64, ~lib/array/Array<u8>, bool?) => void
26
+ // assembly/api-debugger/resetJAM(~lib/array/Array<u8>, u32, i64, ~lib/array/Array<u8>, bool?) => void
37
27
  program = __retain(__lowerArray(__setU8, 6, 0, program) || __notnull());
38
28
  initialGas = initialGas || 0n;
39
29
  args = __lowerArray(__setU8, 6, 0, args) || __notnull();
@@ -118,6 +108,52 @@ export async function instantiate(module, imports = {}) {
118
108
  data = __lowerTypedArray(Uint8Array, 10, 0, data) || __notnull();
119
109
  return exports.setMemory(address, data) != 0;
120
110
  },
111
+ getAssembly(p) {
112
+ // assembly/api-internal/getAssembly(assembly/program/Program) => ~lib/string/String
113
+ p = __lowerInternref(p) || __notnull();
114
+ return __liftString(exports.getAssembly(p) >>> 0);
115
+ },
116
+ buildMemory(builder, pages, chunks) {
117
+ // assembly/api-internal/buildMemory(assembly/memory/MemoryBuilder, ~lib/array/Array<assembly/api-types/InitialPage>, ~lib/array/Array<assembly/api-types/InitialChunk>) => assembly/memory/Memory
118
+ builder = __retain(__lowerInternref(builder) || __notnull());
119
+ pages = __retain(__lowerArray((pointer, value) => { __setU32(pointer, __lowerRecord44(value) || __notnull()); }, 45, 2, pages) || __notnull());
120
+ chunks = __lowerArray((pointer, value) => { __setU32(pointer, __lowerRecord46(value) || __notnull()); }, 47, 2, chunks) || __notnull();
121
+ try {
122
+ return __liftInternref(exports.buildMemory(builder, pages, chunks) >>> 0);
123
+ } finally {
124
+ __release(builder);
125
+ __release(pages);
126
+ }
127
+ },
128
+ vmInit(input, useSbrkGas) {
129
+ // assembly/api-internal/vmInit(assembly/api-types/VmInput, bool?) => assembly/interpreter/Interpreter
130
+ input = __lowerInternref(input) || __notnull();
131
+ useSbrkGas = useSbrkGas ? 1 : 0;
132
+ exports.__setArgumentsLength(arguments.length);
133
+ return __liftInternref(exports.vmInit(input, useSbrkGas) >>> 0);
134
+ },
135
+ vmRunOnce(input, logs, useSbrkGas) {
136
+ // assembly/api-internal/vmRunOnce(assembly/api-types/VmInput, bool?, bool?) => assembly/api-types/VmOutput
137
+ input = __lowerInternref(input) || __notnull();
138
+ logs = logs ? 1 : 0;
139
+ useSbrkGas = useSbrkGas ? 1 : 0;
140
+ exports.__setArgumentsLength(arguments.length);
141
+ return __liftRecord50(exports.vmRunOnce(input, logs, useSbrkGas) >>> 0);
142
+ },
143
+ vmExecute(int, logs) {
144
+ // assembly/api-internal/vmExecute(assembly/interpreter/Interpreter, bool?) => void
145
+ int = __lowerInternref(int) || __notnull();
146
+ logs = logs ? 1 : 0;
147
+ exports.__setArgumentsLength(arguments.length);
148
+ exports.vmExecute(int, logs);
149
+ },
150
+ vmDestroy(int, dumpMemory) {
151
+ // assembly/api-internal/vmDestroy(assembly/interpreter/Interpreter, bool?) => assembly/api-types/VmOutput
152
+ int = __lowerInternref(int) || __notnull();
153
+ dumpMemory = dumpMemory ? 1 : 0;
154
+ exports.__setArgumentsLength(arguments.length);
155
+ return __liftRecord50(exports.vmDestroy(int, dumpMemory) >>> 0);
156
+ },
121
157
  InputKind: (values => (
122
158
  // assembly/api-utils/InputKind
123
159
  values[values.Generic = exports["InputKind.Generic"].valueOf()] = "Generic",
@@ -133,22 +169,22 @@ export async function instantiate(module, imports = {}) {
133
169
  getGasCosts(input, kind, withMetadata) {
134
170
  // assembly/api-utils/getGasCosts(~lib/array/Array<u8>, i32, i32) => ~lib/array/Array<assembly/gas-costs/BlockGasCost>
135
171
  input = __lowerArray(__setU8, 6, 0, input) || __notnull();
136
- return __liftArray(pointer => __liftRecord50(__getU32(pointer)), 2, exports.getGasCosts(input, kind, withMetadata) >>> 0);
172
+ return __liftArray(pointer => __liftRecord55(__getU32(pointer)), 2, exports.getGasCosts(input, kind, withMetadata) >>> 0);
137
173
  },
138
174
  disassemble(input, kind, withMetadata) {
139
175
  // assembly/api-utils/disassemble(~lib/array/Array<u8>, i32, i32) => ~lib/string/String
140
176
  input = __lowerArray(__setU8, 6, 0, input) || __notnull();
141
177
  return __liftString(exports.disassemble(input, kind, withMetadata) >>> 0);
142
178
  },
143
- prepareProgram(kind, hasMetadata, program, initialRegisters, initialPageMap, initialMemory, args) {
144
- // assembly/api-utils/prepareProgram(i32, i32, ~lib/array/Array<u8>, ~lib/array/Array<u64>, ~lib/array/Array<assembly/api-internal/InitialPage>, ~lib/array/Array<assembly/api-internal/InitialChunk>, ~lib/array/Array<u8>) => assembly/spi/StandardProgram
179
+ prepareProgram(kind, hasMetadata, program, initialRegisters, initialPageMap, initialMemory, args, preallocateMemoryPages) {
180
+ // assembly/api-utils/prepareProgram(i32, i32, ~lib/array/Array<u8>, ~lib/array/Array<u64>, ~lib/array/Array<assembly/api-types/InitialPage>, ~lib/array/Array<assembly/api-types/InitialChunk>, ~lib/array/Array<u8>, u32) => assembly/spi/StandardProgram
145
181
  program = __retain(__lowerArray(__setU8, 6, 0, program) || __notnull());
146
- initialRegisters = __retain(__lowerArray(__setU64, 52, 3, initialRegisters) || __notnull());
147
- initialPageMap = __retain(__lowerArray((pointer, value) => { __setU32(pointer, __lowerRecord46(value) || __notnull()); }, 47, 2, initialPageMap) || __notnull());
148
- initialMemory = __retain(__lowerArray((pointer, value) => { __setU32(pointer, __lowerRecord48(value) || __notnull()); }, 49, 2, initialMemory) || __notnull());
182
+ initialRegisters = __retain(__lowerArray(__setU64, 51, 3, initialRegisters) || __notnull());
183
+ initialPageMap = __retain(__lowerArray((pointer, value) => { __setU32(pointer, __lowerRecord44(value) || __notnull()); }, 45, 2, initialPageMap) || __notnull());
184
+ initialMemory = __retain(__lowerArray((pointer, value) => { __setU32(pointer, __lowerRecord46(value) || __notnull()); }, 47, 2, initialMemory) || __notnull());
149
185
  args = __lowerArray(__setU8, 6, 0, args) || __notnull();
150
186
  try {
151
- return __liftInternref(exports.prepareProgram(kind, hasMetadata, program, initialRegisters, initialPageMap, initialMemory, args) >>> 0);
187
+ return __liftInternref(exports.prepareProgram(kind, hasMetadata, program, initialRegisters, initialPageMap, initialMemory, args, preallocateMemoryPages) >>> 0);
152
188
  } finally {
153
189
  __release(program);
154
190
  __release(initialRegisters);
@@ -157,47 +193,75 @@ export async function instantiate(module, imports = {}) {
157
193
  }
158
194
  },
159
195
  runProgram(program, initialGas, programCounter, logs, useSbrkGas) {
160
- // assembly/api-utils/runProgram(assembly/spi/StandardProgram, i64?, u32?, bool?, bool?) => assembly/api-internal/VmOutput
196
+ // assembly/api-utils/runProgram(assembly/spi/StandardProgram, i64?, u32?, bool?, bool?) => assembly/api-types/VmOutput
161
197
  program = __lowerInternref(program) || __notnull();
162
198
  initialGas = initialGas || 0n;
163
199
  logs = logs ? 1 : 0;
164
200
  useSbrkGas = useSbrkGas ? 1 : 0;
165
201
  exports.__setArgumentsLength(arguments.length);
166
- return __liftRecord55(exports.runProgram(program, initialGas, programCounter, logs, useSbrkGas) >>> 0);
202
+ return __liftRecord50(exports.runProgram(program, initialGas, programCounter, logs, useSbrkGas) >>> 0);
203
+ },
204
+ pvmStart(program, useSbrkGas) {
205
+ // assembly/api-utils/pvmStart(assembly/spi/StandardProgram, bool?) => u32
206
+ program = __lowerInternref(program) || __notnull();
207
+ useSbrkGas = useSbrkGas ? 1 : 0;
208
+ exports.__setArgumentsLength(arguments.length);
209
+ return exports.pvmStart(program, useSbrkGas) >>> 0;
210
+ },
211
+ pvmDestroy(pvmId) {
212
+ // assembly/api-utils/pvmDestroy(u32) => assembly/api-types/VmOutput | null
213
+ return __liftRecord50(exports.pvmDestroy(pvmId) >>> 0);
214
+ },
215
+ pvmSetRegisters(pvmId, registers) {
216
+ // assembly/api-utils/pvmSetRegisters(u32, ~lib/array/Array<u64>) => void
217
+ registers = __lowerArray(__setU64, 51, 3, registers) || __notnull();
218
+ exports.pvmSetRegisters(pvmId, registers);
219
+ },
220
+ pvmReadMemory(pvmId, address, length) {
221
+ // assembly/api-utils/pvmReadMemory(u32, u32, u32) => ~lib/typedarray/Uint8Array | null
222
+ return __liftTypedArray(Uint8Array, exports.pvmReadMemory(pvmId, address, length) >>> 0);
223
+ },
224
+ pvmWriteMemory(pvmId, address, data) {
225
+ // assembly/api-utils/pvmWriteMemory(u32, u32, ~lib/typedarray/Uint8Array) => bool
226
+ data = __lowerTypedArray(Uint8Array, 10, 0, data) || __notnull();
227
+ return exports.pvmWriteMemory(pvmId, address, data) != 0;
228
+ },
229
+ pvmResume(pvmId, gas, pc, logs) {
230
+ // assembly/api-utils/pvmResume(u32, i64, u32, bool?) => assembly/api-types/VmPause | null
231
+ gas = gas || 0n;
232
+ logs = logs ? 1 : 0;
233
+ exports.__setArgumentsLength(arguments.length);
234
+ return __liftRecord59(exports.pvmResume(pvmId, gas, pc, logs) >>> 0);
235
+ },
236
+ wrapAsProgram(bytecode) {
237
+ // assembly/program-build/wrapAsProgram(~lib/typedarray/Uint8Array) => ~lib/typedarray/Uint8Array
238
+ bytecode = __lowerTypedArray(Uint8Array, 10, 0, bytecode) || __notnull();
239
+ return __liftTypedArray(Uint8Array, exports.wrapAsProgram(bytecode) >>> 0);
167
240
  },
168
241
  }, exports);
169
- function __liftRecord50(pointer) {
170
- // assembly/gas-costs/BlockGasCost
171
- // Hint: Opt-out from lifting as a record by providing an empty constructor
172
- if (!pointer) return null;
173
- return {
174
- pc: __getU32(pointer + 0),
175
- gas: __getU64(pointer + 8),
176
- };
177
- }
178
- function __lowerRecord46(value) {
179
- // assembly/api-internal/InitialPage
242
+ function __lowerRecord44(value) {
243
+ // assembly/api-types/InitialPage
180
244
  // Hint: Opt-out from lowering as a record by providing an empty constructor
181
245
  if (value == null) return 0;
182
- const pointer = exports.__pin(exports.__new(12, 46));
246
+ const pointer = exports.__pin(exports.__new(12, 44));
183
247
  __setU32(pointer + 0, value.address);
184
248
  __setU32(pointer + 4, value.length);
185
249
  __setU32(pointer + 8, value.access);
186
250
  exports.__unpin(pointer);
187
251
  return pointer;
188
252
  }
189
- function __lowerRecord48(value) {
190
- // assembly/api-internal/InitialChunk
253
+ function __lowerRecord46(value) {
254
+ // assembly/api-types/InitialChunk
191
255
  // Hint: Opt-out from lowering as a record by providing an empty constructor
192
256
  if (value == null) return 0;
193
- const pointer = exports.__pin(exports.__new(8, 48));
257
+ const pointer = exports.__pin(exports.__new(8, 46));
194
258
  __setU32(pointer + 0, value.address);
195
259
  __setU32(pointer + 4, __lowerArray(__setU8, 6, 0, value.data) || __notnull());
196
260
  exports.__unpin(pointer);
197
261
  return pointer;
198
262
  }
199
- function __liftRecord48(pointer) {
200
- // assembly/api-internal/InitialChunk
263
+ function __liftRecord46(pointer) {
264
+ // assembly/api-types/InitialChunk
201
265
  // Hint: Opt-out from lifting as a record by providing an empty constructor
202
266
  if (!pointer) return null;
203
267
  return {
@@ -205,17 +269,40 @@ export async function instantiate(module, imports = {}) {
205
269
  data: __liftArray(__getU8, 0, __getU32(pointer + 4)),
206
270
  };
207
271
  }
272
+ function __liftRecord50(pointer) {
273
+ // assembly/api-types/VmOutput
274
+ // Hint: Opt-out from lifting as a record by providing an empty constructor
275
+ if (!pointer) return null;
276
+ return {
277
+ status: __getI32(pointer + 0),
278
+ exitCode: __getU32(pointer + 4),
279
+ pc: __getU32(pointer + 8),
280
+ gas: __getI64(pointer + 16),
281
+ result: __liftArray(__getU8, 0, __getU32(pointer + 24)),
282
+ registers: __liftArray(pointer => BigInt.asUintN(64, __getU64(pointer)), 3, __getU32(pointer + 28)),
283
+ memory: __liftArray(pointer => __liftRecord46(__getU32(pointer)), 2, __getU32(pointer + 32)),
284
+ };
285
+ }
208
286
  function __liftRecord55(pointer) {
209
- // assembly/api-internal/VmOutput
287
+ // assembly/gas-costs/BlockGasCost
288
+ // Hint: Opt-out from lifting as a record by providing an empty constructor
289
+ if (!pointer) return null;
290
+ return {
291
+ pc: __getU32(pointer + 0),
292
+ gas: __getU64(pointer + 8),
293
+ };
294
+ }
295
+ function __liftRecord59(pointer) {
296
+ // assembly/api-types/VmPause
210
297
  // Hint: Opt-out from lifting as a record by providing an empty constructor
211
298
  if (!pointer) return null;
212
299
  return {
213
300
  status: __getI32(pointer + 0),
214
- registers: __liftArray(pointer => BigInt.asUintN(64, __getU64(pointer)), 3, __getU32(pointer + 4)),
301
+ exitCode: __getU32(pointer + 4),
215
302
  pc: __getU32(pointer + 8),
216
- memory: __liftArray(pointer => __liftRecord48(__getU32(pointer)), 2, __getU32(pointer + 12)),
303
+ nextPc: __getU32(pointer + 12),
217
304
  gas: __getI64(pointer + 16),
218
- exitCode: __getU32(pointer + 24),
305
+ registers: __liftArray(pointer => BigInt.asUintN(64, __getU64(pointer)), 3, __getU32(pointer + 24)),
219
306
  };
220
307
  }
221
308
  function __liftString(pointer) {
Binary file