@typeberry/lib 0.5.10-7338c21 → 0.5.10-9ffd7ac

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 (443) hide show
  1. package/README.md +2 -2
  2. package/bin/lib/examples/pvm-usage.test.js +2 -2
  3. package/package.json +1 -1
  4. package/packages/core/codec/descriptor.js +1 -1
  5. package/packages/core/codec/descriptors.js +7 -4
  6. package/packages/core/codec/index.test.js +1 -1
  7. package/packages/core/codec/skip.d.ts +2 -1
  8. package/packages/core/codec/skip.d.ts.map +1 -1
  9. package/packages/core/codec/skip.js +3 -0
  10. package/packages/core/codec/view.js +2 -2
  11. package/packages/core/collections/multi-map.d.ts +2 -1
  12. package/packages/core/collections/multi-map.d.ts.map +1 -1
  13. package/packages/core/collections/multi-map.js +3 -0
  14. package/packages/core/collections/multi-map.test.js +2 -2
  15. package/packages/core/concurrent/parent.js +4 -1
  16. package/packages/core/crypto/ed25519.d.ts +2 -5
  17. package/packages/core/crypto/ed25519.d.ts.map +1 -1
  18. package/packages/core/crypto/ed25519.js +4 -1
  19. package/packages/core/hash/hash.d.ts +4 -2
  20. package/packages/core/hash/hash.d.ts.map +1 -1
  21. package/packages/core/hash/hash.js +6 -1
  22. package/packages/core/networking/quic-network.d.ts +3 -2
  23. package/packages/core/networking/quic-network.d.ts.map +1 -1
  24. package/packages/core/networking/quic-network.js +3 -0
  25. package/packages/core/networking/quic-peer.d.ts +2 -1
  26. package/packages/core/networking/quic-peer.d.ts.map +1 -1
  27. package/packages/core/networking/quic-peer.js +5 -2
  28. package/packages/core/networking/quic-stream.d.ts +2 -1
  29. package/packages/core/networking/quic-stream.d.ts.map +1 -1
  30. package/packages/core/networking/quic-stream.js +3 -0
  31. package/packages/core/networking/setup.js +2 -2
  32. package/packages/core/pvm-host-calls/bin.js +2 -2
  33. package/packages/core/pvm-host-calls/ecalli-trace-logger.test.js +1 -1
  34. package/packages/core/pvm-host-calls/host-call-memory.d.ts +2 -1
  35. package/packages/core/pvm-host-calls/host-call-memory.d.ts.map +1 -1
  36. package/packages/core/pvm-host-calls/host-call-memory.js +3 -0
  37. package/packages/core/pvm-host-calls/host-call-memory.test.js +1 -1
  38. package/packages/core/pvm-host-calls/host-call-registers.d.ts +5 -1
  39. package/packages/core/pvm-host-calls/host-call-registers.d.ts.map +1 -1
  40. package/packages/core/pvm-host-calls/host-call-registers.js +11 -1
  41. package/packages/core/pvm-host-calls/host-call-registers.test.js +2 -2
  42. package/packages/core/pvm-host-calls/host-calls-executor.d.ts +2 -1
  43. package/packages/core/pvm-host-calls/host-calls-executor.d.ts.map +1 -1
  44. package/packages/core/pvm-host-calls/host-calls-executor.js +5 -2
  45. package/packages/core/pvm-host-calls/host-calls.d.ts +4 -2
  46. package/packages/core/pvm-host-calls/host-calls.d.ts.map +1 -1
  47. package/packages/core/pvm-host-calls/host-calls.js +9 -4
  48. package/packages/core/pvm-host-calls/pvm-instance-manager.js +1 -1
  49. package/packages/core/pvm-interpreter/args-decoder/args-decoder.js +1 -1
  50. package/packages/core/pvm-interpreter/args-decoder/args-decoder.test.js +3 -3
  51. package/packages/core/pvm-interpreter/args-decoder/args-decoding-results.js +11 -11
  52. package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.d.ts +2 -1
  53. package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.d.ts.map +1 -1
  54. package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.js +3 -0
  55. package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.test.js +2 -2
  56. package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.d.ts +2 -1
  57. package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.d.ts.map +1 -1
  58. package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.js +3 -0
  59. package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.test.js +26 -26
  60. package/packages/core/pvm-interpreter/basic-blocks/basic-blocks.test.js +8 -8
  61. package/packages/core/pvm-interpreter/bin.js +1 -1
  62. package/packages/core/pvm-interpreter/debugger-adapter.d.ts +2 -1
  63. package/packages/core/pvm-interpreter/debugger-adapter.d.ts.map +1 -1
  64. package/packages/core/pvm-interpreter/debugger-adapter.js +6 -3
  65. package/packages/core/pvm-interpreter/gas.js +4 -1
  66. package/packages/core/pvm-interpreter/interpreter.d.ts +2 -1
  67. package/packages/core/pvm-interpreter/interpreter.d.ts.map +1 -1
  68. package/packages/core/pvm-interpreter/interpreter.js +19 -16
  69. package/packages/core/pvm-interpreter/memory/memory-builder.js +2 -2
  70. package/packages/core/pvm-interpreter/memory/memory-builder.test.js +7 -7
  71. package/packages/core/pvm-interpreter/memory/memory.d.ts +2 -1
  72. package/packages/core/pvm-interpreter/memory/memory.d.ts.map +1 -1
  73. package/packages/core/pvm-interpreter/memory/memory.js +4 -1
  74. package/packages/core/pvm-interpreter/memory/memory.test.js +31 -31
  75. package/packages/core/pvm-interpreter/memory/pages/readable-page.d.ts +2 -1
  76. package/packages/core/pvm-interpreter/memory/pages/readable-page.d.ts.map +1 -1
  77. package/packages/core/pvm-interpreter/memory/pages/readable-page.js +3 -0
  78. package/packages/core/pvm-interpreter/memory/pages/readable-page.test.js +3 -3
  79. package/packages/core/pvm-interpreter/memory/pages/writeable-page.d.ts +2 -1
  80. package/packages/core/pvm-interpreter/memory/pages/writeable-page.d.ts.map +1 -1
  81. package/packages/core/pvm-interpreter/memory/pages/writeable-page.js +3 -0
  82. package/packages/core/pvm-interpreter/memory/pages/writeable-page.test.js +4 -4
  83. package/packages/core/pvm-interpreter/ops/bit-ops.d.ts +2 -1
  84. package/packages/core/pvm-interpreter/ops/bit-ops.d.ts.map +1 -1
  85. package/packages/core/pvm-interpreter/ops/bit-ops.js +3 -0
  86. package/packages/core/pvm-interpreter/ops/bit-ops.test.js +3 -3
  87. package/packages/core/pvm-interpreter/ops/bit-rotation-ops.d.ts +2 -1
  88. package/packages/core/pvm-interpreter/ops/bit-rotation-ops.d.ts.map +1 -1
  89. package/packages/core/pvm-interpreter/ops/bit-rotation-ops.js +3 -0
  90. package/packages/core/pvm-interpreter/ops/bit-rotation-ops.test.js +5 -5
  91. package/packages/core/pvm-interpreter/ops/boolean-ops.d.ts +2 -1
  92. package/packages/core/pvm-interpreter/ops/boolean-ops.d.ts.map +1 -1
  93. package/packages/core/pvm-interpreter/ops/boolean-ops.js +3 -0
  94. package/packages/core/pvm-interpreter/ops/boolean-ops.test.js +3 -3
  95. package/packages/core/pvm-interpreter/ops/branch-ops.d.ts +2 -1
  96. package/packages/core/pvm-interpreter/ops/branch-ops.d.ts.map +1 -1
  97. package/packages/core/pvm-interpreter/ops/branch-ops.js +3 -0
  98. package/packages/core/pvm-interpreter/ops/branch-ops.test.js +4 -4
  99. package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.d.ts +2 -1
  100. package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.d.ts.map +1 -1
  101. package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.js +3 -0
  102. package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.test.js +5 -5
  103. package/packages/core/pvm-interpreter/ops/host-call-ops.d.ts +2 -1
  104. package/packages/core/pvm-interpreter/ops/host-call-ops.d.ts.map +1 -1
  105. package/packages/core/pvm-interpreter/ops/host-call-ops.js +3 -0
  106. package/packages/core/pvm-interpreter/ops/host-call-ops.test.js +2 -2
  107. package/packages/core/pvm-interpreter/ops/load-ops.d.ts +2 -1
  108. package/packages/core/pvm-interpreter/ops/load-ops.d.ts.map +1 -1
  109. package/packages/core/pvm-interpreter/ops/load-ops.js +3 -0
  110. package/packages/core/pvm-interpreter/ops/load-ops.test.js +10 -10
  111. package/packages/core/pvm-interpreter/ops/math-ops.d.ts +2 -1
  112. package/packages/core/pvm-interpreter/ops/math-ops.d.ts.map +1 -1
  113. package/packages/core/pvm-interpreter/ops/math-ops.js +3 -0
  114. package/packages/core/pvm-interpreter/ops/math-ops.test.js +3 -3
  115. package/packages/core/pvm-interpreter/ops/memory-ops.d.ts +2 -1
  116. package/packages/core/pvm-interpreter/ops/memory-ops.d.ts.map +1 -1
  117. package/packages/core/pvm-interpreter/ops/memory-ops.js +3 -0
  118. package/packages/core/pvm-interpreter/ops/memory-ops.test.js +3 -3
  119. package/packages/core/pvm-interpreter/ops/move-ops.d.ts +2 -1
  120. package/packages/core/pvm-interpreter/ops/move-ops.d.ts.map +1 -1
  121. package/packages/core/pvm-interpreter/ops/move-ops.js +3 -0
  122. package/packages/core/pvm-interpreter/ops/move-ops.test.js +3 -3
  123. package/packages/core/pvm-interpreter/ops/no-args-ops.d.ts +2 -1
  124. package/packages/core/pvm-interpreter/ops/no-args-ops.d.ts.map +1 -1
  125. package/packages/core/pvm-interpreter/ops/no-args-ops.js +3 -0
  126. package/packages/core/pvm-interpreter/ops/no-args-ops.test.js +2 -2
  127. package/packages/core/pvm-interpreter/ops/shift-ops.d.ts +2 -1
  128. package/packages/core/pvm-interpreter/ops/shift-ops.d.ts.map +1 -1
  129. package/packages/core/pvm-interpreter/ops/shift-ops.js +3 -0
  130. package/packages/core/pvm-interpreter/ops/shift-ops.test.js +3 -3
  131. package/packages/core/pvm-interpreter/ops/store-ops.d.ts +2 -1
  132. package/packages/core/pvm-interpreter/ops/store-ops.d.ts.map +1 -1
  133. package/packages/core/pvm-interpreter/ops/store-ops.js +3 -0
  134. package/packages/core/pvm-interpreter/ops/store-ops.test.js +7 -7
  135. package/packages/core/pvm-interpreter/ops-dispatchers/no-args-dispatcher.test.js +1 -1
  136. package/packages/core/pvm-interpreter/ops-dispatchers/one-imm-dispatcher.test.js +4 -4
  137. package/packages/core/pvm-interpreter/ops-dispatchers/one-offset-dispatcher.test.js +2 -2
  138. package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-one-ext-imm-dispatcher.test.js +4 -4
  139. package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-one-imm-dispatcher.test.js +7 -7
  140. package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-one-imm-one-offset-dispatcher.test.js +10 -10
  141. package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-two-imms-dispatcher.test.js +5 -5
  142. package/packages/core/pvm-interpreter/ops-dispatchers/three-regs-dispatcher.test.js +7 -7
  143. package/packages/core/pvm-interpreter/ops-dispatchers/two-imms-dispatcher.test.js +5 -5
  144. package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-dispatcher.test.js +6 -6
  145. package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-one-imm-dispatcher.test.js +11 -11
  146. package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-one-offset-dispatcher.test.js +2 -2
  147. package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-two-imms-dispatcher.test.js +14 -14
  148. package/packages/core/pvm-interpreter/program-decoder/jump-table.d.ts +5 -2
  149. package/packages/core/pvm-interpreter/program-decoder/jump-table.d.ts.map +1 -1
  150. package/packages/core/pvm-interpreter/program-decoder/jump-table.js +9 -4
  151. package/packages/core/pvm-interpreter/program-decoder/jump-table.test.js +6 -6
  152. package/packages/core/pvm-interpreter/program-decoder/mask.d.ts +2 -1
  153. package/packages/core/pvm-interpreter/program-decoder/mask.d.ts.map +1 -1
  154. package/packages/core/pvm-interpreter/program-decoder/mask.js +3 -0
  155. package/packages/core/pvm-interpreter/program-decoder/mask.test.js +10 -10
  156. package/packages/core/pvm-interpreter/program-decoder/program-decoder.d.ts +2 -1
  157. package/packages/core/pvm-interpreter/program-decoder/program-decoder.d.ts.map +1 -1
  158. package/packages/core/pvm-interpreter/program-decoder/program-decoder.js +6 -3
  159. package/packages/core/pvm-interpreter/program-decoder/program-decoder.test.js +5 -5
  160. package/packages/core/pvm-interpreter/program.js +3 -3
  161. package/packages/core/pvm-interpreter/registers.d.ts +5 -2
  162. package/packages/core/pvm-interpreter/registers.d.ts.map +1 -1
  163. package/packages/core/pvm-interpreter/registers.js +10 -6
  164. package/packages/core/pvm-interpreter/registers.test.js +10 -10
  165. package/packages/core/pvm-interpreter/spi-decoder/decode-standard-program.d.ts +6 -3
  166. package/packages/core/pvm-interpreter/spi-decoder/decode-standard-program.d.ts.map +1 -1
  167. package/packages/core/pvm-interpreter/spi-decoder/decode-standard-program.js +11 -2
  168. package/packages/core/pvm-interpreter-ananas/index.d.ts +6 -3
  169. package/packages/core/pvm-interpreter-ananas/index.d.ts.map +1 -1
  170. package/packages/core/pvm-interpreter-ananas/index.js +12 -3
  171. package/packages/core/trie/nodes.d.ts +7 -2
  172. package/packages/core/trie/nodes.d.ts.map +1 -1
  173. package/packages/core/trie/nodes.js +20 -11
  174. package/packages/core/trie/nodesDb.d.ts +3 -1
  175. package/packages/core/trie/nodesDb.d.ts.map +1 -1
  176. package/packages/core/trie/nodesDb.js +6 -0
  177. package/packages/core/trie/trie.js +2 -2
  178. package/packages/extensions/ipc/index.js +5 -2
  179. package/packages/extensions/ipc/jamnp/handler.d.ts +4 -2
  180. package/packages/extensions/ipc/jamnp/handler.d.ts.map +1 -1
  181. package/packages/extensions/ipc/jamnp/handler.js +9 -3
  182. package/packages/extensions/ipc/jamnp/server.js +3 -3
  183. package/packages/extensions/ipc/server.d.ts +2 -1
  184. package/packages/extensions/ipc/server.d.ts.map +1 -1
  185. package/packages/extensions/ipc/server.js +4 -1
  186. package/packages/jam/block/header.js +1 -1
  187. package/packages/jam/config/chain-spec.d.ts +2 -1
  188. package/packages/jam/config/chain-spec.d.ts.map +1 -1
  189. package/packages/jam/config/chain-spec.js +5 -2
  190. package/packages/jam/config/network.d.ts +2 -7
  191. package/packages/jam/config/network.d.ts.map +1 -1
  192. package/packages/jam/config/network.js +3 -0
  193. package/packages/jam/config-node/jip-chain-spec.js +1 -1
  194. package/packages/jam/database/blocks.test.js +1 -1
  195. package/packages/jam/database/states.d.ts +2 -1
  196. package/packages/jam/database/states.d.ts.map +1 -1
  197. package/packages/jam/database/states.js +3 -0
  198. package/packages/jam/database/states.test.js +1 -1
  199. package/packages/jam/database-lmdb/blocks.d.ts +2 -1
  200. package/packages/jam/database-lmdb/blocks.d.ts.map +1 -1
  201. package/packages/jam/database-lmdb/blocks.js +3 -0
  202. package/packages/jam/database-lmdb/root.d.ts +2 -1
  203. package/packages/jam/database-lmdb/root.d.ts.map +1 -1
  204. package/packages/jam/database-lmdb/root.js +3 -0
  205. package/packages/jam/database-lmdb/states.d.ts +2 -1
  206. package/packages/jam/database-lmdb/states.d.ts.map +1 -1
  207. package/packages/jam/database-lmdb/states.js +3 -0
  208. package/packages/jam/database-lmdb/states.test.js +9 -9
  209. package/packages/jam/executor/pvm-executor.js +24 -24
  210. package/packages/jam/fuzz-proto/v1/handler.d.ts +2 -1
  211. package/packages/jam/fuzz-proto/v1/handler.d.ts.map +1 -1
  212. package/packages/jam/fuzz-proto/v1/handler.js +3 -0
  213. package/packages/jam/fuzz-proto/v1/handler.test.js +10 -10
  214. package/packages/jam/in-core/externalities/refine.js +1 -1
  215. package/packages/jam/in-core/externalities/refine.test.js +3 -3
  216. package/packages/jam/in-core/in-core.d.ts +2 -1
  217. package/packages/jam/in-core/in-core.d.ts.map +1 -1
  218. package/packages/jam/in-core/in-core.js +3 -0
  219. package/packages/jam/in-core/in-core.test.js +6 -6
  220. package/packages/jam/in-core/is-authorized.test.js +2 -2
  221. package/packages/jam/in-core/refine.js +1 -1
  222. package/packages/jam/jam-host-calls/accumulate/assign.d.ts +2 -1
  223. package/packages/jam/jam-host-calls/accumulate/assign.d.ts.map +1 -1
  224. package/packages/jam/jam-host-calls/accumulate/assign.js +3 -0
  225. package/packages/jam/jam-host-calls/accumulate/assign.test.js +8 -9
  226. package/packages/jam/jam-host-calls/accumulate/bless.d.ts +2 -1
  227. package/packages/jam/jam-host-calls/accumulate/bless.d.ts.map +1 -1
  228. package/packages/jam/jam-host-calls/accumulate/bless.js +3 -0
  229. package/packages/jam/jam-host-calls/accumulate/bless.test.js +11 -12
  230. package/packages/jam/jam-host-calls/accumulate/checkpoint.d.ts +2 -1
  231. package/packages/jam/jam-host-calls/accumulate/checkpoint.d.ts.map +1 -1
  232. package/packages/jam/jam-host-calls/accumulate/checkpoint.js +4 -1
  233. package/packages/jam/jam-host-calls/accumulate/checkpoint.test.js +2 -3
  234. package/packages/jam/jam-host-calls/accumulate/designate.d.ts +2 -1
  235. package/packages/jam/jam-host-calls/accumulate/designate.d.ts.map +1 -1
  236. package/packages/jam/jam-host-calls/accumulate/designate.js +3 -0
  237. package/packages/jam/jam-host-calls/accumulate/designate.test.js +5 -6
  238. package/packages/jam/jam-host-calls/accumulate/eject.d.ts +2 -1
  239. package/packages/jam/jam-host-calls/accumulate/eject.d.ts.map +1 -1
  240. package/packages/jam/jam-host-calls/accumulate/eject.js +3 -0
  241. package/packages/jam/jam-host-calls/accumulate/eject.test.js +8 -9
  242. package/packages/jam/jam-host-calls/accumulate/forget.d.ts +2 -1
  243. package/packages/jam/jam-host-calls/accumulate/forget.d.ts.map +1 -1
  244. package/packages/jam/jam-host-calls/accumulate/forget.js +3 -0
  245. package/packages/jam/jam-host-calls/accumulate/forget.test.js +5 -6
  246. package/packages/jam/jam-host-calls/accumulate/new.d.ts +2 -1
  247. package/packages/jam/jam-host-calls/accumulate/new.d.ts.map +1 -1
  248. package/packages/jam/jam-host-calls/accumulate/new.js +3 -0
  249. package/packages/jam/jam-host-calls/accumulate/new.test.js +9 -10
  250. package/packages/jam/jam-host-calls/accumulate/provide.d.ts +2 -1
  251. package/packages/jam/jam-host-calls/accumulate/provide.d.ts.map +1 -1
  252. package/packages/jam/jam-host-calls/accumulate/provide.js +3 -0
  253. package/packages/jam/jam-host-calls/accumulate/provide.test.js +8 -9
  254. package/packages/jam/jam-host-calls/accumulate/query.d.ts +2 -1
  255. package/packages/jam/jam-host-calls/accumulate/query.d.ts.map +1 -1
  256. package/packages/jam/jam-host-calls/accumulate/query.js +3 -0
  257. package/packages/jam/jam-host-calls/accumulate/query.test.js +8 -9
  258. package/packages/jam/jam-host-calls/accumulate/solicit.d.ts +2 -1
  259. package/packages/jam/jam-host-calls/accumulate/solicit.d.ts.map +1 -1
  260. package/packages/jam/jam-host-calls/accumulate/solicit.js +3 -0
  261. package/packages/jam/jam-host-calls/accumulate/solicit.test.js +7 -8
  262. package/packages/jam/jam-host-calls/accumulate/transfer.d.ts +2 -1
  263. package/packages/jam/jam-host-calls/accumulate/transfer.d.ts.map +1 -1
  264. package/packages/jam/jam-host-calls/accumulate/transfer.js +3 -0
  265. package/packages/jam/jam-host-calls/accumulate/transfer.test.js +9 -10
  266. package/packages/jam/jam-host-calls/accumulate/upgrade.d.ts +2 -1
  267. package/packages/jam/jam-host-calls/accumulate/upgrade.d.ts.map +1 -1
  268. package/packages/jam/jam-host-calls/accumulate/upgrade.js +3 -0
  269. package/packages/jam/jam-host-calls/accumulate/upgrade.test.js +4 -5
  270. package/packages/jam/jam-host-calls/accumulate/yield.d.ts +2 -1
  271. package/packages/jam/jam-host-calls/accumulate/yield.d.ts.map +1 -1
  272. package/packages/jam/jam-host-calls/accumulate/yield.js +3 -0
  273. package/packages/jam/jam-host-calls/accumulate/yield.test.js +4 -5
  274. package/packages/jam/jam-host-calls/externalities/refine-externalities.test.js +9 -9
  275. package/packages/jam/jam-host-calls/externalities/state-update.d.ts +2 -3
  276. package/packages/jam/jam-host-calls/externalities/state-update.d.ts.map +1 -1
  277. package/packages/jam/jam-host-calls/externalities/state-update.js +5 -2
  278. package/packages/jam/jam-host-calls/externalities/test-accounts.js +2 -2
  279. package/packages/jam/jam-host-calls/general/fetch.d.ts +2 -1
  280. package/packages/jam/jam-host-calls/general/fetch.d.ts.map +1 -1
  281. package/packages/jam/jam-host-calls/general/fetch.js +3 -0
  282. package/packages/jam/jam-host-calls/general/fetch.test.js +27 -28
  283. package/packages/jam/jam-host-calls/general/gas.d.ts +2 -1
  284. package/packages/jam/jam-host-calls/general/gas.d.ts.map +1 -1
  285. package/packages/jam/jam-host-calls/general/gas.js +3 -0
  286. package/packages/jam/jam-host-calls/general/gas.test.js +4 -5
  287. package/packages/jam/jam-host-calls/general/info.d.ts +2 -1
  288. package/packages/jam/jam-host-calls/general/info.d.ts.map +1 -1
  289. package/packages/jam/jam-host-calls/general/info.js +3 -0
  290. package/packages/jam/jam-host-calls/general/info.test.js +6 -7
  291. package/packages/jam/jam-host-calls/general/log.d.ts +2 -1
  292. package/packages/jam/jam-host-calls/general/log.d.ts.map +1 -1
  293. package/packages/jam/jam-host-calls/general/log.js +3 -0
  294. package/packages/jam/jam-host-calls/general/lookup.d.ts +2 -1
  295. package/packages/jam/jam-host-calls/general/lookup.d.ts.map +1 -1
  296. package/packages/jam/jam-host-calls/general/lookup.js +3 -0
  297. package/packages/jam/jam-host-calls/general/lookup.test.js +8 -9
  298. package/packages/jam/jam-host-calls/general/read.d.ts +2 -1
  299. package/packages/jam/jam-host-calls/general/read.d.ts.map +1 -1
  300. package/packages/jam/jam-host-calls/general/read.js +3 -0
  301. package/packages/jam/jam-host-calls/general/read.test.js +11 -12
  302. package/packages/jam/jam-host-calls/general/write.d.ts +2 -1
  303. package/packages/jam/jam-host-calls/general/write.d.ts.map +1 -1
  304. package/packages/jam/jam-host-calls/general/write.js +3 -0
  305. package/packages/jam/jam-host-calls/general/write.test.js +10 -11
  306. package/packages/jam/jam-host-calls/refine/export.d.ts +2 -1
  307. package/packages/jam/jam-host-calls/refine/export.d.ts.map +1 -1
  308. package/packages/jam/jam-host-calls/refine/export.js +3 -0
  309. package/packages/jam/jam-host-calls/refine/export.test.js +6 -7
  310. package/packages/jam/jam-host-calls/refine/expunge.d.ts +2 -1
  311. package/packages/jam/jam-host-calls/refine/expunge.d.ts.map +1 -1
  312. package/packages/jam/jam-host-calls/refine/expunge.js +3 -0
  313. package/packages/jam/jam-host-calls/refine/expunge.test.js +3 -4
  314. package/packages/jam/jam-host-calls/refine/historical-lookup.d.ts +2 -1
  315. package/packages/jam/jam-host-calls/refine/historical-lookup.d.ts.map +1 -1
  316. package/packages/jam/jam-host-calls/refine/historical-lookup.js +3 -0
  317. package/packages/jam/jam-host-calls/refine/historical-lookup.test.js +11 -12
  318. package/packages/jam/jam-host-calls/refine/invoke.d.ts +2 -1
  319. package/packages/jam/jam-host-calls/refine/invoke.d.ts.map +1 -1
  320. package/packages/jam/jam-host-calls/refine/invoke.js +4 -1
  321. package/packages/jam/jam-host-calls/refine/invoke.test.js +10 -11
  322. package/packages/jam/jam-host-calls/refine/machine.d.ts +2 -1
  323. package/packages/jam/jam-host-calls/refine/machine.d.ts.map +1 -1
  324. package/packages/jam/jam-host-calls/refine/machine.js +3 -0
  325. package/packages/jam/jam-host-calls/refine/machine.test.js +6 -7
  326. package/packages/jam/jam-host-calls/refine/pages.d.ts +2 -1
  327. package/packages/jam/jam-host-calls/refine/pages.d.ts.map +1 -1
  328. package/packages/jam/jam-host-calls/refine/pages.js +3 -0
  329. package/packages/jam/jam-host-calls/refine/pages.test.js +3 -4
  330. package/packages/jam/jam-host-calls/refine/peek.d.ts +2 -1
  331. package/packages/jam/jam-host-calls/refine/peek.d.ts.map +1 -1
  332. package/packages/jam/jam-host-calls/refine/peek.js +3 -0
  333. package/packages/jam/jam-host-calls/refine/peek.test.js +3 -4
  334. package/packages/jam/jam-host-calls/refine/poke.d.ts +2 -1
  335. package/packages/jam/jam-host-calls/refine/poke.d.ts.map +1 -1
  336. package/packages/jam/jam-host-calls/refine/poke.js +3 -0
  337. package/packages/jam/jam-host-calls/refine/poke.test.js +3 -4
  338. package/packages/jam/jamnp-s/network.js +1 -1
  339. package/packages/jam/jamnp-s/peers.d.ts +2 -1
  340. package/packages/jam/jamnp-s/peers.d.ts.map +1 -1
  341. package/packages/jam/jamnp-s/peers.js +3 -0
  342. package/packages/jam/jamnp-s/protocol/ce-128-block-request.d.ts +4 -2
  343. package/packages/jam/jamnp-s/protocol/ce-128-block-request.d.ts.map +1 -1
  344. package/packages/jam/jamnp-s/protocol/ce-128-block-request.js +6 -0
  345. package/packages/jam/jamnp-s/protocol/ce-128-block-request.test.js +2 -2
  346. package/packages/jam/jamnp-s/protocol/ce-129-state-request.d.ts +4 -2
  347. package/packages/jam/jamnp-s/protocol/ce-129-state-request.d.ts.map +1 -1
  348. package/packages/jam/jamnp-s/protocol/ce-129-state-request.js +6 -0
  349. package/packages/jam/jamnp-s/protocol/ce-129-state-request.test.js +4 -4
  350. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts +4 -2
  351. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts.map +1 -1
  352. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.js +6 -0
  353. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.test.js +2 -2
  354. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts +4 -1
  355. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts.map +1 -1
  356. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.js +7 -0
  357. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.test.js +2 -2
  358. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.d.ts +5 -2
  359. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.d.ts.map +1 -1
  360. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.js +7 -0
  361. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.test.js +2 -2
  362. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts +4 -2
  363. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts.map +1 -1
  364. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.js +6 -0
  365. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.test.js +2 -2
  366. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts +2 -1
  367. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts.map +1 -1
  368. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.js +3 -0
  369. package/packages/jam/jamnp-s/stream-manager.d.ts +2 -1
  370. package/packages/jam/jamnp-s/stream-manager.d.ts.map +1 -1
  371. package/packages/jam/jamnp-s/stream-manager.js +4 -1
  372. package/packages/jam/jamnp-s/tasks/sync.js +4 -4
  373. package/packages/jam/jamnp-s/tasks/sync.test.js +4 -4
  374. package/packages/jam/jamnp-s/tasks/ticket-distribution.js +2 -2
  375. package/packages/jam/jamnp-s/tasks/ticket-distribution.test.js +1 -1
  376. package/packages/jam/node/common.d.ts.map +1 -1
  377. package/packages/jam/node/common.js +3 -3
  378. package/packages/jam/rpc-client/index.d.ts +4 -2
  379. package/packages/jam/rpc-client/index.d.ts.map +1 -1
  380. package/packages/jam/rpc-client/index.js +7 -1
  381. package/packages/jam/state/in-memory-state-view.d.ts +2 -1
  382. package/packages/jam/state/in-memory-state-view.d.ts.map +1 -1
  383. package/packages/jam/state/in-memory-state-view.js +3 -0
  384. package/packages/jam/state/in-memory-state.d.ts +16 -21
  385. package/packages/jam/state/in-memory-state.d.ts.map +1 -1
  386. package/packages/jam/state/in-memory-state.js +10 -6
  387. package/packages/jam/state/in-memory-state.test.js +2 -2
  388. package/packages/jam/state/service.d.ts +2 -6
  389. package/packages/jam/state/service.d.ts.map +1 -1
  390. package/packages/jam/state/service.js +3 -0
  391. package/packages/jam/state/test.utils.js +3 -3
  392. package/packages/jam/state-json/accounts.js +5 -5
  393. package/packages/jam/state-merkleization/in-memory-state-codec.d.ts +3 -34
  394. package/packages/jam/state-merkleization/in-memory-state-codec.d.ts.map +1 -1
  395. package/packages/jam/state-merkleization/in-memory-state-codec.js +1 -1
  396. package/packages/jam/state-merkleization/serialized-state-view.d.ts +8 -3
  397. package/packages/jam/state-merkleization/serialized-state-view.d.ts.map +1 -1
  398. package/packages/jam/state-merkleization/serialized-state-view.js +6 -3
  399. package/packages/jam/state-merkleization/serialized-state.d.ts +2 -3
  400. package/packages/jam/state-merkleization/serialized-state.d.ts.map +1 -1
  401. package/packages/jam/state-merkleization/serialized-state.js +10 -2
  402. package/packages/jam/state-merkleization/serialized-state.test.js +1 -1
  403. package/packages/jam/transition/accumulate/accumulate.js +10 -3
  404. package/packages/jam/transition/accumulate/accumulate.test.js +1 -1
  405. package/packages/jam/transition/block-verifier.d.ts +2 -1
  406. package/packages/jam/transition/block-verifier.d.ts.map +1 -1
  407. package/packages/jam/transition/block-verifier.js +3 -0
  408. package/packages/jam/transition/block-verifier.test.js +8 -8
  409. package/packages/jam/transition/chain-stf.d.ts +12 -4
  410. package/packages/jam/transition/chain-stf.d.ts.map +1 -1
  411. package/packages/jam/transition/chain-stf.js +7 -3
  412. package/packages/jam/transition/externalities/accumulate-externalities.d.ts +20 -6
  413. package/packages/jam/transition/externalities/accumulate-externalities.d.ts.map +1 -1
  414. package/packages/jam/transition/externalities/accumulate-externalities.js +29 -22
  415. package/packages/jam/transition/externalities/accumulate-externalities.test.js +590 -100
  416. package/packages/jam/transition/externalities/refine-fetch-externalities.d.ts +2 -1
  417. package/packages/jam/transition/externalities/refine-fetch-externalities.d.ts.map +1 -1
  418. package/packages/jam/transition/externalities/refine-fetch-externalities.js +3 -0
  419. package/packages/jam/transition/externalities/refine-fetch-externalities.test.js +1 -1
  420. package/packages/jam/transition/hasher.d.ts +2 -1
  421. package/packages/jam/transition/hasher.d.ts.map +1 -1
  422. package/packages/jam/transition/hasher.js +5 -2
  423. package/packages/jam/transition/hasher.test.js +1 -1
  424. package/packages/jam/transition/preimages.test.js +4 -4
  425. package/packages/jam/transition/reports/test.utils.js +1 -1
  426. package/packages/workers/api-node/config.js +4 -4
  427. package/packages/workers/api-node/port.d.ts +2 -1
  428. package/packages/workers/api-node/port.d.ts.map +1 -1
  429. package/packages/workers/api-node/port.js +4 -1
  430. package/packages/workers/api-node/port.test.js +2 -2
  431. package/packages/workers/api-node/protocol.js +2 -2
  432. package/packages/workers/block-authorship/generator.d.ts +13 -2
  433. package/packages/workers/block-authorship/generator.d.ts.map +1 -1
  434. package/packages/workers/block-authorship/generator.js +13 -9
  435. package/packages/workers/block-authorship/generator.test.js +16 -2
  436. package/packages/workers/block-authorship/main.d.ts.map +1 -1
  437. package/packages/workers/block-authorship/main.js +8 -1
  438. package/packages/workers/importer/finality.test.js +1 -1
  439. package/packages/workers/importer/importer.d.ts +23 -6
  440. package/packages/workers/importer/importer.d.ts.map +1 -1
  441. package/packages/workers/importer/importer.js +34 -19
  442. package/packages/workers/importer/main.d.ts.map +1 -1
  443. package/packages/workers/importer/main.js +13 -5
@@ -26,8 +26,8 @@ import { Result } from "./result.js";
26
26
  const logger = Logger.new(import.meta.filename, "pvm");
27
27
  export class Interpreter {
28
28
  useSbrkGas;
29
- registers = new Registers();
30
- memory = new Memory();
29
+ registers = Registers.empty();
30
+ memory = Memory.new();
31
31
  gas = gasCounter(tryAsGas(0));
32
32
  code = new Uint8Array();
33
33
  mask = Mask.empty();
@@ -51,23 +51,26 @@ export class Interpreter {
51
51
  argsDecodingResults = createResults();
52
52
  basicBlocks;
53
53
  jumpTable = JumpTable.empty();
54
+ static new(options = {}) {
55
+ return new Interpreter(options);
56
+ }
54
57
  constructor({ useSbrkGas = false } = {}) {
55
58
  this.useSbrkGas = useSbrkGas;
56
59
  this.argsDecoder = new ArgsDecoder();
57
60
  this.basicBlocks = new BasicBlocks();
58
- const mathOps = new MathOps(this.registers);
59
- const shiftOps = new ShiftOps(this.registers);
60
- const bitOps = new BitOps(this.registers);
61
- const booleanOps = new BooleanOps(this.registers);
62
- const moveOps = new MoveOps(this.registers);
63
- const branchOps = new BranchOps(this.registers, this.instructionResult, this.basicBlocks);
64
- const loadOps = new LoadOps(this.registers, this.memory, this.instructionResult);
65
- const storeOps = new StoreOps(this.registers, this.memory, this.instructionResult);
66
- const noArgsOps = new NoArgsOps(this.instructionResult);
67
- const dynamicJumpOps = new DynamicJumpOps(this.registers, this.jumpTable, this.instructionResult, this.basicBlocks);
68
- const hostCallOps = new HostCallOps(this.instructionResult);
69
- const memoryOps = new MemoryOps(this.registers, this.memory, this.instructionResult);
70
- const bitRotationOps = new BitRotationOps(this.registers);
61
+ const mathOps = MathOps.new(this.registers);
62
+ const shiftOps = ShiftOps.new(this.registers);
63
+ const bitOps = BitOps.new(this.registers);
64
+ const booleanOps = BooleanOps.new(this.registers);
65
+ const moveOps = MoveOps.new(this.registers);
66
+ const branchOps = BranchOps.new(this.registers, this.instructionResult, this.basicBlocks);
67
+ const loadOps = LoadOps.new(this.registers, this.memory, this.instructionResult);
68
+ const storeOps = StoreOps.new(this.registers, this.memory, this.instructionResult);
69
+ const noArgsOps = NoArgsOps.new(this.instructionResult);
70
+ const dynamicJumpOps = DynamicJumpOps.new(this.registers, this.jumpTable, this.instructionResult, this.basicBlocks);
71
+ const hostCallOps = HostCallOps.new(this.instructionResult);
72
+ const memoryOps = MemoryOps.new(this.registers, this.memory, this.instructionResult);
73
+ const bitRotationOps = BitRotationOps.new(this.registers);
71
74
  this.threeRegsDispatcher = new ThreeRegsDispatcher(mathOps, shiftOps, bitOps, booleanOps, moveOps, bitRotationOps);
72
75
  this.twoRegsOneImmDispatcher = new TwoRegsOneImmDispatcher(mathOps, shiftOps, bitOps, booleanOps, moveOps, storeOps, loadOps, bitRotationOps);
73
76
  this.twoRegsDispatcher = new TwoRegsDispatcher(moveOps, memoryOps, bitOps, bitRotationOps);
@@ -87,7 +90,7 @@ export class Interpreter {
87
90
  this.resetGeneric(p.code, pc, gas, p.registers, p.memory);
88
91
  }
89
92
  resetGeneric(rawProgram, pc, gas, maybeRegisters, maybeMemory) {
90
- const programDecoder = new ProgramDecoder(rawProgram);
93
+ const programDecoder = ProgramDecoder.new(rawProgram);
91
94
  this.code = programDecoder.getCode();
92
95
  this.mask = programDecoder.getMask();
93
96
  this.jumpTable.copyFrom(programDecoder.getJumpTable());
@@ -44,7 +44,7 @@ export class MemoryBuilder {
44
44
  for (let i = 0; i < noOfPages; i++) {
45
45
  const pageNumber = pages[i];
46
46
  const dataChunk = data.subarray(i * PAGE_SIZE, (i + 1) * PAGE_SIZE);
47
- const page = new ReadablePage(pageNumber, dataChunk);
47
+ const page = ReadablePage.new(pageNumber, dataChunk);
48
48
  this.initialMemory.set(pageNumber, page);
49
49
  }
50
50
  return this;
@@ -72,7 +72,7 @@ export class MemoryBuilder {
72
72
  for (let i = 0; i < noOfPages; i++) {
73
73
  const pageNumber = pages[i];
74
74
  const dataChunk = data.subarray(i * PAGE_SIZE, (i + 1) * PAGE_SIZE);
75
- const page = new WriteablePage(pageNumber, dataChunk);
75
+ const page = WriteablePage.new(pageNumber, dataChunk);
76
76
  this.initialMemory.set(pageNumber, page);
77
77
  }
78
78
  return this;
@@ -12,8 +12,8 @@ describe("MemoryBuilder", () => {
12
12
  it("should work correctly (happy path)", () => {
13
13
  const builder = new MemoryBuilder();
14
14
  const pageMap = new Map();
15
- pageMap.set(RESERVED_NUMBER_OF_PAGES, new ReadablePage(tryAsPageNumber(RESERVED_NUMBER_OF_PAGES), new Uint8Array()));
16
- pageMap.set(RESERVED_NUMBER_OF_PAGES + 1, new WriteablePage(tryAsPageNumber(RESERVED_NUMBER_OF_PAGES + 1), new Uint8Array()));
15
+ pageMap.set(RESERVED_NUMBER_OF_PAGES, ReadablePage.new(tryAsPageNumber(RESERVED_NUMBER_OF_PAGES), new Uint8Array()));
16
+ pageMap.set(RESERVED_NUMBER_OF_PAGES + 1, WriteablePage.new(tryAsPageNumber(RESERVED_NUMBER_OF_PAGES + 1), new Uint8Array()));
17
17
  const expectedMemory = {
18
18
  endHeapIndex: (RESERVED_NUMBER_OF_PAGES + 4) * PAGE_SIZE,
19
19
  sbrkIndex: (RESERVED_NUMBER_OF_PAGES + 2) * PAGE_SIZE,
@@ -53,7 +53,7 @@ describe("MemoryBuilder", () => {
53
53
  it("should add readable page", () => {
54
54
  const builder = new MemoryBuilder();
55
55
  const pageMap = new Map();
56
- pageMap.set(RESERVED_NUMBER_OF_PAGES, new ReadablePage(tryAsPageNumber(RESERVED_NUMBER_OF_PAGES), new Uint8Array()));
56
+ pageMap.set(RESERVED_NUMBER_OF_PAGES, ReadablePage.new(tryAsPageNumber(RESERVED_NUMBER_OF_PAGES), new Uint8Array()));
57
57
  const expectedMemory = {
58
58
  endHeapIndex: (RESERVED_NUMBER_OF_PAGES + 3) * PAGE_SIZE,
59
59
  sbrkIndex: (RESERVED_NUMBER_OF_PAGES + 2) * PAGE_SIZE,
@@ -68,7 +68,7 @@ describe("MemoryBuilder", () => {
68
68
  it("should add writeable page", () => {
69
69
  const builder = new MemoryBuilder();
70
70
  const pageMap = new Map();
71
- pageMap.set(RESERVED_NUMBER_OF_PAGES + 2, new WriteablePage(tryAsPageNumber(RESERVED_NUMBER_OF_PAGES + 2), new Uint8Array()));
71
+ pageMap.set(RESERVED_NUMBER_OF_PAGES + 2, WriteablePage.new(tryAsPageNumber(RESERVED_NUMBER_OF_PAGES + 2), new Uint8Array()));
72
72
  const expectedMemory = {
73
73
  endHeapIndex: (RESERVED_NUMBER_OF_PAGES + 4) * PAGE_SIZE,
74
74
  sbrkIndex: (RESERVED_NUMBER_OF_PAGES + 3) * PAGE_SIZE,
@@ -83,8 +83,8 @@ describe("MemoryBuilder", () => {
83
83
  it("should add two pages", () => {
84
84
  const builder = new MemoryBuilder();
85
85
  const pageMap = new Map();
86
- pageMap.set(RESERVED_NUMBER_OF_PAGES, new ReadablePage(tryAsPageNumber(RESERVED_NUMBER_OF_PAGES), new Uint8Array()));
87
- pageMap.set(RESERVED_NUMBER_OF_PAGES + 1, new WriteablePage(tryAsPageNumber(RESERVED_NUMBER_OF_PAGES + 1), new Uint8Array()));
86
+ pageMap.set(RESERVED_NUMBER_OF_PAGES, ReadablePage.new(tryAsPageNumber(RESERVED_NUMBER_OF_PAGES), new Uint8Array()));
87
+ pageMap.set(RESERVED_NUMBER_OF_PAGES + 1, WriteablePage.new(tryAsPageNumber(RESERVED_NUMBER_OF_PAGES + 1), new Uint8Array()));
88
88
  const expectedMemory = {
89
89
  endHeapIndex: (RESERVED_NUMBER_OF_PAGES + 4) * PAGE_SIZE,
90
90
  sbrkIndex: (RESERVED_NUMBER_OF_PAGES + 2) * PAGE_SIZE,
@@ -105,7 +105,7 @@ describe("MemoryBuilder", () => {
105
105
  const data = new Uint8Array(PAGE_SIZE).fill(1);
106
106
  const pageNumber = tryAsPageNumber(RESERVED_NUMBER_OF_PAGES);
107
107
  const address = tryAsMemoryIndex(pageNumber * PAGE_SIZE);
108
- pageMap.set(pageNumber, new WriteablePage(pageNumber, data));
108
+ pageMap.set(pageNumber, WriteablePage.new(pageNumber, data));
109
109
  const expectedMemory = {
110
110
  endHeapIndex: (RESERVED_NUMBER_OF_PAGES + 4) * PAGE_SIZE,
111
111
  sbrkIndex: (RESERVED_NUMBER_OF_PAGES + 2) * PAGE_SIZE,
@@ -16,7 +16,8 @@ export declare class Memory implements IMemory {
16
16
  private endHeapIndex;
17
17
  private memory;
18
18
  static fromInitialMemory(initialMemoryState: InitialMemoryState): Memory;
19
- constructor(sbrkIndex?: number & import("@typeberry/utils").WithOpaque<"sbrk index">, virtualSbrkIndex?: number & import("@typeberry/utils").WithOpaque<"sbrk index">, endHeapIndex?: number & import("@typeberry/utils").WithOpaque<"sbrk index">, memory?: Map<number & import("@typeberry/utils").WithOpaque<"memory page number">, MemoryPage>);
19
+ static new(sbrkIndex?: number & import("@typeberry/utils").WithOpaque<"sbrk index">, virtualSbrkIndex?: number & import("@typeberry/utils").WithOpaque<"sbrk index">, endHeapIndex?: number & import("@typeberry/utils").WithOpaque<"sbrk index">, memory?: Map<number & import("@typeberry/utils").WithOpaque<"memory page number">, MemoryPage>): Memory;
20
+ private constructor();
20
21
  store(address: U32, bytes: Uint8Array): Result<OK, InretpreterPageFault>;
21
22
  read(address: U32, output: Uint8Array): Result<OK, InretpreterPageFault>;
22
23
  reset(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/pvm-interpreter/memory/memory.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,SAAS,IAAI,oBAAoB,EAAoB,MAAM,0BAA0B,CAAC;AAClH,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAe,SAAS,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAoC,MAAM,mBAAmB,CAAC;AAKvG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,KAAK,UAAU,EAAkB,MAAM,uBAAuB,CAAC;AAExE,KAAK,kBAAkB,GAAG;IACxB,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACpC,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,SAAS,CAAC;CACzB,CAAC;AASF,qBAAa,MAAO,YAAW,OAAO;IAWlC,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,MAAM;IAbhB,MAAM,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,kBAAkB;gBAUrD,SAAS,+DAA4C,EACrD,gBAAgB,+DAA4C,EAC5D,YAAY,+DAAmC,EAC/C,MAAM,wFAAoC;IAGpD,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,CAAC,EAAE,EAAE,oBAAoB,CAAC;IAIxE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,EAAE,EAAE,oBAAoB,CAAC;IAIxE,KAAK;IAOL,QAAQ,CAAC,MAAM,EAAE,MAAM;IAOvB,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC;IA8BzE,OAAO,CAAC,QAAQ;IAoChB;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,GAAG,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC;IAgC9E,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;IAkC/B,WAAW,CAAC,UAAU,EAAE,UAAU;IAKlC,aAAa;CAGd"}
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/pvm-interpreter/memory/memory.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,SAAS,IAAI,oBAAoB,EAAoB,MAAM,0BAA0B,CAAC;AAClH,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAe,SAAS,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAoC,MAAM,mBAAmB,CAAC;AAKvG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,KAAK,UAAU,EAAkB,MAAM,uBAAuB,CAAC;AAExE,KAAK,kBAAkB,GAAG;IACxB,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACpC,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,SAAS,CAAC;CACzB,CAAC;AASF,qBAAa,MAAO,YAAW,OAAO;IAoBlC,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,MAAM;IAtBhB,MAAM,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,kBAAkB;IAS/D,MAAM,CAAC,GAAG,CACR,SAAS,+DAA4C,EACrD,gBAAgB,+DAA4C,EAC5D,YAAY,+DAAmC,EAC/C,MAAM,wFAAoC;IAK5C,OAAO;IAOP,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,CAAC,EAAE,EAAE,oBAAoB,CAAC;IAIxE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,EAAE,EAAE,oBAAoB,CAAC;IAIxE,KAAK;IAOL,QAAQ,CAAC,MAAM,EAAE,MAAM;IAOvB,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC;IA8BzE,OAAO,CAAC,QAAQ;IAoChB;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,GAAG,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC;IAgC9E,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;IAkC/B,WAAW,CAAC,UAAU,EAAE,UAAU;IAKlC,aAAa;CAGd"}
@@ -24,6 +24,9 @@ export class Memory {
24
24
  static fromInitialMemory(initialMemoryState) {
25
25
  return new Memory(initialMemoryState?.sbrkIndex, initialMemoryState?.sbrkIndex, initialMemoryState?.endHeapIndex, initialMemoryState?.memory);
26
26
  }
27
+ static new(sbrkIndex = tryAsSbrkIndex(RESERVED_MEMORY_RANGE.end), virtualSbrkIndex = tryAsSbrkIndex(RESERVED_MEMORY_RANGE.end), endHeapIndex = tryAsSbrkIndex(MAX_MEMORY_INDEX), memory = new Map()) {
28
+ return new Memory(sbrkIndex, virtualSbrkIndex, endHeapIndex, memory);
29
+ }
27
30
  constructor(sbrkIndex = tryAsSbrkIndex(RESERVED_MEMORY_RANGE.end), virtualSbrkIndex = tryAsSbrkIndex(RESERVED_MEMORY_RANGE.end), endHeapIndex = tryAsSbrkIndex(MAX_MEMORY_INDEX), memory = new Map()) {
28
31
  this.sbrkIndex = sbrkIndex;
29
32
  this.virtualSbrkIndex = virtualSbrkIndex;
@@ -142,7 +145,7 @@ export class Memory {
142
145
  const pagesToAllocate = (newSbrkIndex - currentSbrkIndex) / PAGE_SIZE;
143
146
  const rangeToAllocate = PageRange.fromStartAndLength(firstPageNumber, pagesToAllocate);
144
147
  for (const pageNumber of rangeToAllocate) {
145
- const page = new WriteablePage(pageNumber);
148
+ const page = WriteablePage.new(pageNumber);
146
149
  this.memory.set(pageNumber, page);
147
150
  }
148
151
  this.virtualSbrkIndex = newVirtualSbrkIndex;
@@ -11,7 +11,7 @@ import { tryAsPageNumber } from "./pages/page-utils.js";
11
11
  describe("Memory", () => {
12
12
  describe("loadInto", () => {
13
13
  it("should return PageFault if the page does not exist", () => {
14
- const memory = new Memory();
14
+ const memory = Memory.new();
15
15
  const lengthToLoad = 4;
16
16
  const result = new Uint8Array(lengthToLoad);
17
17
  const addressToLoad = tryAsMemoryIndex(1 + RESERVED_NUMBER_OF_PAGES * PAGE_SIZE);
@@ -21,7 +21,7 @@ describe("Memory", () => {
21
21
  it("should correctly load data from one page", () => {
22
22
  const pageNumber = tryAsPageNumber(RESERVED_NUMBER_OF_PAGES);
23
23
  const bytes = new Uint8Array([1, 2, 3, 4, 5]);
24
- const page = new ReadablePage(pageNumber, bytes);
24
+ const page = ReadablePage.new(pageNumber, bytes);
25
25
  const memoryMap = new Map();
26
26
  memoryMap.set(pageNumber, page);
27
27
  const sbrkIndex = tryAsSbrkIndex(20 * PAGE_SIZE);
@@ -39,8 +39,8 @@ describe("Memory", () => {
39
39
  const firstPageNumber = tryAsPageNumber(RESERVED_NUMBER_OF_PAGES);
40
40
  const secondPageNumber = tryAsPageNumber(RESERVED_NUMBER_OF_PAGES + 1);
41
41
  const bytes = new Uint8Array([1, 2, 3, 4, 5]);
42
- const firstPage = new ReadablePage(firstPageNumber, new Uint8Array([...new Uint8Array(PAGE_SIZE - bytes.length), ...bytes]));
43
- const secondPage = new ReadablePage(secondPageNumber, bytes);
42
+ const firstPage = ReadablePage.new(firstPageNumber, new Uint8Array([...new Uint8Array(PAGE_SIZE - bytes.length), ...bytes]));
43
+ const secondPage = ReadablePage.new(secondPageNumber, bytes);
44
44
  const memoryMap = new Map();
45
45
  memoryMap.set(firstPageNumber, firstPage);
46
46
  memoryMap.set(secondPageNumber, secondPage);
@@ -58,7 +58,7 @@ describe("Memory", () => {
58
58
  it("should return PageFault if case of loading data from 2 pages but one of them does not exist", () => {
59
59
  const pageNumber = tryAsPageNumber(RESERVED_NUMBER_OF_PAGES);
60
60
  const bytes = new Uint8Array();
61
- const page = new ReadablePage(pageNumber, bytes);
61
+ const page = ReadablePage.new(pageNumber, bytes);
62
62
  const memoryMap = new Map();
63
63
  memoryMap.set(pageNumber, page);
64
64
  const sbrkIndex = tryAsSbrkIndex(0);
@@ -74,8 +74,8 @@ describe("Memory", () => {
74
74
  const firstPageNumber = tryAsPageNumber((MAX_MEMORY_INDEX - PAGE_SIZE + 1) / PAGE_SIZE);
75
75
  const secondPageNumber = tryAsPageNumber(0);
76
76
  const bytes = new Uint8Array([1, 2, 3, 4, 5]);
77
- const firstPage = new ReadablePage(firstPageNumber, new Uint8Array([...new Uint8Array(PAGE_SIZE - bytes.length), ...bytes]));
78
- const secondPage = new ReadablePage(secondPageNumber, new Uint8Array([...bytes, ...new Uint8Array(PAGE_SIZE - bytes.length)]));
77
+ const firstPage = ReadablePage.new(firstPageNumber, new Uint8Array([...new Uint8Array(PAGE_SIZE - bytes.length), ...bytes]));
78
+ const secondPage = ReadablePage.new(secondPageNumber, new Uint8Array([...bytes, ...new Uint8Array(PAGE_SIZE - bytes.length)]));
79
79
  const memoryMap = new Map();
80
80
  memoryMap.set(firstPageNumber, firstPage);
81
81
  memoryMap.set(secondPageNumber, secondPage);
@@ -93,27 +93,27 @@ describe("Memory", () => {
93
93
  });
94
94
  describe("storeFrom", () => {
95
95
  it("should return PageFault if the page does not exist", () => {
96
- const memory = new Memory();
96
+ const memory = Memory.new();
97
97
  const addressToStore = tryAsMemoryIndex(RESERVED_NUMBER_OF_PAGES * PAGE_SIZE + 1);
98
98
  const dataToStore = new Uint8Array([1, 2, 3, 4]);
99
99
  const storeResult = memory.storeFrom(addressToStore, dataToStore);
100
100
  deepEqual(storeResult, Result.error(PageFault.fromMemoryIndex(addressToStore), () => "Page fault: page 16 not allocated"));
101
101
  });
102
102
  it("should not return PageFault if the page does not exist and stored array length is 0 (standard page)", () => {
103
- const memory = new Memory();
103
+ const memory = Memory.new();
104
104
  const addressToStore = tryAsMemoryIndex(RESERVED_NUMBER_OF_PAGES * PAGE_SIZE + 1);
105
105
  const storeResult = memory.storeFrom(addressToStore, new Uint8Array());
106
106
  assert.deepStrictEqual(storeResult, Result.ok(OK));
107
107
  });
108
108
  it("should not return PageFault if the page does not exist and stored array length is 0 - even it is a reserved page", () => {
109
- const memory = new Memory();
109
+ const memory = Memory.new();
110
110
  const addressToStore = tryAsMemoryIndex(1);
111
111
  const storeResult = memory.storeFrom(addressToStore, new Uint8Array());
112
112
  assert.deepStrictEqual(storeResult, Result.ok(OK));
113
113
  });
114
114
  it("should correctly store data on one page", () => {
115
115
  const pageNumber = tryAsPageNumber(RESERVED_NUMBER_OF_PAGES);
116
- const page = new WriteablePage(pageNumber, new Uint8Array());
116
+ const page = WriteablePage.new(pageNumber, new Uint8Array());
117
117
  const memoryMap = new Map();
118
118
  const sbrkIndex = tryAsSbrkIndex((RESERVED_NUMBER_OF_PAGES + 4) * PAGE_SIZE);
119
119
  const endHeapIndex = tryAsSbrkIndex(MAX_MEMORY_INDEX);
@@ -122,7 +122,7 @@ describe("Memory", () => {
122
122
  const dataToStore = new Uint8Array([1, 2, 3, 4]);
123
123
  const addressToStore = tryAsMemoryIndex(RESERVED_NUMBER_OF_PAGES * PAGE_SIZE + 1);
124
124
  const expectedMemoryMap = new Map();
125
- expectedMemoryMap.set(pageNumber, new WriteablePage(pageNumber, new Uint8Array([0, ...dataToStore, ...new Uint8Array(MIN_ALLOCATION_LENGTH - dataToStore.length - 1)])));
125
+ expectedMemoryMap.set(pageNumber, WriteablePage.new(pageNumber, new Uint8Array([0, ...dataToStore, ...new Uint8Array(MIN_ALLOCATION_LENGTH - dataToStore.length - 1)])));
126
126
  const expectedMemory = {
127
127
  sbrkIndex,
128
128
  virtualSbrkIndex: sbrkIndex,
@@ -136,8 +136,8 @@ describe("Memory", () => {
136
136
  it("should correctly store data on two pages", () => {
137
137
  const firstPageNumber = tryAsPageNumber(RESERVED_NUMBER_OF_PAGES);
138
138
  const secondPageNumber = tryAsPageNumber(RESERVED_NUMBER_OF_PAGES + 1);
139
- const firstPage = new WriteablePage(firstPageNumber, new Uint8Array(PAGE_SIZE));
140
- const secondPage = new WriteablePage(secondPageNumber, new Uint8Array());
139
+ const firstPage = WriteablePage.new(firstPageNumber, new Uint8Array(PAGE_SIZE));
140
+ const secondPage = WriteablePage.new(secondPageNumber, new Uint8Array());
141
141
  const memoryMap = new Map();
142
142
  const sbrkIndex = tryAsSbrkIndex(20 * PAGE_SIZE);
143
143
  const endHeapIndex = tryAsSbrkIndex(MAX_MEMORY_INDEX);
@@ -147,8 +147,8 @@ describe("Memory", () => {
147
147
  const dataToStore = new Uint8Array([1, 2, 3, 4]);
148
148
  const addressToStore = tryAsMemoryIndex(17 * PAGE_SIZE - 2);
149
149
  const expectedMemoryMap = new Map();
150
- expectedMemoryMap.set(firstPageNumber, new WriteablePage(firstPageNumber, new Uint8Array([...new Uint8Array(PAGE_SIZE - 2), 1, 2])));
151
- expectedMemoryMap.set(secondPageNumber, new WriteablePage(secondPageNumber, new Uint8Array([3, 4, ...new Uint8Array(MIN_ALLOCATION_LENGTH - 2)])));
150
+ expectedMemoryMap.set(firstPageNumber, WriteablePage.new(firstPageNumber, new Uint8Array([...new Uint8Array(PAGE_SIZE - 2), 1, 2])));
151
+ expectedMemoryMap.set(secondPageNumber, WriteablePage.new(secondPageNumber, new Uint8Array([3, 4, ...new Uint8Array(MIN_ALLOCATION_LENGTH - 2)])));
152
152
  const expectedMemory = {
153
153
  sbrkIndex,
154
154
  virtualSbrkIndex: sbrkIndex,
@@ -162,7 +162,7 @@ describe("Memory", () => {
162
162
  it("should return PageFault if case of storing data on 2 pages but one of them does not exist", () => {
163
163
  const pageNumber = tryAsPageNumber(RESERVED_NUMBER_OF_PAGES);
164
164
  const bytes = new Uint8Array();
165
- const page = new WriteablePage(pageNumber, bytes);
165
+ const page = WriteablePage.new(pageNumber, bytes);
166
166
  const memoryMap = new Map();
167
167
  memoryMap.set(pageNumber, page);
168
168
  const sbrkIndex = tryAsSbrkIndex(RESERVED_NUMBER_OF_PAGES * PAGE_SIZE);
@@ -175,8 +175,8 @@ describe("Memory", () => {
175
175
  it("should return fault when store data on two pages - the last page and the first page", () => {
176
176
  const firstPageNumber = tryAsPageNumber((MAX_MEMORY_INDEX - PAGE_SIZE + 1) / PAGE_SIZE);
177
177
  const secondPageNumber = tryAsPageNumber(0);
178
- const firstPage = new WriteablePage(firstPageNumber, new Uint8Array(PAGE_SIZE));
179
- const secondPage = new WriteablePage(secondPageNumber, new Uint8Array(PAGE_SIZE));
178
+ const firstPage = WriteablePage.new(firstPageNumber, new Uint8Array(PAGE_SIZE));
179
+ const secondPage = WriteablePage.new(secondPageNumber, new Uint8Array(PAGE_SIZE));
180
180
  const memoryMap = new Map();
181
181
  const sbrkIndex = tryAsSbrkIndex(0);
182
182
  const endHeapIndex = tryAsSbrkIndex(MAX_MEMORY_INDEX);
@@ -186,8 +186,8 @@ describe("Memory", () => {
186
186
  const dataToStore = new Uint8Array([1, 2, 3, 4]);
187
187
  const addressToStore = tryAsMemoryIndex(MAX_MEMORY_INDEX - 2);
188
188
  const expectedMemoryMap = new Map();
189
- expectedMemoryMap.set(firstPageNumber, new WriteablePage(firstPageNumber, new Uint8Array(PAGE_SIZE)));
190
- expectedMemoryMap.set(secondPageNumber, new WriteablePage(secondPageNumber, new Uint8Array(PAGE_SIZE)));
189
+ expectedMemoryMap.set(firstPageNumber, WriteablePage.new(firstPageNumber, new Uint8Array(PAGE_SIZE)));
190
+ expectedMemoryMap.set(secondPageNumber, WriteablePage.new(secondPageNumber, new Uint8Array(PAGE_SIZE)));
191
191
  const expectedMemory = {
192
192
  sbrkIndex,
193
193
  virtualSbrkIndex: sbrkIndex,
@@ -201,11 +201,11 @@ describe("Memory", () => {
201
201
  });
202
202
  describe("sbrk", () => {
203
203
  it("should allocate one page", () => {
204
- const memory = new Memory();
204
+ const memory = Memory.new();
205
205
  const lengthToAllocate = 5;
206
206
  const expectedMemoryMap = new Map();
207
207
  const pageNumber = tryAsPageNumber(RESERVED_NUMBER_OF_PAGES);
208
- expectedMemoryMap.set(pageNumber, new WriteablePage(pageNumber, new Uint8Array(MIN_ALLOCATION_LENGTH)));
208
+ expectedMemoryMap.set(pageNumber, WriteablePage.new(pageNumber, new Uint8Array(MIN_ALLOCATION_LENGTH)));
209
209
  const expectedMemory = {
210
210
  sbrkIndex: RESERVED_NUMBER_OF_PAGES * PAGE_SIZE + PAGE_SIZE,
211
211
  virtualSbrkIndex: RESERVED_NUMBER_OF_PAGES * PAGE_SIZE + lengthToAllocate,
@@ -216,13 +216,13 @@ describe("Memory", () => {
216
216
  assert.deepEqual(memory, expectedMemory);
217
217
  });
218
218
  it("should allocate two pages", () => {
219
- const memory = new Memory();
219
+ const memory = Memory.new();
220
220
  const lengthToAllocate = PAGE_SIZE + 5;
221
221
  const expectedMemoryMap = new Map();
222
222
  const firstPageNumber = tryAsPageNumber(RESERVED_NUMBER_OF_PAGES);
223
223
  const secondPageNumber = tryAsPageNumber(RESERVED_NUMBER_OF_PAGES + 1);
224
- expectedMemoryMap.set(firstPageNumber, new WriteablePage(firstPageNumber, new Uint8Array(MIN_ALLOCATION_LENGTH)));
225
- expectedMemoryMap.set(secondPageNumber, new WriteablePage(secondPageNumber, new Uint8Array(MIN_ALLOCATION_LENGTH)));
224
+ expectedMemoryMap.set(firstPageNumber, WriteablePage.new(firstPageNumber, new Uint8Array(MIN_ALLOCATION_LENGTH)));
225
+ expectedMemoryMap.set(secondPageNumber, WriteablePage.new(secondPageNumber, new Uint8Array(MIN_ALLOCATION_LENGTH)));
226
226
  const expectedMemory = {
227
227
  sbrkIndex: RESERVED_NUMBER_OF_PAGES * PAGE_SIZE + 2 * PAGE_SIZE,
228
228
  virtualSbrkIndex: RESERVED_NUMBER_OF_PAGES * PAGE_SIZE + lengthToAllocate,
@@ -233,11 +233,11 @@ describe("Memory", () => {
233
233
  assert.deepEqual(memory, expectedMemory);
234
234
  });
235
235
  it("should not allocate if virtualSbrkIndex + length < sbrkIndex", () => {
236
- const memory = new Memory();
236
+ const memory = Memory.new();
237
237
  const lengthToAllocate = 5;
238
238
  const expectedMemoryMap = new Map();
239
239
  const pageNumber = tryAsPageNumber(RESERVED_NUMBER_OF_PAGES);
240
- expectedMemoryMap.set(pageNumber, new WriteablePage(pageNumber, new Uint8Array(MIN_ALLOCATION_LENGTH)));
240
+ expectedMemoryMap.set(pageNumber, WriteablePage.new(pageNumber, new Uint8Array(MIN_ALLOCATION_LENGTH)));
241
241
  const expectedMemoryAfterFirstAllocation = {
242
242
  sbrkIndex: RESERVED_NUMBER_OF_PAGES * PAGE_SIZE + PAGE_SIZE,
243
243
  virtualSbrkIndex: RESERVED_NUMBER_OF_PAGES * PAGE_SIZE + lengthToAllocate,
@@ -256,13 +256,13 @@ describe("Memory", () => {
256
256
  assert.deepEqual(memory, expectedMemoryAfterSecondAllocation);
257
257
  });
258
258
  it("should allocate two pages one by one", () => {
259
- const memory = new Memory();
259
+ const memory = Memory.new();
260
260
  const lengthToAllocate = PAGE_SIZE;
261
261
  const expectedMemoryMap = new Map();
262
262
  const firstPageNumber = tryAsPageNumber(RESERVED_NUMBER_OF_PAGES);
263
263
  const secondPageNumber = tryAsPageNumber(RESERVED_NUMBER_OF_PAGES + 1);
264
- expectedMemoryMap.set(firstPageNumber, new WriteablePage(firstPageNumber, new Uint8Array(MIN_ALLOCATION_LENGTH)));
265
- expectedMemoryMap.set(secondPageNumber, new WriteablePage(secondPageNumber, new Uint8Array(MIN_ALLOCATION_LENGTH)));
264
+ expectedMemoryMap.set(firstPageNumber, WriteablePage.new(firstPageNumber, new Uint8Array(MIN_ALLOCATION_LENGTH)));
265
+ expectedMemoryMap.set(secondPageNumber, WriteablePage.new(secondPageNumber, new Uint8Array(MIN_ALLOCATION_LENGTH)));
266
266
  const expectedMemory = {
267
267
  sbrkIndex: RESERVED_NUMBER_OF_PAGES * PAGE_SIZE + 2 * PAGE_SIZE,
268
268
  virtualSbrkIndex: RESERVED_NUMBER_OF_PAGES * PAGE_SIZE + 2 * PAGE_SIZE,
@@ -4,7 +4,8 @@ import { MemoryPage } from "./memory-page.js";
4
4
  import type { PageIndex, PageNumber } from "./page-utils.js";
5
5
  export declare class ReadablePage extends MemoryPage {
6
6
  private data;
7
- constructor(pageNumber: PageNumber, data: Uint8Array);
7
+ static new(pageNumber: PageNumber, data: Uint8Array): ReadablePage;
8
+ private constructor();
8
9
  loadInto(result: Uint8Array, startIndex: PageIndex, length: number): Result<OK, PageFault>;
9
10
  storeFrom(_address: PageIndex, _data: Uint8Array): Result<OK, PageFault>;
10
11
  setData(pageIndex: PageIndex, data: Uint8Array): void;
@@ -1 +1 @@
1
- {"version":3,"file":"readable-page.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/pvm-interpreter/memory/pages/readable-page.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7D,qBAAa,YAAa,SAAQ,UAAU;IAGxC,OAAO,CAAC,IAAI;gBADZ,UAAU,EAAE,UAAU,EACd,IAAI,EAAE,UAAU;IAK1B,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC;IAiB1F,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC;IAOxE,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU;IAI9C,WAAW;IAIX,WAAW;CAGZ"}
1
+ {"version":3,"file":"readable-page.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/pvm-interpreter/memory/pages/readable-page.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7D,qBAAa,YAAa,SAAQ,UAAU;IAOxC,OAAO,CAAC,IAAI;IANd,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU;IAInD,OAAO;IAOP,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC;IAiB1F,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC;IAOxE,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU;IAI9C,WAAW;IAIX,WAAW;CAGZ"}
@@ -4,6 +4,9 @@ import { PAGE_SIZE } from "../memory-consts.js";
4
4
  import { MemoryPage } from "./memory-page.js";
5
5
  export class ReadablePage extends MemoryPage {
6
6
  data;
7
+ static new(pageNumber, data) {
8
+ return new ReadablePage(pageNumber, data);
9
+ }
7
10
  constructor(pageNumber, data) {
8
11
  super(pageNumber);
9
12
  this.data = data;
@@ -11,7 +11,7 @@ describe("ReadablePage", () => {
11
11
  const initialMemory = new Uint8Array([0, ...bytes]);
12
12
  const startIndex = tryAsMemoryIndex(0);
13
13
  const pageNumber = tryAsPageNumber(0);
14
- const readablePage = new ReadablePage(pageNumber, initialMemory);
14
+ const readablePage = ReadablePage.new(pageNumber, initialMemory);
15
15
  const lengthToLoad = 4;
16
16
  const result = new Uint8Array(lengthToLoad);
17
17
  const expectedResult = bytes;
@@ -25,7 +25,7 @@ describe("ReadablePage", () => {
25
25
  const initialMemory = new Uint8Array([0, ...bytes]);
26
26
  const startIndex = tryAsMemoryIndex(0);
27
27
  const pageNumber = tryAsPageNumber(0);
28
- const readablePage = new ReadablePage(pageNumber, initialMemory);
28
+ const readablePage = ReadablePage.new(pageNumber, initialMemory);
29
29
  const lengthToLoad = 4;
30
30
  const result = new Uint8Array(lengthToLoad);
31
31
  const expectedResult = new Uint8Array([3, 4, 0, 0]);
@@ -38,7 +38,7 @@ describe("ReadablePage", () => {
38
38
  const initialMemory = new Uint8Array();
39
39
  const storeIndex = tryAsPageIndex(0);
40
40
  const pageNumber = tryAsPageNumber(0);
41
- const readablePage = new ReadablePage(pageNumber, initialMemory);
41
+ const readablePage = ReadablePage.new(pageNumber, initialMemory);
42
42
  const storeResult = readablePage.storeFrom(storeIndex, new Uint8Array());
43
43
  deepEqual(storeResult, Result.error(PageFault.fromPageNumber(0, true), () => "Page fault: attempted to write to read-only page at 0"));
44
44
  });
@@ -20,7 +20,8 @@ declare global {
20
20
  export declare class WriteablePage extends MemoryPage {
21
21
  private buffer;
22
22
  private view;
23
- constructor(pageNumber: PageNumber, initialData?: Uint8Array);
23
+ static new(pageNumber: PageNumber, initialData?: Uint8Array): WriteablePage;
24
+ private constructor();
24
25
  loadInto(result: Uint8Array, startIndex: PageIndex, length: number): Result<OK, PageFault>;
25
26
  storeFrom(startIndex: PageIndex, bytes: Uint8Array): Result<OK, PageFault>;
26
27
  setData(pageIndex: PageIndex, data: Uint8Array): void;
@@ -1 +1 @@
1
- {"version":3,"file":"writeable-page.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/pvm-interpreter/memory/pages/writeable-page.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7D;;;;GAIG;AACH,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,sBAAsB;QAC9B,KAAK,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;YAAE,aAAa,EAAE,MAAM,CAAA;SAAE,GAAG,WAAW,CAAC;KACxE;IAED,UAAU,WAAW;QACnB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;KAC9B;CACF;AAED,qBAAa,aAAc,SAAQ,UAAU;IAC3C,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,IAAI,CAAa;gBAEb,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,UAAU;IAW5D,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC;IAiB1F,SAAS,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC;IAU1E,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU;IAQ9C,WAAW;IAIX,WAAW;CAGZ"}
1
+ {"version":3,"file":"writeable-page.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/pvm-interpreter/memory/pages/writeable-page.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7D;;;;GAIG;AACH,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,sBAAsB;QAC9B,KAAK,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;YAAE,aAAa,EAAE,MAAM,CAAA;SAAE,GAAG,WAAW,CAAC;KACxE;IAED,UAAU,WAAW;QACnB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;KAC9B;CACF;AAED,qBAAa,aAAc,SAAQ,UAAU;IAC3C,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,IAAI,CAAa;IAEzB,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,UAAU;IAI3D,OAAO;IAWP,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC;IAiB1F,SAAS,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC;IAU1E,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU;IAQ9C,WAAW;IAIX,WAAW;CAGZ"}
@@ -5,6 +5,9 @@ import { MemoryPage } from "./memory-page.js";
5
5
  export class WriteablePage extends MemoryPage {
6
6
  buffer;
7
7
  view;
8
+ static new(pageNumber, initialData) {
9
+ return new WriteablePage(pageNumber, initialData);
10
+ }
8
11
  constructor(pageNumber, initialData) {
9
12
  super(pageNumber);
10
13
  const dataLength = initialData?.length ?? 0;
@@ -11,7 +11,7 @@ describe("WriteablePage", () => {
11
11
  const initialMemory = new Uint8Array([0, ...bytes]);
12
12
  const startIndex = tryAsMemoryIndex(0);
13
13
  const pageNumber = tryAsPageNumber(0);
14
- const readablePage = new WriteablePage(pageNumber, initialMemory);
14
+ const readablePage = WriteablePage.new(pageNumber, initialMemory);
15
15
  const lengthToLoad = 4;
16
16
  const result = new Uint8Array(lengthToLoad);
17
17
  const expectedResult = bytes;
@@ -25,7 +25,7 @@ describe("WriteablePage", () => {
25
25
  const initialMemory = new Uint8Array([0, ...bytes]);
26
26
  const startIndex = tryAsMemoryIndex(0);
27
27
  const pageNumber = tryAsPageNumber(0);
28
- const readablePage = new WriteablePage(pageNumber, initialMemory);
28
+ const readablePage = WriteablePage.new(pageNumber, initialMemory);
29
29
  const lengthToLoad = 4;
30
30
  const result = new Uint8Array(lengthToLoad);
31
31
  const expectedResult = new Uint8Array([3, 4, 0, 0]);
@@ -39,7 +39,7 @@ describe("WriteablePage", () => {
39
39
  const pageNumber = tryAsPageNumber(0);
40
40
  const bytesToStore = new Uint8Array([1, 2, 3, 4]);
41
41
  const indexToStore = tryAsPageIndex(1);
42
- const writeablePage = new WriteablePage(pageNumber);
42
+ const writeablePage = WriteablePage.new(pageNumber);
43
43
  const expectedBuffer = new ArrayBuffer(MIN_ALLOCATION_LENGTH);
44
44
  const expectedView = new Uint8Array(expectedBuffer);
45
45
  expectedView.set(bytesToStore, indexToStore);
@@ -57,7 +57,7 @@ describe("WriteablePage", () => {
57
57
  const pageNumber = tryAsPageNumber(0);
58
58
  const bytesToStore = new Uint8Array([1, 2, 3, 4]);
59
59
  const indexToStore = tryAsPageIndex(MIN_ALLOCATION_LENGTH);
60
- const writeablePage = new WriteablePage(pageNumber);
60
+ const writeablePage = WriteablePage.new(pageNumber);
61
61
  const expectedBuffer = new ArrayBuffer(MIN_ALLOCATION_LENGTH + bytesToStore.length);
62
62
  const expectedView = new Uint8Array(expectedBuffer);
63
63
  expectedView.set(bytesToStore, MIN_ALLOCATION_LENGTH);
@@ -2,7 +2,8 @@ import type { ImmediateDecoder } from "../args-decoder/decoders/immediate-decode
2
2
  import type { Registers } from "../registers.js";
3
3
  export declare class BitOps {
4
4
  private regs;
5
- constructor(regs: Registers);
5
+ static new(regs: Registers): BitOps;
6
+ private constructor();
6
7
  or(firstIndex: number, secondIndex: number, resultIndex: number): void;
7
8
  orImmediate(firstIndex: number, immediate: ImmediateDecoder, resultIndex: number): void;
8
9
  and(firstIndex: number, secondIndex: number, resultIndex: number): void;
@@ -1 +1 @@
1
- {"version":3,"file":"bit-ops.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/pvm-interpreter/ops/bit-ops.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAC;AACtF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD,qBAAa,MAAM;IACL,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,SAAS;IAEnC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAI/D,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM;IAIhF,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAIhE,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM;IAIjF,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAIhE,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM;IAIjF,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAInE,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAIlE,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAIjE,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAItD,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAItD,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAIzD,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAIzD,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAI1D,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAI1D,OAAO,CAAC,UAAU;IAYlB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAKnD,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAKpD,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;CAIrD"}
1
+ {"version":3,"file":"bit-ops.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/pvm-interpreter/ops/bit-ops.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAC;AACtF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD,qBAAa,MAAM;IAKG,OAAO,CAAC,IAAI;IAJhC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS;IAI1B,OAAO;IAEP,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAI/D,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM;IAIhF,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAIhE,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM;IAIjF,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAIhE,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM;IAIjF,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAInE,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAIlE,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAIjE,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAItD,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAItD,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAIzD,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAIzD,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAI1D,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAI1D,OAAO,CAAC,UAAU;IAYlB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAKnD,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAKpD,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;CAIrD"}
@@ -1,6 +1,9 @@
1
1
  import { clz64, countBits32, countBits64, ctz32, ctz64 } from "./bit-utils.js";
2
2
  export class BitOps {
3
3
  regs;
4
+ static new(regs) {
5
+ return new BitOps(regs);
6
+ }
4
7
  constructor(regs) {
5
8
  this.regs = regs;
6
9
  }
@@ -6,15 +6,15 @@ import { bigintToUint8ArrayLE } from "../test-utils.js";
6
6
  import { BitOps } from "./bit-ops.js";
7
7
  describe("BitOps", () => {
8
8
  function prepareData(firstValue, secondValue = 0n) {
9
- const regs = new Registers();
9
+ const regs = Registers.empty();
10
10
  const firstRegisterIndex = 0;
11
11
  const secondRegisterIndex = 1;
12
12
  const resultRegisterIndex = 12;
13
13
  regs.setU64(firstRegisterIndex, firstValue);
14
14
  regs.setU64(secondRegisterIndex, secondValue);
15
- const immediate = new ImmediateDecoder();
15
+ const immediate = ImmediateDecoder.new();
16
16
  immediate.setBytes(bigintToUint8ArrayLE(secondValue));
17
- const bitOps = new BitOps(regs);
17
+ const bitOps = BitOps.new(regs);
18
18
  return { regs, bitOps, immediate, firstRegisterIndex, secondRegisterIndex, resultRegisterIndex };
19
19
  }
20
20
  it("or", () => {
@@ -2,7 +2,8 @@ import type { ImmediateDecoder } from "../args-decoder/decoders/immediate-decode
2
2
  import type { Registers } from "../registers.js";
3
3
  export declare class BitRotationOps {
4
4
  private regs;
5
- constructor(regs: Registers);
5
+ static new(regs: Registers): BitRotationOps;
6
+ private constructor();
6
7
  reverseBytes(valueIndex: number, resultIndex: number): void;
7
8
  private rotate32Left;
8
9
  private rotate64Left;
@@ -1 +1 @@
1
- {"version":3,"file":"bit-rotation-ops.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/pvm-interpreter/ops/bit-rotation-ops.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAC;AACtF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD,qBAAa,cAAc;IACb,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,SAAS;IAEnC,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAYpD,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,aAAa;IAQrB,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM;IAM9E,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM;IAMjF,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM;IAM9E,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM;IAMjF,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAMnE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAMnE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAMnE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;CAKpE"}
1
+ {"version":3,"file":"bit-rotation-ops.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/pvm-interpreter/ops/bit-rotation-ops.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAC;AACtF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD,qBAAa,cAAc;IAKL,OAAO,CAAC,IAAI;IAJhC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS;IAI1B,OAAO;IAEP,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAYpD,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,aAAa;IAQrB,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM;IAM9E,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM;IAMjF,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM;IAM9E,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM;IAMjF,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAMnE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAMnE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAMnE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;CAKpE"}
@@ -1,6 +1,9 @@
1
1
  import { unsignedRightShiftBigInt } from "./math-utils.js";
2
2
  export class BitRotationOps {
3
3
  regs;
4
+ static new(regs) {
5
+ return new BitRotationOps(regs);
6
+ }
4
7
  constructor(regs) {
5
8
  this.regs = regs;
6
9
  }
@@ -7,11 +7,11 @@ import { BitRotationOps } from "./bit-rotation-ops.js";
7
7
  describe("BitRotationOps", () => {
8
8
  describe("reverseBytes", () => {
9
9
  function prepareData(firstValue) {
10
- const regs = new Registers();
10
+ const regs = Registers.empty();
11
11
  const valueRegisterIndex = 0;
12
12
  const resultRegisterIndex = 12;
13
13
  regs.setU64(valueRegisterIndex, firstValue);
14
- const bitRotationOps = new BitRotationOps(regs);
14
+ const bitRotationOps = BitRotationOps.new(regs);
15
15
  return { regs, bitRotationOps, valueRegisterIndex, resultRegisterIndex };
16
16
  }
17
17
  it("should reverse bytes in positive number", () => {
@@ -30,15 +30,15 @@ describe("BitRotationOps", () => {
30
30
  });
31
31
  });
32
32
  function prepareData(firstValue, secondValue) {
33
- const regs = new Registers();
33
+ const regs = Registers.empty();
34
34
  const firstRegisterIndex = 0;
35
35
  const secondRegisterIndex = 1;
36
36
  const resultRegisterIndex = 12;
37
37
  regs.setU64(firstRegisterIndex, firstValue);
38
38
  regs.setU64(secondRegisterIndex, secondValue);
39
- const immediate = new ImmediateDecoder();
39
+ const immediate = ImmediateDecoder.new();
40
40
  immediate.setBytes(bigintToUint8ArrayLE(secondValue));
41
- const bitRotationOps = new BitRotationOps(regs);
41
+ const bitRotationOps = BitRotationOps.new(regs);
42
42
  return { regs, bitRotationOps, immediate, firstRegisterIndex, secondRegisterIndex, resultRegisterIndex };
43
43
  }
44
44
  describe("rot left", () => {