@fluffylabs/anan-as 1.2.0 → 1.3.0-5cbd3aa
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/dist/bin/index.js +138 -5
- package/dist/bin/src/fuzz.js +2 -2
- package/dist/bin/src/test-json.js +2 -6
- package/dist/bin/src/trace-parse.js +1 -0
- package/dist/bin/src/trace-replay.js +14 -9
- package/dist/bin/src/tracer.js +16 -13
- package/dist/bin/src/utils.js +2 -2
- package/dist/build/compiler-inline.js +1 -1
- package/dist/build/compiler.d.ts +17 -13
- package/dist/build/compiler.js +13 -21
- 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 +50 -112
- package/dist/build/debug-raw.js +78 -139
- package/dist/build/debug-raw.wasm +0 -0
- package/dist/build/debug.d.ts +50 -112
- package/dist/build/debug.js +81 -147
- package/dist/build/debug.wasm +0 -0
- package/dist/build/js/assembly/api-debugger.d.ts +55 -0
- package/dist/build/js/assembly/api-debugger.js +245 -0
- package/dist/build/js/assembly/api-internal.d.ts +13 -0
- package/dist/build/js/assembly/api-internal.js +191 -0
- package/dist/build/js/assembly/api-types.d.ts +45 -0
- package/dist/build/js/assembly/api-types.js +52 -0
- package/dist/build/js/assembly/api-utils.d.ts +79 -0
- package/dist/build/js/assembly/api-utils.js +221 -0
- package/dist/build/js/assembly/arguments.d.ts +44 -0
- package/dist/build/js/assembly/arguments.js +164 -0
- package/dist/build/js/assembly/codec.d.ts +24 -0
- package/dist/build/js/assembly/codec.js +139 -0
- package/dist/build/js/assembly/gas.d.ts +11 -0
- package/dist/build/js/assembly/gas.js +33 -0
- package/dist/build/js/assembly/index-shared.d.ts +4 -0
- package/dist/build/js/assembly/index-shared.js +4 -0
- package/dist/build/js/assembly/instructions/bit.d.ts +11 -0
- package/dist/build/js/assembly/instructions/bit.js +53 -0
- package/dist/build/js/assembly/instructions/branch.d.ts +17 -0
- package/dist/build/js/assembly/instructions/branch.js +120 -0
- package/dist/build/js/assembly/instructions/jump.d.ts +5 -0
- package/dist/build/js/assembly/instructions/jump.js +21 -0
- package/dist/build/js/assembly/instructions/load.d.ts +17 -0
- package/dist/build/js/assembly/instructions/load.js +134 -0
- package/dist/build/js/assembly/instructions/logic.d.ts +10 -0
- package/dist/build/js/assembly/instructions/logic.js +47 -0
- package/dist/build/js/assembly/instructions/math.d.ts +28 -0
- package/dist/build/js/assembly/instructions/math.js +225 -0
- package/dist/build/js/assembly/instructions/misc.d.ts +6 -0
- package/dist/build/js/assembly/instructions/misc.js +22 -0
- package/dist/build/js/assembly/instructions/mov.d.ts +6 -0
- package/dist/build/js/assembly/instructions/mov.js +35 -0
- package/dist/build/js/assembly/instructions/outcome.d.ts +30 -0
- package/dist/build/js/assembly/instructions/outcome.js +88 -0
- package/dist/build/js/assembly/instructions/rot.d.ts +15 -0
- package/dist/build/js/assembly/instructions/rot.js +66 -0
- package/dist/build/js/assembly/instructions/set.d.ts +7 -0
- package/dist/build/js/assembly/instructions/set.js +36 -0
- package/dist/build/js/assembly/instructions/shift.d.ts +19 -0
- package/dist/build/js/assembly/instructions/shift.js +121 -0
- package/dist/build/js/assembly/instructions/store.d.ts +17 -0
- package/dist/build/js/assembly/instructions/store.js +101 -0
- package/dist/build/js/assembly/instructions/utils.d.ts +25 -0
- package/dist/build/js/assembly/instructions/utils.js +91 -0
- package/dist/build/js/assembly/instructions-exe.d.ts +2 -0
- package/dist/build/js/assembly/instructions-exe.js +245 -0
- package/dist/build/js/assembly/instructions.d.ts +10 -0
- package/dist/build/js/assembly/instructions.js +252 -0
- package/dist/build/js/assembly/interpreter.d.ts +28 -0
- package/dist/build/js/assembly/interpreter.js +221 -0
- package/dist/build/js/assembly/math.d.ts +6 -0
- package/dist/build/js/assembly/math.js +22 -0
- package/dist/build/js/assembly/memory-page.d.ts +36 -0
- package/dist/build/js/assembly/memory-page.js +74 -0
- package/dist/build/js/assembly/memory.d.ts +83 -0
- package/dist/build/js/assembly/memory.js +482 -0
- package/dist/build/js/assembly/portable.d.ts +24 -0
- package/dist/build/js/assembly/portable.js +363 -0
- package/dist/build/js/assembly/program-build.d.ts +2 -0
- package/dist/build/js/assembly/program-build.js +104 -0
- package/dist/build/js/assembly/program.d.ts +85 -0
- package/dist/build/js/assembly/program.js +340 -0
- package/dist/build/js/assembly/registers.d.ts +6 -0
- package/dist/build/js/assembly/registers.js +9 -0
- package/dist/build/js/assembly/spi.d.ts +92 -0
- package/dist/build/js/assembly/spi.js +152 -0
- package/dist/build/js/portable/bootstrap.d.ts +1 -0
- package/dist/build/js/portable/bootstrap.js +6 -0
- package/dist/build/js/portable/index.d.ts +4 -0
- package/dist/build/js/portable/index.js +6 -0
- package/dist/build/js/portable-bundle.js +4497 -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 +50 -112
- package/dist/build/release-mini.js +81 -147
- package/dist/build/release-mini.wasm +0 -0
- package/dist/build/release-stub-inline.js +1 -1
- package/dist/build/release-stub.d.ts +50 -112
- package/dist/build/release-stub.js +81 -147
- package/dist/build/release-stub.wasm +0 -0
- package/dist/build/release.d.ts +50 -112
- package/dist/build/release.js +81 -147
- 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-gas-cost.js +2 -3
- package/dist/test/test-trace-format.js +166 -0
- package/dist/test/test-w3f-common.js +125 -0
- package/dist/test/test-w3f-portable.js +5 -0
- package/dist/test/test-w3f.js +3 -120
- package/package.json +22 -11
package/dist/build/debug.js
CHANGED
|
@@ -22,43 +22,56 @@ 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
|
-
|
|
26
|
-
// assembly/api-
|
|
27
|
-
|
|
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, 15, 0, bytecode) || __notnull();
|
|
33
|
+
return __liftTypedArray(Uint8Array, exports.wrapAsProgram(bytecode) >>> 0);
|
|
34
|
+
},
|
|
35
|
+
resetJAM(program, pc, initialGas, args, hasMetadata, useBlockGas) {
|
|
36
|
+
// assembly/api-debugger/resetJAM(~lib/array/Array<u8>, u32, u64, ~lib/array/Array<u8>, bool?, bool?) => void
|
|
37
|
+
program = __retain(__lowerArray(__setU8, 32, 0, program) || __notnull());
|
|
28
38
|
initialGas = initialGas || 0n;
|
|
29
|
-
args = __lowerArray(__setU8,
|
|
39
|
+
args = __lowerArray(__setU8, 32, 0, args) || __notnull();
|
|
30
40
|
hasMetadata = hasMetadata ? 1 : 0;
|
|
41
|
+
useBlockGas = useBlockGas ? 1 : 0;
|
|
31
42
|
try {
|
|
32
43
|
exports.__setArgumentsLength(arguments.length);
|
|
33
|
-
exports.resetJAM(program, pc, initialGas, args, hasMetadata);
|
|
44
|
+
exports.resetJAM(program, pc, initialGas, args, hasMetadata, useBlockGas);
|
|
34
45
|
} finally {
|
|
35
46
|
__release(program);
|
|
36
47
|
}
|
|
37
48
|
},
|
|
38
|
-
resetGeneric(program, flatRegisters, initialGas, hasMetadata) {
|
|
39
|
-
// assembly/api-debugger/resetGeneric(~lib/array/Array<u8>, ~lib/array/Array<u8>,
|
|
40
|
-
program = __retain(__lowerArray(__setU8,
|
|
41
|
-
flatRegisters = __lowerArray(__setU8,
|
|
49
|
+
resetGeneric(program, flatRegisters, initialGas, hasMetadata, useBlockGas) {
|
|
50
|
+
// assembly/api-debugger/resetGeneric(~lib/array/Array<u8>, ~lib/array/Array<u8>, u64, bool?, bool?) => void
|
|
51
|
+
program = __retain(__lowerArray(__setU8, 32, 0, program) || __notnull());
|
|
52
|
+
flatRegisters = __lowerArray(__setU8, 32, 0, flatRegisters) || __notnull();
|
|
42
53
|
initialGas = initialGas || 0n;
|
|
43
54
|
hasMetadata = hasMetadata ? 1 : 0;
|
|
55
|
+
useBlockGas = useBlockGas ? 1 : 0;
|
|
44
56
|
try {
|
|
45
57
|
exports.__setArgumentsLength(arguments.length);
|
|
46
|
-
exports.resetGeneric(program, flatRegisters, initialGas, hasMetadata);
|
|
58
|
+
exports.resetGeneric(program, flatRegisters, initialGas, hasMetadata, useBlockGas);
|
|
47
59
|
} finally {
|
|
48
60
|
__release(program);
|
|
49
61
|
}
|
|
50
62
|
},
|
|
51
|
-
resetGenericWithMemory(program, flatRegisters, pageMap, chunks, initialGas, hasMetadata) {
|
|
52
|
-
// assembly/api-debugger/resetGenericWithMemory(~lib/array/Array<u8>, ~lib/array/Array<u8>, ~lib/typedarray/Uint8Array, ~lib/typedarray/Uint8Array,
|
|
53
|
-
program = __retain(__lowerArray(__setU8,
|
|
54
|
-
flatRegisters = __retain(__lowerArray(__setU8,
|
|
55
|
-
pageMap = __retain(__lowerTypedArray(Uint8Array,
|
|
56
|
-
chunks = __lowerTypedArray(Uint8Array,
|
|
63
|
+
resetGenericWithMemory(program, flatRegisters, pageMap, chunks, initialGas, hasMetadata, useBlockGas) {
|
|
64
|
+
// assembly/api-debugger/resetGenericWithMemory(~lib/array/Array<u8>, ~lib/array/Array<u8>, ~lib/typedarray/Uint8Array, ~lib/typedarray/Uint8Array, u64, bool?, bool?) => void
|
|
65
|
+
program = __retain(__lowerArray(__setU8, 32, 0, program) || __notnull());
|
|
66
|
+
flatRegisters = __retain(__lowerArray(__setU8, 32, 0, flatRegisters) || __notnull());
|
|
67
|
+
pageMap = __retain(__lowerTypedArray(Uint8Array, 15, 0, pageMap) || __notnull());
|
|
68
|
+
chunks = __lowerTypedArray(Uint8Array, 15, 0, chunks) || __notnull();
|
|
57
69
|
initialGas = initialGas || 0n;
|
|
58
70
|
hasMetadata = hasMetadata ? 1 : 0;
|
|
71
|
+
useBlockGas = useBlockGas ? 1 : 0;
|
|
59
72
|
try {
|
|
60
73
|
exports.__setArgumentsLength(arguments.length);
|
|
61
|
-
exports.resetGenericWithMemory(program, flatRegisters, pageMap, chunks, initialGas, hasMetadata);
|
|
74
|
+
exports.resetGenericWithMemory(program, flatRegisters, pageMap, chunks, initialGas, hasMetadata, useBlockGas);
|
|
62
75
|
} finally {
|
|
63
76
|
__release(program);
|
|
64
77
|
__release(flatRegisters);
|
|
@@ -82,7 +95,7 @@ async function instantiate(module, imports = {}) {
|
|
|
82
95
|
return exports.getExitArg() >>> 0;
|
|
83
96
|
},
|
|
84
97
|
setGasLeft(gas) {
|
|
85
|
-
// assembly/api-debugger/setGasLeft(
|
|
98
|
+
// assembly/api-debugger/setGasLeft(u64) => void
|
|
86
99
|
gas = gas || 0n;
|
|
87
100
|
exports.setGasLeft(gas);
|
|
88
101
|
},
|
|
@@ -92,7 +105,7 @@ async function instantiate(module, imports = {}) {
|
|
|
92
105
|
},
|
|
93
106
|
setRegisters(flatRegisters) {
|
|
94
107
|
// assembly/api-debugger/setRegisters(~lib/array/Array<u8>) => void
|
|
95
|
-
flatRegisters = __lowerArray(__setU8,
|
|
108
|
+
flatRegisters = __lowerArray(__setU8, 32, 0, flatRegisters) || __notnull();
|
|
96
109
|
exports.setRegisters(flatRegisters);
|
|
97
110
|
},
|
|
98
111
|
getPageDump(index) {
|
|
@@ -109,57 +122,9 @@ async function instantiate(module, imports = {}) {
|
|
|
109
122
|
},
|
|
110
123
|
setMemory(address, data) {
|
|
111
124
|
// assembly/api-debugger/setMemory(u32, ~lib/typedarray/Uint8Array) => bool
|
|
112
|
-
data = __lowerTypedArray(Uint8Array,
|
|
125
|
+
data = __lowerTypedArray(Uint8Array, 15, 0, data) || __notnull();
|
|
113
126
|
return exports.setMemory(address, data) != 0;
|
|
114
127
|
},
|
|
115
|
-
getAssembly(p) {
|
|
116
|
-
// assembly/api-internal/getAssembly(assembly/program/Program) => ~lib/string/String
|
|
117
|
-
p = __lowerInternref(p) || __notnull();
|
|
118
|
-
return __liftString(exports.getAssembly(p) >>> 0);
|
|
119
|
-
},
|
|
120
|
-
buildMemory(builder, pages, chunks) {
|
|
121
|
-
// assembly/api-internal/buildMemory(assembly/memory/MemoryBuilder, ~lib/array/Array<assembly/api-types/InitialPage>, ~lib/array/Array<assembly/api-types/InitialChunk>) => assembly/memory/Memory
|
|
122
|
-
builder = __retain(__lowerInternref(builder) || __notnull());
|
|
123
|
-
pages = __retain(__lowerArray((pointer, value) => { __setU32(pointer, __lowerRecord44(value) || __notnull()); }, 45, 2, pages) || __notnull());
|
|
124
|
-
chunks = __lowerArray((pointer, value) => { __setU32(pointer, __lowerRecord46(value) || __notnull()); }, 47, 2, chunks) || __notnull();
|
|
125
|
-
try {
|
|
126
|
-
return __liftInternref(exports.buildMemory(builder, pages, chunks) >>> 0);
|
|
127
|
-
} finally {
|
|
128
|
-
__release(builder);
|
|
129
|
-
__release(pages);
|
|
130
|
-
}
|
|
131
|
-
},
|
|
132
|
-
vmInit(input, useSbrkGas) {
|
|
133
|
-
// assembly/api-internal/vmInit(assembly/api-types/VmInput, bool?) => assembly/interpreter/Interpreter
|
|
134
|
-
input = __lowerInternref(input) || __notnull();
|
|
135
|
-
useSbrkGas = useSbrkGas ? 1 : 0;
|
|
136
|
-
exports.__setArgumentsLength(arguments.length);
|
|
137
|
-
return __liftInternref(exports.vmInit(input, useSbrkGas) >>> 0);
|
|
138
|
-
},
|
|
139
|
-
vmRunOnce(input, options) {
|
|
140
|
-
// assembly/api-internal/vmRunOnce(assembly/api-types/VmInput, assembly/api-types/VmRunOptions) => assembly/api-types/VmOutput
|
|
141
|
-
input = __retain(__lowerInternref(input) || __notnull());
|
|
142
|
-
options = __lowerRecord50(options) || __notnull();
|
|
143
|
-
try {
|
|
144
|
-
return __liftRecord51(exports.vmRunOnce(input, options) >>> 0);
|
|
145
|
-
} finally {
|
|
146
|
-
__release(input);
|
|
147
|
-
}
|
|
148
|
-
},
|
|
149
|
-
vmExecute(int, logs) {
|
|
150
|
-
// assembly/api-internal/vmExecute(assembly/interpreter/Interpreter, bool?) => void
|
|
151
|
-
int = __lowerInternref(int) || __notnull();
|
|
152
|
-
logs = logs ? 1 : 0;
|
|
153
|
-
exports.__setArgumentsLength(arguments.length);
|
|
154
|
-
exports.vmExecute(int, logs);
|
|
155
|
-
},
|
|
156
|
-
vmDestroy(int, dumpMemory) {
|
|
157
|
-
// assembly/api-internal/vmDestroy(assembly/interpreter/Interpreter, bool?) => assembly/api-types/VmOutput
|
|
158
|
-
int = __lowerInternref(int) || __notnull();
|
|
159
|
-
dumpMemory = dumpMemory ? 1 : 0;
|
|
160
|
-
exports.__setArgumentsLength(arguments.length);
|
|
161
|
-
return __liftRecord51(exports.vmDestroy(int, dumpMemory) >>> 0);
|
|
162
|
-
},
|
|
163
128
|
InputKind: (values => (
|
|
164
129
|
// assembly/api-utils/InputKind
|
|
165
130
|
values[values.Generic = exports["InputKind.Generic"].valueOf()] = "Generic",
|
|
@@ -172,25 +137,26 @@ async function instantiate(module, imports = {}) {
|
|
|
172
137
|
values[values.No = exports["HasMetadata.No"].valueOf()] = "No",
|
|
173
138
|
values
|
|
174
139
|
))({}),
|
|
175
|
-
|
|
176
|
-
// assembly/api-utils/
|
|
177
|
-
input = __lowerArray(__setU8,
|
|
178
|
-
return __liftArray(pointer =>
|
|
140
|
+
getBlockGasCosts(input, kind, withMetadata) {
|
|
141
|
+
// assembly/api-utils/getBlockGasCosts(~lib/array/Array<u8>, i32, i32) => ~lib/array/Array<assembly/api-utils/BlockGasCost>
|
|
142
|
+
input = __lowerArray(__setU8, 32, 0, input) || __notnull();
|
|
143
|
+
return __liftArray(pointer => __liftRecord58(__getU32(pointer)), 2, exports.getBlockGasCosts(input, kind, withMetadata) >>> 0);
|
|
179
144
|
},
|
|
180
145
|
disassemble(input, kind, withMetadata) {
|
|
181
146
|
// assembly/api-utils/disassemble(~lib/array/Array<u8>, i32, i32) => ~lib/string/String
|
|
182
|
-
input = __lowerArray(__setU8,
|
|
147
|
+
input = __lowerArray(__setU8, 32, 0, input) || __notnull();
|
|
183
148
|
return __liftString(exports.disassemble(input, kind, withMetadata) >>> 0);
|
|
184
149
|
},
|
|
185
|
-
prepareProgram(kind, hasMetadata, program, initialRegisters, initialPageMap, initialMemory, args, preallocateMemoryPages) {
|
|
186
|
-
// 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
|
|
187
|
-
program = __retain(__lowerArray(__setU8,
|
|
188
|
-
initialRegisters = __retain(__lowerArray(__setU64,
|
|
189
|
-
initialPageMap = __retain(__lowerArray((pointer, value) => { __setU32(pointer,
|
|
190
|
-
initialMemory = __retain(__lowerArray((pointer, value) => { __setU32(pointer,
|
|
191
|
-
args = __lowerArray(__setU8,
|
|
150
|
+
prepareProgram(kind, hasMetadata, program, initialRegisters, initialPageMap, initialMemory, args, preallocateMemoryPages, useBlockGas) {
|
|
151
|
+
// 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, bool) => assembly/spi/StandardProgram
|
|
152
|
+
program = __retain(__lowerArray(__setU8, 32, 0, program) || __notnull());
|
|
153
|
+
initialRegisters = __retain(__lowerArray(__setU64, 60, 3, initialRegisters) || __notnull());
|
|
154
|
+
initialPageMap = __retain(__lowerArray((pointer, value) => { __setU32(pointer, __lowerRecord54(value) || __notnull()); }, 55, 2, initialPageMap) || __notnull());
|
|
155
|
+
initialMemory = __retain(__lowerArray((pointer, value) => { __setU32(pointer, __lowerRecord56(value) || __notnull()); }, 57, 2, initialMemory) || __notnull());
|
|
156
|
+
args = __lowerArray(__setU8, 32, 0, args) || __notnull();
|
|
157
|
+
useBlockGas = useBlockGas ? 1 : 0;
|
|
192
158
|
try {
|
|
193
|
-
return __liftInternref(exports.prepareProgram(kind, hasMetadata, program, initialRegisters, initialPageMap, initialMemory, args, preallocateMemoryPages) >>> 0);
|
|
159
|
+
return __liftInternref(exports.prepareProgram(kind, hasMetadata, program, initialRegisters, initialPageMap, initialMemory, args, preallocateMemoryPages, useBlockGas) >>> 0);
|
|
194
160
|
} finally {
|
|
195
161
|
__release(program);
|
|
196
162
|
__release(initialRegisters);
|
|
@@ -198,30 +164,27 @@ async function instantiate(module, imports = {}) {
|
|
|
198
164
|
__release(initialMemory);
|
|
199
165
|
}
|
|
200
166
|
},
|
|
201
|
-
runProgram(program, initialGas, programCounter, logs,
|
|
202
|
-
// assembly/api-utils/runProgram(assembly/spi/StandardProgram, i64?, u32?, bool?, bool
|
|
167
|
+
runProgram(program, initialGas, programCounter, logs, dumpMemory) {
|
|
168
|
+
// assembly/api-utils/runProgram(assembly/spi/StandardProgram, i64?, u32?, bool?, bool?) => assembly/api-types/VmOutput
|
|
203
169
|
program = __lowerInternref(program) || __notnull();
|
|
204
170
|
initialGas = initialGas || 0n;
|
|
205
171
|
logs = logs ? 1 : 0;
|
|
206
|
-
useSbrkGas = useSbrkGas ? 1 : 0;
|
|
207
172
|
dumpMemory = dumpMemory ? 1 : 0;
|
|
208
173
|
exports.__setArgumentsLength(arguments.length);
|
|
209
|
-
return
|
|
174
|
+
return __liftRecord62(exports.runProgram(program, initialGas, programCounter, logs, dumpMemory) >>> 0);
|
|
210
175
|
},
|
|
211
|
-
pvmStart(program
|
|
212
|
-
// assembly/api-utils/pvmStart(assembly/spi/StandardProgram
|
|
176
|
+
pvmStart(program) {
|
|
177
|
+
// assembly/api-utils/pvmStart(assembly/spi/StandardProgram) => u32
|
|
213
178
|
program = __lowerInternref(program) || __notnull();
|
|
214
|
-
|
|
215
|
-
exports.__setArgumentsLength(arguments.length);
|
|
216
|
-
return exports.pvmStart(program, useSbrkGas) >>> 0;
|
|
179
|
+
return exports.pvmStart(program) >>> 0;
|
|
217
180
|
},
|
|
218
181
|
pvmDestroy(pvmId) {
|
|
219
182
|
// assembly/api-utils/pvmDestroy(u32) => assembly/api-types/VmOutput | null
|
|
220
|
-
return
|
|
183
|
+
return __liftRecord62(exports.pvmDestroy(pvmId) >>> 0);
|
|
221
184
|
},
|
|
222
185
|
pvmSetRegisters(pvmId, registers) {
|
|
223
186
|
// assembly/api-utils/pvmSetRegisters(u32, ~lib/array/Array<u64>) => void
|
|
224
|
-
registers = __lowerArray(__setU64,
|
|
187
|
+
registers = __lowerArray(__setU64, 60, 3, registers) || __notnull();
|
|
225
188
|
exports.pvmSetRegisters(pvmId, registers);
|
|
226
189
|
},
|
|
227
190
|
pvmReadMemory(pvmId, address, length) {
|
|
@@ -234,55 +197,48 @@ async function instantiate(module, imports = {}) {
|
|
|
234
197
|
},
|
|
235
198
|
pvmWriteMemory(pvmId, address, data) {
|
|
236
199
|
// assembly/api-utils/pvmWriteMemory(u32, u32, ~lib/typedarray/Uint8Array) => bool
|
|
237
|
-
data = __lowerTypedArray(Uint8Array,
|
|
200
|
+
data = __lowerTypedArray(Uint8Array, 15, 0, data) || __notnull();
|
|
238
201
|
return exports.pvmWriteMemory(pvmId, address, data) != 0;
|
|
239
202
|
},
|
|
240
203
|
pvmResume(pvmId, gas, pc, logs) {
|
|
241
|
-
// assembly/api-utils/pvmResume(u32,
|
|
204
|
+
// assembly/api-utils/pvmResume(u32, u64, u32, bool?) => assembly/api-types/VmPause | null
|
|
242
205
|
gas = gas || 0n;
|
|
243
206
|
logs = logs ? 1 : 0;
|
|
244
207
|
exports.__setArgumentsLength(arguments.length);
|
|
245
|
-
return
|
|
246
|
-
},
|
|
247
|
-
wrapAsProgram(bytecode) {
|
|
248
|
-
// assembly/program-build/wrapAsProgram(~lib/typedarray/Uint8Array) => ~lib/typedarray/Uint8Array
|
|
249
|
-
bytecode = __lowerTypedArray(Uint8Array, 10, 0, bytecode) || __notnull();
|
|
250
|
-
return __liftTypedArray(Uint8Array, exports.wrapAsProgram(bytecode) >>> 0);
|
|
208
|
+
return __liftRecord68(exports.pvmResume(pvmId, gas, pc, logs) >>> 0);
|
|
251
209
|
},
|
|
252
210
|
}, exports);
|
|
253
|
-
function
|
|
211
|
+
function __liftRecord58(pointer) {
|
|
212
|
+
// assembly/api-utils/BlockGasCost
|
|
213
|
+
// Hint: Opt-out from lifting as a record by providing an empty constructor
|
|
214
|
+
if (!pointer) return null;
|
|
215
|
+
return {
|
|
216
|
+
pc: __getU32(pointer + 0),
|
|
217
|
+
gas: __getU64(pointer + 8),
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
function __lowerRecord54(value) {
|
|
254
221
|
// assembly/api-types/InitialPage
|
|
255
222
|
// Hint: Opt-out from lowering as a record by providing an empty constructor
|
|
256
223
|
if (value == null) return 0;
|
|
257
|
-
const pointer = exports.__pin(exports.__new(12,
|
|
224
|
+
const pointer = exports.__pin(exports.__new(12, 54));
|
|
258
225
|
__setU32(pointer + 0, value.address);
|
|
259
226
|
__setU32(pointer + 4, value.length);
|
|
260
227
|
__setU32(pointer + 8, value.access);
|
|
261
228
|
exports.__unpin(pointer);
|
|
262
229
|
return pointer;
|
|
263
230
|
}
|
|
264
|
-
function
|
|
231
|
+
function __lowerRecord56(value) {
|
|
265
232
|
// assembly/api-types/InitialChunk
|
|
266
233
|
// Hint: Opt-out from lowering as a record by providing an empty constructor
|
|
267
234
|
if (value == null) return 0;
|
|
268
|
-
const pointer = exports.__pin(exports.__new(8,
|
|
235
|
+
const pointer = exports.__pin(exports.__new(8, 56));
|
|
269
236
|
__setU32(pointer + 0, value.address);
|
|
270
|
-
__setU32(pointer + 4, __lowerArray(__setU8,
|
|
271
|
-
exports.__unpin(pointer);
|
|
272
|
-
return pointer;
|
|
273
|
-
}
|
|
274
|
-
function __lowerRecord50(value) {
|
|
275
|
-
// assembly/api-types/VmRunOptions
|
|
276
|
-
// Hint: Opt-out from lowering as a record by providing an empty constructor
|
|
277
|
-
if (value == null) return 0;
|
|
278
|
-
const pointer = exports.__pin(exports.__new(3, 50));
|
|
279
|
-
__setU8(pointer + 0, value.useSbrkGas ? 1 : 0);
|
|
280
|
-
__setU8(pointer + 1, value.logs ? 1 : 0);
|
|
281
|
-
__setU8(pointer + 2, value.dumpMemory ? 1 : 0);
|
|
237
|
+
__setU32(pointer + 4, __lowerArray(__setU8, 32, 0, value.data) || __notnull());
|
|
282
238
|
exports.__unpin(pointer);
|
|
283
239
|
return pointer;
|
|
284
240
|
}
|
|
285
|
-
function
|
|
241
|
+
function __liftRecord56(pointer) {
|
|
286
242
|
// assembly/api-types/InitialChunk
|
|
287
243
|
// Hint: Opt-out from lifting as a record by providing an empty constructor
|
|
288
244
|
if (!pointer) return null;
|
|
@@ -291,7 +247,7 @@ async function instantiate(module, imports = {}) {
|
|
|
291
247
|
data: __liftArray(__getU8, 0, __getU32(pointer + 4)),
|
|
292
248
|
};
|
|
293
249
|
}
|
|
294
|
-
function
|
|
250
|
+
function __liftRecord62(pointer) {
|
|
295
251
|
// assembly/api-types/VmOutput
|
|
296
252
|
// Hint: Opt-out from lifting as a record by providing an empty constructor
|
|
297
253
|
if (!pointer) return null;
|
|
@@ -299,22 +255,13 @@ async function instantiate(module, imports = {}) {
|
|
|
299
255
|
status: __getI32(pointer + 0),
|
|
300
256
|
exitCode: __getU32(pointer + 4),
|
|
301
257
|
pc: __getU32(pointer + 8),
|
|
302
|
-
gas:
|
|
258
|
+
gas: __getU64(pointer + 16),
|
|
303
259
|
result: __liftArray(__getU8, 0, __getU32(pointer + 24)),
|
|
304
260
|
registers: __liftArray(pointer => BigInt.asUintN(64, __getU64(pointer)), 3, __getU32(pointer + 28)),
|
|
305
|
-
memory: __liftArray(pointer =>
|
|
306
|
-
};
|
|
307
|
-
}
|
|
308
|
-
function __liftRecord56(pointer) {
|
|
309
|
-
// assembly/gas-costs/BlockGasCost
|
|
310
|
-
// Hint: Opt-out from lifting as a record by providing an empty constructor
|
|
311
|
-
if (!pointer) return null;
|
|
312
|
-
return {
|
|
313
|
-
pc: __getU32(pointer + 0),
|
|
314
|
-
gas: __getU64(pointer + 8),
|
|
261
|
+
memory: __liftArray(pointer => __liftRecord56(__getU32(pointer)), 2, __getU32(pointer + 32)),
|
|
315
262
|
};
|
|
316
263
|
}
|
|
317
|
-
function
|
|
264
|
+
function __liftRecord68(pointer) {
|
|
318
265
|
// assembly/api-types/VmPause
|
|
319
266
|
// Hint: Opt-out from lifting as a record by providing an empty constructor
|
|
320
267
|
if (!pointer) return null;
|
|
@@ -323,7 +270,7 @@ async function instantiate(module, imports = {}) {
|
|
|
323
270
|
exitCode: __getU32(pointer + 4),
|
|
324
271
|
pc: __getU32(pointer + 8),
|
|
325
272
|
nextPc: __getU32(pointer + 12),
|
|
326
|
-
gas:
|
|
273
|
+
gas: __getU64(pointer + 16),
|
|
327
274
|
registers: __liftArray(pointer => BigInt.asUintN(64, __getU64(pointer)), 3, __getU32(pointer + 24)),
|
|
328
275
|
};
|
|
329
276
|
}
|
|
@@ -465,14 +412,6 @@ async function instantiate(module, imports = {}) {
|
|
|
465
412
|
return __dataview.getUint32(pointer, true);
|
|
466
413
|
}
|
|
467
414
|
}
|
|
468
|
-
function __getI64(pointer) {
|
|
469
|
-
try {
|
|
470
|
-
return __dataview.getBigInt64(pointer, true);
|
|
471
|
-
} catch {
|
|
472
|
-
__dataview = new DataView(memory.buffer);
|
|
473
|
-
return __dataview.getBigInt64(pointer, true);
|
|
474
|
-
}
|
|
475
|
-
}
|
|
476
415
|
function __getU64(pointer) {
|
|
477
416
|
try {
|
|
478
417
|
return __dataview.getBigUint64(pointer, true);
|
|
@@ -485,6 +424,8 @@ async function instantiate(module, imports = {}) {
|
|
|
485
424
|
}
|
|
486
425
|
export const {
|
|
487
426
|
memory,
|
|
427
|
+
getAssembly,
|
|
428
|
+
wrapAsProgram,
|
|
488
429
|
resetJAM,
|
|
489
430
|
resetGeneric,
|
|
490
431
|
resetGenericWithMemory,
|
|
@@ -502,15 +443,9 @@ export const {
|
|
|
502
443
|
getPagePointer,
|
|
503
444
|
getMemory,
|
|
504
445
|
setMemory,
|
|
505
|
-
getAssembly,
|
|
506
|
-
buildMemory,
|
|
507
|
-
vmInit,
|
|
508
|
-
vmRunOnce,
|
|
509
|
-
vmExecute,
|
|
510
|
-
vmDestroy,
|
|
511
446
|
InputKind,
|
|
512
447
|
HasMetadata,
|
|
513
|
-
|
|
448
|
+
getBlockGasCosts,
|
|
514
449
|
disassemble,
|
|
515
450
|
prepareProgram,
|
|
516
451
|
runProgram,
|
|
@@ -521,7 +456,6 @@ export const {
|
|
|
521
456
|
pvmGetPagePointer,
|
|
522
457
|
pvmWriteMemory,
|
|
523
458
|
pvmResume,
|
|
524
|
-
wrapAsProgram,
|
|
525
459
|
} = await (async url => instantiate(
|
|
526
460
|
await (async () => {
|
|
527
461
|
const isNodeOrBun = typeof process != "undefined" && process.versions != null && (process.versions.node != null || process.versions.bun != null);
|
package/dist/build/debug.wasm
CHANGED
|
Binary file
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Gas } from "./gas";
|
|
2
|
+
export declare function resetJAM(program: u8[], pc: u32, initialGas: Gas, args: u8[], hasMetadata?: boolean, useBlockGas?: boolean): void;
|
|
3
|
+
export declare function resetGeneric(program: u8[], flatRegisters: u8[], initialGas: Gas, hasMetadata?: boolean, useBlockGas?: boolean): void;
|
|
4
|
+
export declare function resetGenericWithMemory(program: u8[], flatRegisters: u8[], pageMap: Uint8Array, chunks: Uint8Array, initialGas: Gas, hasMetadata?: boolean, useBlockGas?: boolean): void;
|
|
5
|
+
export declare function nextStep(): boolean;
|
|
6
|
+
export declare function nSteps(steps: u32): boolean;
|
|
7
|
+
export declare function getProgramCounter(): u32;
|
|
8
|
+
export declare function setNextProgramCounter(pc: u32): void;
|
|
9
|
+
export declare function getStatus(): u8;
|
|
10
|
+
export declare function getExitArg(): u32;
|
|
11
|
+
export declare function getGasLeft(): i64;
|
|
12
|
+
export declare function setGasLeft(gas: Gas): void;
|
|
13
|
+
export declare function getRegisters(): Uint8Array;
|
|
14
|
+
export declare function setRegisters(flatRegisters: u8[]): void;
|
|
15
|
+
export declare function getPageDump(index: u32): Uint8Array;
|
|
16
|
+
/**
|
|
17
|
+
* Returns the WASM linear memory pointer (byte offset) for the backing buffer of the page at `page`.
|
|
18
|
+
*
|
|
19
|
+
* Returns `0` if the page does not exist or is not readable (page/access fault).
|
|
20
|
+
*
|
|
21
|
+
* Use this instead of `getMemory` to read memory efficiently from the JS side:
|
|
22
|
+
* ```ts
|
|
23
|
+
* let pagesRead = 0;
|
|
24
|
+
* for (let address = start; address < end; address += PAGE_SIZE) {
|
|
25
|
+
* const page = address >> PAGE_SIZE_SHIFT;
|
|
26
|
+
* const ptr = getPagePointer(page);
|
|
27
|
+
* if (ptr === 0) {
|
|
28
|
+
* throw new Error(`Page fault at ${page << PAGE_SIZE_SHIFT}`);
|
|
29
|
+
* }
|
|
30
|
+
* destination.set(
|
|
31
|
+
* new Uint8Array(wasm.instance.exports.memory.buffer, ptr, Math.min(end - address, PAGE_SIZE)),
|
|
32
|
+
* pagesRead << PAGE_SIZE_SHIFT,
|
|
33
|
+
* );
|
|
34
|
+
* pagesRead += 1;
|
|
35
|
+
* }
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export declare function getPagePointer(page: u32): usize;
|
|
39
|
+
/**
|
|
40
|
+
* Read a chunk of memory at `[address, address + length)`.
|
|
41
|
+
*
|
|
42
|
+
* Returns the requested memory chunk or `null` if reading triggered a page fault.
|
|
43
|
+
*
|
|
44
|
+
* @deprecated Getting memory like that is extremely inefficient (copying mulitple times)
|
|
45
|
+
* and error prone (we may not be able to allocate).
|
|
46
|
+
* Use `getPagePointer` instead to read memory directly from WASM linear memory on the JS side
|
|
47
|
+
* with no additional WASM-side allocations.
|
|
48
|
+
*/
|
|
49
|
+
export declare function getMemory(address: u32, length: u32): Uint8Array | null;
|
|
50
|
+
/**
|
|
51
|
+
* Write given `data` under memory indices `[address, address + data.length)`.
|
|
52
|
+
*
|
|
53
|
+
* Returns `true` if the write was successful and `false` if page fault has been triggered.
|
|
54
|
+
*/
|
|
55
|
+
export declare function setMemory(address: u32, data: Uint8Array): boolean;
|