@fluffylabs/anan-as 1.1.5 → 1.1.6-8306b17

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 +164 -37
  22. package/{build → dist/build}/debug-raw.js +143 -42
  23. package/dist/build/debug-raw.wasm +0 -0
  24. package/{build → dist/build}/debug.d.ts +164 -37
  25. package/{build → dist/build}/debug.js +156 -44
  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 +164 -37
  32. package/{build → dist/build}/release-mini.js +156 -44
  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 +164 -37
  37. package/{build → dist/build}/release-stub.js +156 -44
  38. package/dist/build/release-stub.wasm +0 -0
  39. package/{build → dist/build}/release.d.ts +164 -37
  40. package/{build → dist/build}/release.js +156 -44
  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 +47 -36
  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,47 @@ 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 options `assembly/api-types/VmRunOptions`
127
+ * @returns `assembly/api-types/VmOutput`
128
+ */
129
+ export function vmRunOnce(input: __Internref49, options: __Record50<undefined>): __Record51<never>;
130
+ /**
131
+ * assembly/api-internal/vmExecute
132
+ * @param int `assembly/interpreter/Interpreter`
133
+ * @param logs `bool`
134
+ */
135
+ export function vmExecute(int: __Internref25, logs?: boolean): void;
136
+ /**
137
+ * assembly/api-internal/vmDestroy
138
+ * @param int `assembly/interpreter/Interpreter`
139
+ * @param dumpMemory `bool`
140
+ * @returns `assembly/api-types/VmOutput`
141
+ */
142
+ export function vmDestroy(int: __Internref25, dumpMemory?: boolean): __Record51<never>;
114
143
  /** assembly/api-utils/InputKind */
115
144
  export enum InputKind {
116
145
  /** @type `i32` */
@@ -132,7 +161,7 @@ declare namespace __AdaptedExports {
132
161
  * @param withMetadata `i32`
133
162
  * @returns `~lib/array/Array<assembly/gas-costs/BlockGasCost>`
134
163
  */
135
- export function getGasCosts(input: Array<number>, kind: number, withMetadata: number): Array<__Record50<never>>;
164
+ export function getGasCosts(input: Array<number>, kind: number, withMetadata: number): Array<__Record56<never>>;
136
165
  /**
137
166
  * assembly/api-utils/disassemble
138
167
  * @param input `~lib/array/Array<u8>`
@@ -147,12 +176,13 @@ declare namespace __AdaptedExports {
147
176
  * @param hasMetadata `i32`
148
177
  * @param program `~lib/array/Array<u8>`
149
178
  * @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>`
179
+ * @param initialPageMap `~lib/array/Array<assembly/api-types/InitialPage>`
180
+ * @param initialMemory `~lib/array/Array<assembly/api-types/InitialChunk>`
152
181
  * @param args `~lib/array/Array<u8>`
182
+ * @param preallocateMemoryPages `u32`
153
183
  * @returns `assembly/spi/StandardProgram`
154
184
  */
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;
185
+ 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
186
  /**
157
187
  * assembly/api-utils/runProgram
158
188
  * @param program `assembly/spi/StandardProgram`
@@ -160,24 +190,73 @@ declare namespace __AdaptedExports {
160
190
  * @param programCounter `u32`
161
191
  * @param logs `bool`
162
192
  * @param useSbrkGas `bool`
163
- * @returns `assembly/api-internal/VmOutput`
193
+ * @param dumpMemory `bool`
194
+ * @returns `assembly/api-types/VmOutput`
164
195
  */
165
- export function runProgram(program: __Internref42, initialGas?: bigint, programCounter?: number, logs?: boolean, useSbrkGas?: boolean): __Record55<never>;
196
+ export function runProgram(program: __Internref40, initialGas?: bigint, programCounter?: number, logs?: boolean, useSbrkGas?: boolean, dumpMemory?: boolean): __Record51<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): __Record51<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`
230
+ */
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): __Record60<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,80 @@ 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;
277
+ private __nominal0: symbol;
278
+ }
279
+ /** assembly/api-types/VmInput */
280
+ declare class __Internref49 extends Number {
281
+ private __nominal49: symbol;
198
282
  private __nominal0: symbol;
199
283
  }
200
- /** assembly/api-internal/VmOutput */
201
- declare interface __Record55<TOmittable> {
284
+ /** assembly/interpreter/Interpreter */
285
+ declare class __Internref25 extends Number {
286
+ private __nominal25: symbol;
287
+ private __nominal0: symbol;
288
+ }
289
+ /** assembly/api-types/VmRunOptions */
290
+ declare interface __Record50<TOmittable> {
291
+ /** @type `bool` */
292
+ useSbrkGas: boolean | TOmittable;
293
+ /** @type `bool` */
294
+ logs: boolean | TOmittable;
295
+ /** @type `bool` */
296
+ dumpMemory: boolean | TOmittable;
297
+ }
298
+ /** assembly/api-types/VmOutput */
299
+ declare interface __Record51<TOmittable> {
202
300
  /** @type `i32` */
203
301
  status: number | TOmittable;
302
+ /** @type `u32` */
303
+ exitCode: number | TOmittable;
304
+ /** @type `u32` */
305
+ pc: number | TOmittable;
306
+ /** @type `i64` */
307
+ gas: bigint | TOmittable;
308
+ /** @type `~lib/array/Array<u8>` */
309
+ result: Array<number>;
204
310
  /** @type `~lib/array/Array<u64>` */
205
311
  registers: Array<bigint>;
312
+ /** @type `~lib/array/Array<assembly/api-types/InitialChunk>` */
313
+ memory: Array<__Record46<never>>;
314
+ }
315
+ /** assembly/gas-costs/BlockGasCost */
316
+ declare interface __Record56<TOmittable> {
206
317
  /** @type `u32` */
207
318
  pc: number | TOmittable;
208
- /** @type `~lib/array/Array<assembly/api-internal/InitialChunk>` */
209
- memory: Array<__Record48<never>>;
210
- /** @type `i64` */
319
+ /** @type `u64` */
211
320
  gas: bigint | TOmittable;
321
+ }
322
+ /** assembly/spi/StandardProgram */
323
+ declare class __Internref40 extends Number {
324
+ private __nominal40: symbol;
325
+ private __nominal0: symbol;
326
+ }
327
+ /** assembly/api-types/VmPause */
328
+ declare interface __Record60<TOmittable> {
329
+ /** @type `i32` */
330
+ status: number | TOmittable;
212
331
  /** @type `u32` */
213
332
  exitCode: number | TOmittable;
333
+ /** @type `u32` */
334
+ pc: number | TOmittable;
335
+ /** @type `u32` */
336
+ nextPc: number | TOmittable;
337
+ /** @type `i64` */
338
+ gas: bigint | TOmittable;
339
+ /** @type `~lib/array/Array<u64>` */
340
+ registers: Array<bigint>;
214
341
  }
215
342
  /** Instantiates the compiled WebAssembly module with the given imports. */
216
343
  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,54 @@ 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, options) {
136
+ // assembly/api-internal/vmRunOnce(assembly/api-types/VmInput, assembly/api-types/VmRunOptions) => assembly/api-types/VmOutput
137
+ input = __retain(__lowerInternref(input) || __notnull());
138
+ options = __lowerRecord50(options) || __notnull();
139
+ try {
140
+ return __liftRecord51(exports.vmRunOnce(input, options) >>> 0);
141
+ } finally {
142
+ __release(input);
143
+ }
144
+ },
145
+ vmExecute(int, logs) {
146
+ // assembly/api-internal/vmExecute(assembly/interpreter/Interpreter, bool?) => void
147
+ int = __lowerInternref(int) || __notnull();
148
+ logs = logs ? 1 : 0;
149
+ exports.__setArgumentsLength(arguments.length);
150
+ exports.vmExecute(int, logs);
151
+ },
152
+ vmDestroy(int, dumpMemory) {
153
+ // assembly/api-internal/vmDestroy(assembly/interpreter/Interpreter, bool?) => assembly/api-types/VmOutput
154
+ int = __lowerInternref(int) || __notnull();
155
+ dumpMemory = dumpMemory ? 1 : 0;
156
+ exports.__setArgumentsLength(arguments.length);
157
+ return __liftRecord51(exports.vmDestroy(int, dumpMemory) >>> 0);
158
+ },
121
159
  InputKind: (values => (
122
160
  // assembly/api-utils/InputKind
123
161
  values[values.Generic = exports["InputKind.Generic"].valueOf()] = "Generic",
@@ -133,22 +171,22 @@ export async function instantiate(module, imports = {}) {
133
171
  getGasCosts(input, kind, withMetadata) {
134
172
  // assembly/api-utils/getGasCosts(~lib/array/Array<u8>, i32, i32) => ~lib/array/Array<assembly/gas-costs/BlockGasCost>
135
173
  input = __lowerArray(__setU8, 6, 0, input) || __notnull();
136
- return __liftArray(pointer => __liftRecord50(__getU32(pointer)), 2, exports.getGasCosts(input, kind, withMetadata) >>> 0);
174
+ return __liftArray(pointer => __liftRecord56(__getU32(pointer)), 2, exports.getGasCosts(input, kind, withMetadata) >>> 0);
137
175
  },
138
176
  disassemble(input, kind, withMetadata) {
139
177
  // assembly/api-utils/disassemble(~lib/array/Array<u8>, i32, i32) => ~lib/string/String
140
178
  input = __lowerArray(__setU8, 6, 0, input) || __notnull();
141
179
  return __liftString(exports.disassemble(input, kind, withMetadata) >>> 0);
142
180
  },
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
181
+ prepareProgram(kind, hasMetadata, program, initialRegisters, initialPageMap, initialMemory, args, preallocateMemoryPages) {
182
+ // 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
183
  program = __retain(__lowerArray(__setU8, 6, 0, program) || __notnull());
146
184
  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());
185
+ initialPageMap = __retain(__lowerArray((pointer, value) => { __setU32(pointer, __lowerRecord44(value) || __notnull()); }, 45, 2, initialPageMap) || __notnull());
186
+ initialMemory = __retain(__lowerArray((pointer, value) => { __setU32(pointer, __lowerRecord46(value) || __notnull()); }, 47, 2, initialMemory) || __notnull());
149
187
  args = __lowerArray(__setU8, 6, 0, args) || __notnull();
150
188
  try {
151
- return __liftInternref(exports.prepareProgram(kind, hasMetadata, program, initialRegisters, initialPageMap, initialMemory, args) >>> 0);
189
+ return __liftInternref(exports.prepareProgram(kind, hasMetadata, program, initialRegisters, initialPageMap, initialMemory, args, preallocateMemoryPages) >>> 0);
152
190
  } finally {
153
191
  __release(program);
154
192
  __release(initialRegisters);
@@ -156,48 +194,88 @@ export async function instantiate(module, imports = {}) {
156
194
  __release(initialMemory);
157
195
  }
158
196
  },
159
- runProgram(program, initialGas, programCounter, logs, useSbrkGas) {
160
- // assembly/api-utils/runProgram(assembly/spi/StandardProgram, i64?, u32?, bool?, bool?) => assembly/api-internal/VmOutput
197
+ runProgram(program, initialGas, programCounter, logs, useSbrkGas, dumpMemory) {
198
+ // assembly/api-utils/runProgram(assembly/spi/StandardProgram, i64?, u32?, bool?, bool?, bool?) => assembly/api-types/VmOutput
161
199
  program = __lowerInternref(program) || __notnull();
162
200
  initialGas = initialGas || 0n;
163
201
  logs = logs ? 1 : 0;
164
202
  useSbrkGas = useSbrkGas ? 1 : 0;
203
+ dumpMemory = dumpMemory ? 1 : 0;
204
+ exports.__setArgumentsLength(arguments.length);
205
+ return __liftRecord51(exports.runProgram(program, initialGas, programCounter, logs, useSbrkGas, dumpMemory) >>> 0);
206
+ },
207
+ pvmStart(program, useSbrkGas) {
208
+ // assembly/api-utils/pvmStart(assembly/spi/StandardProgram, bool?) => u32
209
+ program = __lowerInternref(program) || __notnull();
210
+ useSbrkGas = useSbrkGas ? 1 : 0;
211
+ exports.__setArgumentsLength(arguments.length);
212
+ return exports.pvmStart(program, useSbrkGas) >>> 0;
213
+ },
214
+ pvmDestroy(pvmId) {
215
+ // assembly/api-utils/pvmDestroy(u32) => assembly/api-types/VmOutput | null
216
+ return __liftRecord51(exports.pvmDestroy(pvmId) >>> 0);
217
+ },
218
+ pvmSetRegisters(pvmId, registers) {
219
+ // assembly/api-utils/pvmSetRegisters(u32, ~lib/array/Array<u64>) => void
220
+ registers = __lowerArray(__setU64, 52, 3, registers) || __notnull();
221
+ exports.pvmSetRegisters(pvmId, registers);
222
+ },
223
+ pvmReadMemory(pvmId, address, length) {
224
+ // assembly/api-utils/pvmReadMemory(u32, u32, u32) => ~lib/typedarray/Uint8Array | null
225
+ return __liftTypedArray(Uint8Array, exports.pvmReadMemory(pvmId, address, length) >>> 0);
226
+ },
227
+ pvmWriteMemory(pvmId, address, data) {
228
+ // assembly/api-utils/pvmWriteMemory(u32, u32, ~lib/typedarray/Uint8Array) => bool
229
+ data = __lowerTypedArray(Uint8Array, 10, 0, data) || __notnull();
230
+ return exports.pvmWriteMemory(pvmId, address, data) != 0;
231
+ },
232
+ pvmResume(pvmId, gas, pc, logs) {
233
+ // assembly/api-utils/pvmResume(u32, i64, u32, bool?) => assembly/api-types/VmPause | null
234
+ gas = gas || 0n;
235
+ logs = logs ? 1 : 0;
165
236
  exports.__setArgumentsLength(arguments.length);
166
- return __liftRecord55(exports.runProgram(program, initialGas, programCounter, logs, useSbrkGas) >>> 0);
237
+ return __liftRecord60(exports.pvmResume(pvmId, gas, pc, logs) >>> 0);
238
+ },
239
+ wrapAsProgram(bytecode) {
240
+ // assembly/program-build/wrapAsProgram(~lib/typedarray/Uint8Array) => ~lib/typedarray/Uint8Array
241
+ bytecode = __lowerTypedArray(Uint8Array, 10, 0, bytecode) || __notnull();
242
+ return __liftTypedArray(Uint8Array, exports.wrapAsProgram(bytecode) >>> 0);
167
243
  },
168
244
  }, 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
245
+ function __lowerRecord44(value) {
246
+ // assembly/api-types/InitialPage
180
247
  // Hint: Opt-out from lowering as a record by providing an empty constructor
181
248
  if (value == null) return 0;
182
- const pointer = exports.__pin(exports.__new(12, 46));
249
+ const pointer = exports.__pin(exports.__new(12, 44));
183
250
  __setU32(pointer + 0, value.address);
184
251
  __setU32(pointer + 4, value.length);
185
252
  __setU32(pointer + 8, value.access);
186
253
  exports.__unpin(pointer);
187
254
  return pointer;
188
255
  }
189
- function __lowerRecord48(value) {
190
- // assembly/api-internal/InitialChunk
256
+ function __lowerRecord46(value) {
257
+ // assembly/api-types/InitialChunk
191
258
  // Hint: Opt-out from lowering as a record by providing an empty constructor
192
259
  if (value == null) return 0;
193
- const pointer = exports.__pin(exports.__new(8, 48));
260
+ const pointer = exports.__pin(exports.__new(8, 46));
194
261
  __setU32(pointer + 0, value.address);
195
262
  __setU32(pointer + 4, __lowerArray(__setU8, 6, 0, value.data) || __notnull());
196
263
  exports.__unpin(pointer);
197
264
  return pointer;
198
265
  }
199
- function __liftRecord48(pointer) {
200
- // assembly/api-internal/InitialChunk
266
+ function __lowerRecord50(value) {
267
+ // assembly/api-types/VmRunOptions
268
+ // Hint: Opt-out from lowering as a record by providing an empty constructor
269
+ if (value == null) return 0;
270
+ const pointer = exports.__pin(exports.__new(3, 50));
271
+ __setU8(pointer + 0, value.useSbrkGas ? 1 : 0);
272
+ __setU8(pointer + 1, value.logs ? 1 : 0);
273
+ __setU8(pointer + 2, value.dumpMemory ? 1 : 0);
274
+ exports.__unpin(pointer);
275
+ return pointer;
276
+ }
277
+ function __liftRecord46(pointer) {
278
+ // assembly/api-types/InitialChunk
201
279
  // Hint: Opt-out from lifting as a record by providing an empty constructor
202
280
  if (!pointer) return null;
203
281
  return {
@@ -205,17 +283,40 @@ export async function instantiate(module, imports = {}) {
205
283
  data: __liftArray(__getU8, 0, __getU32(pointer + 4)),
206
284
  };
207
285
  }
208
- function __liftRecord55(pointer) {
209
- // assembly/api-internal/VmOutput
286
+ function __liftRecord51(pointer) {
287
+ // assembly/api-types/VmOutput
288
+ // Hint: Opt-out from lifting as a record by providing an empty constructor
289
+ if (!pointer) return null;
290
+ return {
291
+ status: __getI32(pointer + 0),
292
+ exitCode: __getU32(pointer + 4),
293
+ pc: __getU32(pointer + 8),
294
+ gas: __getI64(pointer + 16),
295
+ result: __liftArray(__getU8, 0, __getU32(pointer + 24)),
296
+ registers: __liftArray(pointer => BigInt.asUintN(64, __getU64(pointer)), 3, __getU32(pointer + 28)),
297
+ memory: __liftArray(pointer => __liftRecord46(__getU32(pointer)), 2, __getU32(pointer + 32)),
298
+ };
299
+ }
300
+ function __liftRecord56(pointer) {
301
+ // assembly/gas-costs/BlockGasCost
302
+ // Hint: Opt-out from lifting as a record by providing an empty constructor
303
+ if (!pointer) return null;
304
+ return {
305
+ pc: __getU32(pointer + 0),
306
+ gas: __getU64(pointer + 8),
307
+ };
308
+ }
309
+ function __liftRecord60(pointer) {
310
+ // assembly/api-types/VmPause
210
311
  // Hint: Opt-out from lifting as a record by providing an empty constructor
211
312
  if (!pointer) return null;
212
313
  return {
213
314
  status: __getI32(pointer + 0),
214
- registers: __liftArray(pointer => BigInt.asUintN(64, __getU64(pointer)), 3, __getU32(pointer + 4)),
315
+ exitCode: __getU32(pointer + 4),
215
316
  pc: __getU32(pointer + 8),
216
- memory: __liftArray(pointer => __liftRecord48(__getU32(pointer)), 2, __getU32(pointer + 12)),
317
+ nextPc: __getU32(pointer + 12),
217
318
  gas: __getI64(pointer + 16),
218
- exitCode: __getU32(pointer + 24),
319
+ registers: __liftArray(pointer => BigInt.asUintN(64, __getU64(pointer)), 3, __getU32(pointer + 24)),
219
320
  };
220
321
  }
221
322
  function __liftString(pointer) {
Binary file