@fluffylabs/anan-as 1.1.3-69fe64d → 1.1.3-742bc4e
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/README.md +47 -10
- package/dist/bin/index.js +175 -102
- package/dist/bin/{fuzz.js → src/fuzz.js} +4 -21
- package/dist/bin/src/log-host-call.js +41 -0
- package/dist/bin/src/trace-parse.js +315 -0
- package/dist/bin/src/trace-replay.js +130 -0
- package/dist/bin/src/tracer.js +64 -0
- package/dist/bin/src/utils.js +25 -0
- package/dist/bin/test.js +1 -3
- package/dist/build/compiler-inline.js +1 -1
- package/dist/build/compiler.d.ts +2 -2
- package/dist/build/compiler.js +1 -1
- package/dist/build/compiler.wasm +0 -0
- package/dist/build/debug-inline.js +1 -1
- package/dist/build/debug-raw-inline.js +1 -1
- package/dist/build/debug-raw.d.ts +114 -57
- package/dist/build/debug-raw.js +100 -64
- package/dist/build/debug-raw.wasm +0 -0
- package/dist/build/debug.d.ts +114 -57
- package/dist/build/debug.js +110 -67
- package/dist/build/debug.wasm +0 -0
- package/dist/build/release-inline.js +1 -1
- package/dist/build/release-mini-inline.js +1 -1
- package/dist/build/release-mini.d.ts +114 -57
- package/dist/build/release-mini.js +110 -67
- package/dist/build/release-mini.wasm +0 -0
- package/dist/build/release-stub-inline.js +1 -1
- package/dist/build/release-stub.d.ts +114 -57
- package/dist/build/release-stub.js +110 -67
- package/dist/build/release-stub.wasm +0 -0
- package/dist/build/release.d.ts +114 -57
- package/dist/build/release.js +110 -67
- package/dist/build/release.wasm +0 -0
- package/dist/build/test-inline.js +1 -1
- package/dist/build/test.wasm +0 -0
- package/dist/test/test-as.js +3 -0
- package/dist/{bin → test}/test-gas-cost.js +1 -1
- package/dist/test/test-trace-replay.js +19 -0
- package/dist/{bin → test}/test-w3f.js +4 -2
- package/package.json +5 -5
- /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/
|
|
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
|
|
135
|
+
export declare function vmRunOnce(input: __Internref49, logs?: boolean, useSbrkGas?: boolean): __Record50<never>;
|
|
121
136
|
/**
|
|
122
|
-
* assembly/api-internal/
|
|
123
|
-
* @param
|
|
124
|
-
* @
|
|
137
|
+
* assembly/api-internal/vmExecute
|
|
138
|
+
* @param int `assembly/interpreter/Interpreter`
|
|
139
|
+
* @param logs `bool`
|
|
125
140
|
*/
|
|
126
|
-
export declare function
|
|
141
|
+
export declare function vmExecute(int: __Internref25, logs?: boolean): void;
|
|
127
142
|
/**
|
|
128
|
-
* assembly/api-internal/
|
|
129
|
-
* @param
|
|
130
|
-
* @param
|
|
131
|
-
* @
|
|
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
|
|
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<
|
|
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>`
|
|
@@ -171,9 +185,10 @@ export declare function disassemble(input: Array<number>, kind: number, withMeta
|
|
|
171
185
|
* @param initialPageMap `~lib/array/Array<assembly/api-types/InitialPage>`
|
|
172
186
|
* @param initialMemory `~lib/array/Array<assembly/api-types/InitialChunk>`
|
|
173
187
|
* @param args `~lib/array/Array<u8>`
|
|
188
|
+
* @param preallocateMemoryPages `u32`
|
|
174
189
|
* @returns `assembly/spi/StandardProgram`
|
|
175
190
|
*/
|
|
176
|
-
export declare function prepareProgram(kind: number, hasMetadata: number, program: Array<number>, initialRegisters: Array<bigint>, initialPageMap: Array<
|
|
191
|
+
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>, preallocateMemoryPages: number): __Internref40;
|
|
177
192
|
/**
|
|
178
193
|
* assembly/api-utils/runProgram
|
|
179
194
|
* @param program `assembly/spi/StandardProgram`
|
|
@@ -183,18 +198,51 @@ export declare function prepareProgram(kind: number, hasMetadata: number, progra
|
|
|
183
198
|
* @param useSbrkGas `bool`
|
|
184
199
|
* @returns `assembly/api-types/VmOutput`
|
|
185
200
|
*/
|
|
186
|
-
export declare function runProgram(program:
|
|
201
|
+
export declare function runProgram(program: __Internref40, initialGas?: bigint, programCounter?: number, logs?: boolean, useSbrkGas?: boolean): __Record50<never>;
|
|
187
202
|
/**
|
|
188
|
-
* assembly/api-utils/
|
|
189
|
-
* @param
|
|
203
|
+
* assembly/api-utils/pvmStart
|
|
204
|
+
* @param program `assembly/spi/StandardProgram`
|
|
205
|
+
* @param useSbrkGas `bool`
|
|
206
|
+
* @returns `u32`
|
|
207
|
+
*/
|
|
208
|
+
export declare function pvmStart(program: __Internref40, useSbrkGas?: boolean): number;
|
|
209
|
+
/**
|
|
210
|
+
* assembly/api-utils/pvmDestroy
|
|
211
|
+
* @param pvmId `u32`
|
|
212
|
+
* @returns `assembly/api-types/VmOutput | null`
|
|
213
|
+
*/
|
|
214
|
+
export declare function pvmDestroy(pvmId: number): __Record50<never> | null;
|
|
215
|
+
/**
|
|
216
|
+
* assembly/api-utils/pvmSetRegisters
|
|
217
|
+
* @param pvmId `u32`
|
|
218
|
+
* @param registers `~lib/array/Array<u64>`
|
|
219
|
+
*/
|
|
220
|
+
export declare function pvmSetRegisters(pvmId: number, registers: Array<bigint>): void;
|
|
221
|
+
/**
|
|
222
|
+
* assembly/api-utils/pvmReadMemory
|
|
223
|
+
* @param pvmId `u32`
|
|
224
|
+
* @param address `u32`
|
|
225
|
+
* @param length `u32`
|
|
226
|
+
* @returns `~lib/typedarray/Uint8Array | null`
|
|
227
|
+
*/
|
|
228
|
+
export declare function pvmReadMemory(pvmId: number, address: number, length: number): Uint8Array | null;
|
|
229
|
+
/**
|
|
230
|
+
* assembly/api-utils/pvmWriteMemory
|
|
231
|
+
* @param pvmId `u32`
|
|
232
|
+
* @param address `u32`
|
|
233
|
+
* @param data `~lib/typedarray/Uint8Array`
|
|
234
|
+
* @returns `bool`
|
|
235
|
+
*/
|
|
236
|
+
export declare function pvmWriteMemory(pvmId: number, address: number, data: Uint8Array): boolean;
|
|
237
|
+
/**
|
|
238
|
+
* assembly/api-utils/pvmResume
|
|
239
|
+
* @param pvmId `u32`
|
|
190
240
|
* @param gas `i64`
|
|
191
|
-
* @param
|
|
192
|
-
* @param args `~lib/array/Array<u8>`
|
|
241
|
+
* @param pc `u32`
|
|
193
242
|
* @param logs `bool`
|
|
194
|
-
* @
|
|
195
|
-
* @returns `assembly/api-types/ReturnValue`
|
|
243
|
+
* @returns `assembly/api-types/VmPause | null`
|
|
196
244
|
*/
|
|
197
|
-
export declare function
|
|
245
|
+
export declare function pvmResume(pvmId: number, gas: bigint, pc: number, logs?: boolean): __Record59<never> | null;
|
|
198
246
|
/**
|
|
199
247
|
* assembly/program-build/wrapAsProgram
|
|
200
248
|
* @param bytecode `~lib/typedarray/Uint8Array`
|
|
@@ -206,74 +254,83 @@ declare class __Internref26 extends Number {
|
|
|
206
254
|
private __nominal26: symbol;
|
|
207
255
|
private __nominal0: symbol;
|
|
208
256
|
}
|
|
209
|
-
/** assembly/
|
|
210
|
-
declare class
|
|
211
|
-
private
|
|
257
|
+
/** assembly/memory/MemoryBuilder */
|
|
258
|
+
declare class __Internref41 extends Number {
|
|
259
|
+
private __nominal41: symbol;
|
|
212
260
|
private __nominal0: symbol;
|
|
213
261
|
}
|
|
262
|
+
/** assembly/api-types/InitialPage */
|
|
263
|
+
declare interface __Record44<TOmittable> {
|
|
264
|
+
/** @type `u32` */
|
|
265
|
+
address: number | TOmittable;
|
|
266
|
+
/** @type `u32` */
|
|
267
|
+
length: number | TOmittable;
|
|
268
|
+
/** @type `i32` */
|
|
269
|
+
access: number | TOmittable;
|
|
270
|
+
}
|
|
214
271
|
/** assembly/api-types/InitialChunk */
|
|
215
|
-
declare interface
|
|
272
|
+
declare interface __Record46<TOmittable> {
|
|
216
273
|
/** @type `u32` */
|
|
217
274
|
address: number | TOmittable;
|
|
218
275
|
/** @type `~lib/array/Array<u8>` */
|
|
219
276
|
data: Array<number>;
|
|
220
277
|
}
|
|
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
278
|
/** assembly/memory/Memory */
|
|
237
279
|
declare class __Internref15 extends Number {
|
|
238
280
|
private __nominal15: symbol;
|
|
239
281
|
private __nominal0: symbol;
|
|
240
282
|
}
|
|
241
|
-
/** assembly/
|
|
242
|
-
declare class
|
|
243
|
-
private
|
|
283
|
+
/** assembly/api-types/VmInput */
|
|
284
|
+
declare class __Internref49 extends Number {
|
|
285
|
+
private __nominal49: symbol;
|
|
244
286
|
private __nominal0: symbol;
|
|
245
287
|
}
|
|
246
|
-
/** assembly/
|
|
247
|
-
declare
|
|
288
|
+
/** assembly/interpreter/Interpreter */
|
|
289
|
+
declare class __Internref25 extends Number {
|
|
290
|
+
private __nominal25: symbol;
|
|
291
|
+
private __nominal0: symbol;
|
|
292
|
+
}
|
|
293
|
+
/** assembly/api-types/VmOutput */
|
|
294
|
+
declare interface __Record50<TOmittable> {
|
|
295
|
+
/** @type `i32` */
|
|
296
|
+
status: number | TOmittable;
|
|
248
297
|
/** @type `u32` */
|
|
249
|
-
|
|
298
|
+
exitCode: number | TOmittable;
|
|
250
299
|
/** @type `u32` */
|
|
251
|
-
|
|
252
|
-
/** @type `
|
|
253
|
-
|
|
300
|
+
pc: number | TOmittable;
|
|
301
|
+
/** @type `i64` */
|
|
302
|
+
gas: bigint | TOmittable;
|
|
303
|
+
/** @type `~lib/array/Array<u8>` */
|
|
304
|
+
result: Array<number>;
|
|
305
|
+
/** @type `~lib/array/Array<u64>` */
|
|
306
|
+
registers: Array<bigint>;
|
|
307
|
+
/** @type `~lib/array/Array<assembly/api-types/InitialChunk>` */
|
|
308
|
+
memory: Array<__Record46<never>>;
|
|
254
309
|
}
|
|
255
310
|
/** assembly/gas-costs/BlockGasCost */
|
|
256
|
-
declare interface
|
|
311
|
+
declare interface __Record55<TOmittable> {
|
|
257
312
|
/** @type `u32` */
|
|
258
313
|
pc: number | TOmittable;
|
|
259
314
|
/** @type `u64` */
|
|
260
315
|
gas: bigint | TOmittable;
|
|
261
316
|
}
|
|
262
317
|
/** assembly/spi/StandardProgram */
|
|
263
|
-
declare class
|
|
264
|
-
private
|
|
318
|
+
declare class __Internref40 extends Number {
|
|
319
|
+
private __nominal40: symbol;
|
|
265
320
|
private __nominal0: symbol;
|
|
266
321
|
}
|
|
267
|
-
/** assembly/api-types/
|
|
268
|
-
declare interface
|
|
322
|
+
/** assembly/api-types/VmPause */
|
|
323
|
+
declare interface __Record59<TOmittable> {
|
|
269
324
|
/** @type `i32` */
|
|
270
325
|
status: number | TOmittable;
|
|
271
326
|
/** @type `u32` */
|
|
272
327
|
exitCode: number | TOmittable;
|
|
273
328
|
/** @type `u32` */
|
|
274
329
|
pc: number | TOmittable;
|
|
330
|
+
/** @type `u32` */
|
|
331
|
+
nextPc: number | TOmittable;
|
|
275
332
|
/** @type `i64` */
|
|
276
333
|
gas: bigint | TOmittable;
|
|
277
|
-
/** @type `~lib/array/Array<
|
|
278
|
-
|
|
334
|
+
/** @type `~lib/array/Array<u64>` */
|
|
335
|
+
registers: Array<bigint>;
|
|
279
336
|
}
|
|
@@ -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,
|
|
133
|
-
chunks = __lowerArray((pointer, value) => { __setU32(pointer,
|
|
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,22 +169,22 @@ 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 =>
|
|
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
|
|
160
176
|
input = __lowerArray(__setU8, 6, 0, input) || __notnull();
|
|
161
177
|
return __liftString(exports.disassemble(input, kind, withMetadata) >>> 0);
|
|
162
178
|
},
|
|
163
|
-
prepareProgram(kind, hasMetadata, program, initialRegisters, initialPageMap, initialMemory, args) {
|
|
164
|
-
// 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
|
|
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
|
|
165
181
|
program = __retain(__lowerArray(__setU8, 6, 0, program) || __notnull());
|
|
166
|
-
initialRegisters = __retain(__lowerArray(__setU64,
|
|
167
|
-
initialPageMap = __retain(__lowerArray((pointer, value) => { __setU32(pointer,
|
|
168
|
-
initialMemory = __retain(__lowerArray((pointer, value) => { __setU32(pointer,
|
|
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
|
-
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);
|
|
172
188
|
} finally {
|
|
173
189
|
__release(program);
|
|
174
190
|
__release(initialRegisters);
|
|
@@ -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
|
|
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
|
-
|
|
189
|
-
// assembly/api-utils/
|
|
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
|
-
|
|
195
|
-
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
261
|
-
// assembly/api-types/
|
|
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
|
-
|
|
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
|
-
|
|
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
|