@fluffylabs/anan-as 1.1.3-e3864a9 → 1.1.3-eee81bd

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 (41) hide show
  1. package/README.md +47 -10
  2. package/dist/bin/index.js +174 -102
  3. package/dist/bin/{fuzz.js → src/fuzz.js} +3 -20
  4. package/dist/bin/src/log-host-call.js +41 -0
  5. package/dist/bin/src/trace-parse.js +315 -0
  6. package/dist/bin/src/trace-replay.js +130 -0
  7. package/dist/bin/src/tracer.js +64 -0
  8. package/dist/bin/src/utils.js +25 -0
  9. package/dist/bin/test.js +1 -3
  10. package/dist/build/compiler-inline.js +1 -1
  11. package/dist/build/compiler.d.ts +2 -2
  12. package/dist/build/compiler.js +1 -1
  13. package/dist/build/compiler.wasm +0 -0
  14. package/dist/build/debug-inline.js +1 -1
  15. package/dist/build/debug-raw-inline.js +1 -1
  16. package/dist/build/debug-raw.d.ts +113 -57
  17. package/dist/build/debug-raw.js +97 -61
  18. package/dist/build/debug-raw.wasm +0 -0
  19. package/dist/build/debug.d.ts +113 -57
  20. package/dist/build/debug.js +107 -64
  21. package/dist/build/debug.wasm +0 -0
  22. package/dist/build/release-inline.js +1 -1
  23. package/dist/build/release-mini-inline.js +1 -1
  24. package/dist/build/release-mini.d.ts +113 -57
  25. package/dist/build/release-mini.js +107 -64
  26. package/dist/build/release-mini.wasm +0 -0
  27. package/dist/build/release-stub-inline.js +1 -1
  28. package/dist/build/release-stub.d.ts +113 -57
  29. package/dist/build/release-stub.js +107 -64
  30. package/dist/build/release-stub.wasm +0 -0
  31. package/dist/build/release.d.ts +113 -57
  32. package/dist/build/release.js +107 -64
  33. package/dist/build/release.wasm +0 -0
  34. package/dist/build/test-inline.js +1 -1
  35. package/dist/build/test.wasm +0 -0
  36. package/dist/test/test-as.js +3 -0
  37. package/dist/{bin → test}/test-gas-cost.js +1 -1
  38. package/dist/test/test-trace-replay.js +19 -0
  39. package/dist/{bin → test}/test-w3f.js +3 -1
  40. package/package.json +5 -5
  41. /package/dist/bin/{test-json.js → src/test-json.js} +0 -0
@@ -111,27 +111,41 @@ export declare function setMemory(address: number, data: Uint8Array): boolean;
111
111
  */
112
112
  export declare function getAssembly(p: __Internref26): string;
113
113
  /**
114
- * assembly/api-internal/runVm
114
+ * assembly/api-internal/buildMemory
115
+ * @param builder `assembly/memory/MemoryBuilder`
116
+ * @param pages `~lib/array/Array<assembly/api-types/InitialPage>`
117
+ * @param chunks `~lib/array/Array<assembly/api-types/InitialChunk>`
118
+ * @returns `assembly/memory/Memory`
119
+ */
120
+ export declare function buildMemory(builder: __Internref41, pages: Array<__Record44<undefined>>, chunks: Array<__Record46<undefined>>): __Internref15;
121
+ /**
122
+ * assembly/api-internal/vmInit
123
+ * @param input `assembly/api-types/VmInput`
124
+ * @param useSbrkGas `bool`
125
+ * @returns `assembly/interpreter/Interpreter`
126
+ */
127
+ export declare function vmInit(input: __Internref49, useSbrkGas?: boolean): __Internref25;
128
+ /**
129
+ * assembly/api-internal/vmRunOnce
115
130
  * @param input `assembly/api-types/VmInput`
116
131
  * @param logs `bool`
117
132
  * @param useSbrkGas `bool`
118
133
  * @returns `assembly/api-types/VmOutput`
119
134
  */
120
- export declare function runVm(input: __Internref48, logs?: boolean, useSbrkGas?: boolean): __Record49<never>;
135
+ export declare function vmRunOnce(input: __Internref49, logs?: boolean, useSbrkGas?: boolean): __Record50<never>;
121
136
  /**
122
- * assembly/api-internal/getOutputChunks
123
- * @param memory `assembly/memory/Memory`
124
- * @returns `~lib/array/Array<assembly/api-types/InitialChunk>`
137
+ * assembly/api-internal/vmExecute
138
+ * @param int `assembly/interpreter/Interpreter`
139
+ * @param logs `bool`
125
140
  */
126
- export declare function getOutputChunks(memory: __Internref15): Array<__Record45<never>>;
141
+ export declare function vmExecute(int: __Internref25, logs?: boolean): void;
127
142
  /**
128
- * assembly/api-internal/buildMemory
129
- * @param builder `assembly/memory/MemoryBuilder`
130
- * @param pages `~lib/array/Array<assembly/api-types/InitialPage>`
131
- * @param chunks `~lib/array/Array<assembly/api-types/InitialChunk>`
132
- * @returns `assembly/memory/Memory`
143
+ * assembly/api-internal/vmDestroy
144
+ * @param int `assembly/interpreter/Interpreter`
145
+ * @param dumpMemory `bool`
146
+ * @returns `assembly/api-types/VmOutput`
133
147
  */
134
- export declare function buildMemory(builder: __Internref40, pages: Array<__Record43<undefined>>, chunks: Array<__Record45<undefined>>): __Internref15;
148
+ export declare function vmDestroy(int: __Internref25, dumpMemory?: boolean): __Record50<never>;
135
149
  /** assembly/api-utils/InputKind */
136
150
  export declare enum InputKind {
137
151
  /** @type `i32` */
@@ -153,7 +167,7 @@ export declare enum HasMetadata {
153
167
  * @param withMetadata `i32`
154
168
  * @returns `~lib/array/Array<assembly/gas-costs/BlockGasCost>`
155
169
  */
156
- export declare function getGasCosts(input: Array<number>, kind: number, withMetadata: number): Array<__Record54<never>>;
170
+ export declare function getGasCosts(input: Array<number>, kind: number, withMetadata: number): Array<__Record55<never>>;
157
171
  /**
158
172
  * assembly/api-utils/disassemble
159
173
  * @param input `~lib/array/Array<u8>`
@@ -173,7 +187,7 @@ export declare function disassemble(input: Array<number>, kind: number, withMeta
173
187
  * @param args `~lib/array/Array<u8>`
174
188
  * @returns `assembly/spi/StandardProgram`
175
189
  */
176
- export declare function prepareProgram(kind: number, hasMetadata: number, program: Array<number>, initialRegisters: Array<bigint>, initialPageMap: Array<__Record43<undefined>>, initialMemory: Array<__Record45<undefined>>, args: Array<number>): __Internref39;
190
+ export declare function prepareProgram(kind: number, hasMetadata: number, program: Array<number>, initialRegisters: Array<bigint>, initialPageMap: Array<__Record44<undefined>>, initialMemory: Array<__Record46<undefined>>, args: Array<number>): __Internref40;
177
191
  /**
178
192
  * assembly/api-utils/runProgram
179
193
  * @param program `assembly/spi/StandardProgram`
@@ -183,18 +197,51 @@ export declare function prepareProgram(kind: number, hasMetadata: number, progra
183
197
  * @param useSbrkGas `bool`
184
198
  * @returns `assembly/api-types/VmOutput`
185
199
  */
186
- export declare function runProgram(program: __Internref39, initialGas?: bigint, programCounter?: number, logs?: boolean, useSbrkGas?: boolean): __Record49<never>;
200
+ export declare function runProgram(program: __Internref40, initialGas?: bigint, programCounter?: number, logs?: boolean, useSbrkGas?: boolean): __Record50<never>;
187
201
  /**
188
- * assembly/api-utils/runJAM
189
- * @param pc `u32`
202
+ * assembly/api-utils/pvmStart
203
+ * @param program `assembly/spi/StandardProgram`
204
+ * @param useSbrkGas `bool`
205
+ * @returns `u32`
206
+ */
207
+ export declare function pvmStart(program: __Internref40, useSbrkGas?: boolean): number;
208
+ /**
209
+ * assembly/api-utils/pvmDestroy
210
+ * @param pvmId `u32`
211
+ * @returns `assembly/api-types/VmOutput | null`
212
+ */
213
+ export declare function pvmDestroy(pvmId: number): __Record50<never> | null;
214
+ /**
215
+ * assembly/api-utils/pvmSetRegisters
216
+ * @param pvmId `u32`
217
+ * @param registers `~lib/array/Array<u64>`
218
+ */
219
+ export declare function pvmSetRegisters(pvmId: number, registers: Array<bigint>): void;
220
+ /**
221
+ * assembly/api-utils/pvmReadMemory
222
+ * @param pvmId `u32`
223
+ * @param address `u32`
224
+ * @param length `u32`
225
+ * @returns `~lib/typedarray/Uint8Array | null`
226
+ */
227
+ export declare function pvmReadMemory(pvmId: number, address: number, length: number): Uint8Array | null;
228
+ /**
229
+ * assembly/api-utils/pvmWriteMemory
230
+ * @param pvmId `u32`
231
+ * @param address `u32`
232
+ * @param data `~lib/typedarray/Uint8Array`
233
+ * @returns `bool`
234
+ */
235
+ export declare function pvmWriteMemory(pvmId: number, address: number, data: Uint8Array): boolean;
236
+ /**
237
+ * assembly/api-utils/pvmResume
238
+ * @param pvmId `u32`
190
239
  * @param gas `i64`
191
- * @param program `~lib/array/Array<u8>`
192
- * @param args `~lib/array/Array<u8>`
240
+ * @param pc `u32`
193
241
  * @param logs `bool`
194
- * @param useSbrkGas `bool`
195
- * @returns `assembly/api-types/ReturnValue`
242
+ * @returns `assembly/api-types/VmPause | null`
196
243
  */
197
- export declare function runJAM(pc: number, gas: bigint, program: Array<number>, args: Array<number>, logs?: boolean, useSbrkGas?: boolean): __Record58<never>;
244
+ export declare function pvmResume(pvmId: number, gas: bigint, pc: number, logs?: boolean): __Record59<never> | null;
198
245
  /**
199
246
  * assembly/program-build/wrapAsProgram
200
247
  * @param bytecode `~lib/typedarray/Uint8Array`
@@ -206,74 +253,83 @@ declare class __Internref26 extends Number {
206
253
  private __nominal26: symbol;
207
254
  private __nominal0: symbol;
208
255
  }
209
- /** assembly/api-types/VmInput */
210
- declare class __Internref48 extends Number {
211
- private __nominal48: symbol;
256
+ /** assembly/memory/MemoryBuilder */
257
+ declare class __Internref41 extends Number {
258
+ private __nominal41: symbol;
212
259
  private __nominal0: symbol;
213
260
  }
261
+ /** assembly/api-types/InitialPage */
262
+ declare interface __Record44<TOmittable> {
263
+ /** @type `u32` */
264
+ address: number | TOmittable;
265
+ /** @type `u32` */
266
+ length: number | TOmittable;
267
+ /** @type `i32` */
268
+ access: number | TOmittable;
269
+ }
214
270
  /** assembly/api-types/InitialChunk */
215
- declare interface __Record45<TOmittable> {
271
+ declare interface __Record46<TOmittable> {
216
272
  /** @type `u32` */
217
273
  address: number | TOmittable;
218
274
  /** @type `~lib/array/Array<u8>` */
219
275
  data: Array<number>;
220
276
  }
221
- /** assembly/api-types/VmOutput */
222
- declare interface __Record49<TOmittable> {
223
- /** @type `i32` */
224
- status: number | TOmittable;
225
- /** @type `~lib/array/Array<u64>` */
226
- registers: Array<bigint>;
227
- /** @type `u32` */
228
- pc: number | TOmittable;
229
- /** @type `~lib/array/Array<assembly/api-types/InitialChunk>` */
230
- memory: Array<__Record45<never>>;
231
- /** @type `i64` */
232
- gas: bigint | TOmittable;
233
- /** @type `u32` */
234
- exitCode: number | TOmittable;
235
- }
236
277
  /** assembly/memory/Memory */
237
278
  declare class __Internref15 extends Number {
238
279
  private __nominal15: symbol;
239
280
  private __nominal0: symbol;
240
281
  }
241
- /** assembly/memory/MemoryBuilder */
242
- declare class __Internref40 extends Number {
243
- private __nominal40: symbol;
282
+ /** assembly/api-types/VmInput */
283
+ declare class __Internref49 extends Number {
284
+ private __nominal49: symbol;
244
285
  private __nominal0: symbol;
245
286
  }
246
- /** assembly/api-types/InitialPage */
247
- declare interface __Record43<TOmittable> {
287
+ /** assembly/interpreter/Interpreter */
288
+ declare class __Internref25 extends Number {
289
+ private __nominal25: symbol;
290
+ private __nominal0: symbol;
291
+ }
292
+ /** assembly/api-types/VmOutput */
293
+ declare interface __Record50<TOmittable> {
294
+ /** @type `i32` */
295
+ status: number | TOmittable;
248
296
  /** @type `u32` */
249
- address: number | TOmittable;
297
+ exitCode: number | TOmittable;
250
298
  /** @type `u32` */
251
- length: number | TOmittable;
252
- /** @type `i32` */
253
- access: number | TOmittable;
299
+ pc: number | TOmittable;
300
+ /** @type `i64` */
301
+ gas: bigint | TOmittable;
302
+ /** @type `~lib/array/Array<u8>` */
303
+ result: Array<number>;
304
+ /** @type `~lib/array/Array<u64>` */
305
+ registers: Array<bigint>;
306
+ /** @type `~lib/array/Array<assembly/api-types/InitialChunk>` */
307
+ memory: Array<__Record46<never>>;
254
308
  }
255
309
  /** assembly/gas-costs/BlockGasCost */
256
- declare interface __Record54<TOmittable> {
310
+ declare interface __Record55<TOmittable> {
257
311
  /** @type `u32` */
258
312
  pc: number | TOmittable;
259
313
  /** @type `u64` */
260
314
  gas: bigint | TOmittable;
261
315
  }
262
316
  /** assembly/spi/StandardProgram */
263
- declare class __Internref39 extends Number {
264
- private __nominal39: symbol;
317
+ declare class __Internref40 extends Number {
318
+ private __nominal40: symbol;
265
319
  private __nominal0: symbol;
266
320
  }
267
- /** assembly/api-types/ReturnValue */
268
- declare interface __Record58<TOmittable> {
321
+ /** assembly/api-types/VmPause */
322
+ declare interface __Record59<TOmittable> {
269
323
  /** @type `i32` */
270
324
  status: number | TOmittable;
271
325
  /** @type `u32` */
272
326
  exitCode: number | TOmittable;
273
327
  /** @type `u32` */
274
328
  pc: number | TOmittable;
329
+ /** @type `u32` */
330
+ nextPc: number | TOmittable;
275
331
  /** @type `i64` */
276
332
  gas: bigint | TOmittable;
277
- /** @type `~lib/array/Array<u8>` */
278
- result: Array<number>;
333
+ /** @type `~lib/array/Array<u64>` */
334
+ registers: Array<bigint>;
279
335
  }
@@ -113,24 +113,11 @@ async function instantiate(module, imports = {}) {
113
113
  p = __lowerInternref(p) || __notnull();
114
114
  return __liftString(exports.getAssembly(p) >>> 0);
115
115
  },
116
- runVm(input, logs, useSbrkGas) {
117
- // assembly/api-internal/runVm(assembly/api-types/VmInput, bool?, bool?) => assembly/api-types/VmOutput
118
- input = __lowerInternref(input) || __notnull();
119
- logs = logs ? 1 : 0;
120
- useSbrkGas = useSbrkGas ? 1 : 0;
121
- exports.__setArgumentsLength(arguments.length);
122
- return __liftRecord49(exports.runVm(input, logs, useSbrkGas) >>> 0);
123
- },
124
- getOutputChunks(memory) {
125
- // assembly/api-internal/getOutputChunks(assembly/memory/Memory) => ~lib/array/Array<assembly/api-types/InitialChunk>
126
- memory = __lowerInternref(memory) || __notnull();
127
- return __liftArray(pointer => __liftRecord45(__getU32(pointer)), 2, exports.getOutputChunks(memory) >>> 0);
128
- },
129
116
  buildMemory(builder, pages, chunks) {
130
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
131
118
  builder = __retain(__lowerInternref(builder) || __notnull());
132
- pages = __retain(__lowerArray((pointer, value) => { __setU32(pointer, __lowerRecord43(value) || __notnull()); }, 44, 2, pages) || __notnull());
133
- chunks = __lowerArray((pointer, value) => { __setU32(pointer, __lowerRecord45(value) || __notnull()); }, 46, 2, chunks) || __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();
134
121
  try {
135
122
  return __liftInternref(exports.buildMemory(builder, pages, chunks) >>> 0);
136
123
  } finally {
@@ -138,6 +125,35 @@ async function instantiate(module, imports = {}) {
138
125
  __release(pages);
139
126
  }
140
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
+ },
141
157
  InputKind: (values => (
142
158
  // assembly/api-utils/InputKind
143
159
  values[values.Generic = exports["InputKind.Generic"].valueOf()] = "Generic",
@@ -153,7 +169,7 @@ async function instantiate(module, imports = {}) {
153
169
  getGasCosts(input, kind, withMetadata) {
154
170
  // assembly/api-utils/getGasCosts(~lib/array/Array<u8>, i32, i32) => ~lib/array/Array<assembly/gas-costs/BlockGasCost>
155
171
  input = __lowerArray(__setU8, 6, 0, input) || __notnull();
156
- return __liftArray(pointer => __liftRecord54(__getU32(pointer)), 2, exports.getGasCosts(input, kind, withMetadata) >>> 0);
172
+ return __liftArray(pointer => __liftRecord55(__getU32(pointer)), 2, exports.getGasCosts(input, kind, withMetadata) >>> 0);
157
173
  },
158
174
  disassemble(input, kind, withMetadata) {
159
175
  // assembly/api-utils/disassemble(~lib/array/Array<u8>, i32, i32) => ~lib/string/String
@@ -163,9 +179,9 @@ async function instantiate(module, imports = {}) {
163
179
  prepareProgram(kind, hasMetadata, program, initialRegisters, initialPageMap, initialMemory, args) {
164
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>) => assembly/spi/StandardProgram
165
181
  program = __retain(__lowerArray(__setU8, 6, 0, program) || __notnull());
166
- initialRegisters = __retain(__lowerArray(__setU64, 50, 3, initialRegisters) || __notnull());
167
- initialPageMap = __retain(__lowerArray((pointer, value) => { __setU32(pointer, __lowerRecord43(value) || __notnull()); }, 44, 2, initialPageMap) || __notnull());
168
- initialMemory = __retain(__lowerArray((pointer, value) => { __setU32(pointer, __lowerRecord45(value) || __notnull()); }, 46, 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());
169
185
  args = __lowerArray(__setU8, 6, 0, args) || __notnull();
170
186
  try {
171
187
  return __liftInternref(exports.prepareProgram(kind, hasMetadata, program, initialRegisters, initialPageMap, initialMemory, args) >>> 0);
@@ -183,21 +199,39 @@ async function instantiate(module, imports = {}) {
183
199
  logs = logs ? 1 : 0;
184
200
  useSbrkGas = useSbrkGas ? 1 : 0;
185
201
  exports.__setArgumentsLength(arguments.length);
186
- return __liftRecord49(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;
187
228
  },
188
- runJAM(pc, gas, program, args, logs, useSbrkGas) {
189
- // assembly/api-utils/runJAM(u32, i64, ~lib/array/Array<u8>, ~lib/array/Array<u8>, bool?, bool?) => assembly/api-types/ReturnValue
229
+ pvmResume(pvmId, gas, pc, logs) {
230
+ // assembly/api-utils/pvmResume(u32, i64, u32, bool?) => assembly/api-types/VmPause | null
190
231
  gas = gas || 0n;
191
- program = __retain(__lowerArray(__setU8, 6, 0, program) || __notnull());
192
- args = __lowerArray(__setU8, 6, 0, args) || __notnull();
193
232
  logs = logs ? 1 : 0;
194
- useSbrkGas = useSbrkGas ? 1 : 0;
195
- try {
196
- exports.__setArgumentsLength(arguments.length);
197
- return __liftRecord58(exports.runJAM(pc, gas, program, args, logs, useSbrkGas) >>> 0);
198
- } finally {
199
- __release(program);
200
- }
233
+ exports.__setArgumentsLength(arguments.length);
234
+ return __liftRecord59(exports.pvmResume(pvmId, gas, pc, logs) >>> 0);
201
235
  },
202
236
  wrapAsProgram(bytecode) {
203
237
  // assembly/program-build/wrapAsProgram(~lib/typedarray/Uint8Array) => ~lib/typedarray/Uint8Array
@@ -205,50 +239,51 @@ async function instantiate(module, imports = {}) {
205
239
  return __liftTypedArray(Uint8Array, exports.wrapAsProgram(bytecode) >>> 0);
206
240
  },
207
241
  }, exports);
208
- function __liftRecord45(pointer) {
209
- // assembly/api-types/InitialChunk
210
- // Hint: Opt-out from lifting as a record by providing an empty constructor
211
- if (!pointer) return null;
212
- return {
213
- address: __getU32(pointer + 0),
214
- data: __liftArray(__getU8, 0, __getU32(pointer + 4)),
215
- };
216
- }
217
- function __liftRecord49(pointer) {
218
- // assembly/api-types/VmOutput
219
- // Hint: Opt-out from lifting as a record by providing an empty constructor
220
- if (!pointer) return null;
221
- return {
222
- status: __getI32(pointer + 0),
223
- registers: __liftArray(pointer => BigInt.asUintN(64, __getU64(pointer)), 3, __getU32(pointer + 4)),
224
- pc: __getU32(pointer + 8),
225
- memory: __liftArray(pointer => __liftRecord45(__getU32(pointer)), 2, __getU32(pointer + 12)),
226
- gas: __getI64(pointer + 16),
227
- exitCode: __getU32(pointer + 24),
228
- };
229
- }
230
- function __lowerRecord43(value) {
242
+ function __lowerRecord44(value) {
231
243
  // assembly/api-types/InitialPage
232
244
  // Hint: Opt-out from lowering as a record by providing an empty constructor
233
245
  if (value == null) return 0;
234
- const pointer = exports.__pin(exports.__new(12, 43));
246
+ const pointer = exports.__pin(exports.__new(12, 44));
235
247
  __setU32(pointer + 0, value.address);
236
248
  __setU32(pointer + 4, value.length);
237
249
  __setU32(pointer + 8, value.access);
238
250
  exports.__unpin(pointer);
239
251
  return pointer;
240
252
  }
241
- function __lowerRecord45(value) {
253
+ function __lowerRecord46(value) {
242
254
  // assembly/api-types/InitialChunk
243
255
  // Hint: Opt-out from lowering as a record by providing an empty constructor
244
256
  if (value == null) return 0;
245
- const pointer = exports.__pin(exports.__new(8, 45));
257
+ const pointer = exports.__pin(exports.__new(8, 46));
246
258
  __setU32(pointer + 0, value.address);
247
259
  __setU32(pointer + 4, __lowerArray(__setU8, 6, 0, value.data) || __notnull());
248
260
  exports.__unpin(pointer);
249
261
  return pointer;
250
262
  }
251
- function __liftRecord54(pointer) {
263
+ function __liftRecord46(pointer) {
264
+ // assembly/api-types/InitialChunk
265
+ // Hint: Opt-out from lifting as a record by providing an empty constructor
266
+ if (!pointer) return null;
267
+ return {
268
+ address: __getU32(pointer + 0),
269
+ data: __liftArray(__getU8, 0, __getU32(pointer + 4)),
270
+ };
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
+ }
286
+ function __liftRecord55(pointer) {
252
287
  // assembly/gas-costs/BlockGasCost
253
288
  // Hint: Opt-out from lifting as a record by providing an empty constructor
254
289
  if (!pointer) return null;
@@ -257,16 +292,17 @@ async function instantiate(module, imports = {}) {
257
292
  gas: __getU64(pointer + 8),
258
293
  };
259
294
  }
260
- function __liftRecord58(pointer) {
261
- // assembly/api-types/ReturnValue
295
+ function __liftRecord59(pointer) {
296
+ // assembly/api-types/VmPause
262
297
  // Hint: Opt-out from lifting as a record by providing an empty constructor
263
298
  if (!pointer) return null;
264
299
  return {
265
300
  status: __getI32(pointer + 0),
266
301
  exitCode: __getU32(pointer + 4),
267
302
  pc: __getU32(pointer + 8),
303
+ nextPc: __getU32(pointer + 12),
268
304
  gas: __getI64(pointer + 16),
269
- result: __liftArray(__getU8, 0, __getU32(pointer + 24)),
305
+ registers: __liftArray(pointer => BigInt.asUintN(64, __getU64(pointer)), 3, __getU32(pointer + 24)),
270
306
  };
271
307
  }
272
308
  function __liftString(pointer) {
@@ -449,16 +485,23 @@ export const {
449
485
  getMemory,
450
486
  setMemory,
451
487
  getAssembly,
452
- runVm,
453
- getOutputChunks,
454
488
  buildMemory,
489
+ vmInit,
490
+ vmRunOnce,
491
+ vmExecute,
492
+ vmDestroy,
455
493
  InputKind,
456
494
  HasMetadata,
457
495
  getGasCosts,
458
496
  disassemble,
459
497
  prepareProgram,
460
498
  runProgram,
461
- runJAM,
499
+ pvmStart,
500
+ pvmDestroy,
501
+ pvmSetRegisters,
502
+ pvmReadMemory,
503
+ pvmWriteMemory,
504
+ pvmResume,
462
505
  wrapAsProgram,
463
506
  } = await (async url => instantiate(
464
507
  await (async () => {
Binary file