@typeberry/lib 0.5.10 → 0.5.11-1fbacf3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/bin/lib/examples/pvm-usage.test.js +2 -2
- package/package.json +1 -1
- package/packages/core/codec/descriptor.js +1 -1
- package/packages/core/codec/descriptors.js +7 -4
- package/packages/core/codec/encoder.d.ts +1 -1
- package/packages/core/codec/encoder.d.ts.map +1 -1
- package/packages/core/codec/encoder.js +3 -2
- package/packages/core/codec/index.test.js +1 -1
- package/packages/core/codec/skip.d.ts +2 -1
- package/packages/core/codec/skip.d.ts.map +1 -1
- package/packages/core/codec/skip.js +3 -0
- package/packages/core/codec/view.js +2 -2
- package/packages/core/collections/multi-map.d.ts +2 -1
- package/packages/core/collections/multi-map.d.ts.map +1 -1
- package/packages/core/collections/multi-map.js +3 -0
- package/packages/core/collections/multi-map.test.js +2 -2
- package/packages/core/concurrent/parent.js +4 -1
- package/packages/core/crypto/ed25519.d.ts +2 -5
- package/packages/core/crypto/ed25519.d.ts.map +1 -1
- package/packages/core/crypto/ed25519.js +4 -1
- package/packages/core/hash/hash.d.ts +4 -2
- package/packages/core/hash/hash.d.ts.map +1 -1
- package/packages/core/hash/hash.js +6 -1
- package/packages/core/networking/quic-network.d.ts +3 -2
- package/packages/core/networking/quic-network.d.ts.map +1 -1
- package/packages/core/networking/quic-network.js +3 -0
- package/packages/core/networking/quic-peer.d.ts +2 -1
- package/packages/core/networking/quic-peer.d.ts.map +1 -1
- package/packages/core/networking/quic-peer.js +5 -2
- package/packages/core/networking/quic-stream.d.ts +2 -1
- package/packages/core/networking/quic-stream.d.ts.map +1 -1
- package/packages/core/networking/quic-stream.js +3 -0
- package/packages/core/networking/setup.js +2 -2
- package/packages/core/pvm-host-calls/bin.js +2 -2
- package/packages/core/pvm-host-calls/ecalli-trace-logger.d.ts +5 -0
- package/packages/core/pvm-host-calls/ecalli-trace-logger.d.ts.map +1 -1
- package/packages/core/pvm-host-calls/ecalli-trace-logger.js +8 -1
- package/packages/core/pvm-host-calls/ecalli-trace-logger.test.js +1 -1
- package/packages/core/pvm-host-calls/host-call-memory.d.ts +2 -1
- package/packages/core/pvm-host-calls/host-call-memory.d.ts.map +1 -1
- package/packages/core/pvm-host-calls/host-call-memory.js +3 -0
- package/packages/core/pvm-host-calls/host-call-memory.test.js +1 -1
- package/packages/core/pvm-host-calls/host-call-registers.d.ts +5 -1
- package/packages/core/pvm-host-calls/host-call-registers.d.ts.map +1 -1
- package/packages/core/pvm-host-calls/host-call-registers.js +11 -1
- package/packages/core/pvm-host-calls/host-call-registers.test.js +2 -2
- package/packages/core/pvm-host-calls/host-calls-executor.d.ts +2 -1
- package/packages/core/pvm-host-calls/host-calls-executor.d.ts.map +1 -1
- package/packages/core/pvm-host-calls/host-calls-executor.js +5 -2
- package/packages/core/pvm-host-calls/host-calls.d.ts +4 -2
- package/packages/core/pvm-host-calls/host-calls.d.ts.map +1 -1
- package/packages/core/pvm-host-calls/host-calls.js +9 -4
- package/packages/core/pvm-host-calls/pvm-instance-manager.js +1 -1
- package/packages/core/pvm-interface/pvm.d.ts +2 -0
- package/packages/core/pvm-interface/pvm.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/args-decoder/args-decoder.js +1 -1
- package/packages/core/pvm-interpreter/args-decoder/args-decoder.test.js +3 -3
- package/packages/core/pvm-interpreter/args-decoder/args-decoding-results.js +11 -11
- package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.d.ts +2 -1
- package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.js +3 -0
- package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.test.js +2 -2
- package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.d.ts +2 -1
- package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.js +3 -0
- package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.test.js +26 -26
- package/packages/core/pvm-interpreter/basic-blocks/basic-blocks.test.js +8 -8
- package/packages/core/pvm-interpreter/bin.js +1 -1
- package/packages/core/pvm-interpreter/debugger-adapter.d.ts +2 -1
- package/packages/core/pvm-interpreter/debugger-adapter.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/debugger-adapter.js +6 -3
- package/packages/core/pvm-interpreter/gas.js +4 -1
- package/packages/core/pvm-interpreter/interpreter.d.ts +2 -1
- package/packages/core/pvm-interpreter/interpreter.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/interpreter.js +19 -16
- package/packages/core/pvm-interpreter/memory/memory-builder.js +2 -2
- package/packages/core/pvm-interpreter/memory/memory-builder.test.js +7 -7
- package/packages/core/pvm-interpreter/memory/memory.d.ts +2 -1
- package/packages/core/pvm-interpreter/memory/memory.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/memory/memory.js +4 -1
- package/packages/core/pvm-interpreter/memory/memory.test.js +31 -31
- package/packages/core/pvm-interpreter/memory/pages/readable-page.d.ts +2 -1
- package/packages/core/pvm-interpreter/memory/pages/readable-page.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/memory/pages/readable-page.js +3 -0
- package/packages/core/pvm-interpreter/memory/pages/readable-page.test.js +3 -3
- package/packages/core/pvm-interpreter/memory/pages/writeable-page.d.ts +2 -1
- package/packages/core/pvm-interpreter/memory/pages/writeable-page.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/memory/pages/writeable-page.js +3 -0
- package/packages/core/pvm-interpreter/memory/pages/writeable-page.test.js +4 -4
- package/packages/core/pvm-interpreter/ops/bit-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/bit-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/bit-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/bit-ops.test.js +3 -3
- package/packages/core/pvm-interpreter/ops/bit-rotation-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/bit-rotation-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/bit-rotation-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/bit-rotation-ops.test.js +5 -5
- package/packages/core/pvm-interpreter/ops/boolean-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/boolean-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/boolean-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/boolean-ops.test.js +3 -3
- package/packages/core/pvm-interpreter/ops/branch-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/branch-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/branch-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/branch-ops.test.js +4 -4
- package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.test.js +5 -5
- package/packages/core/pvm-interpreter/ops/host-call-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/host-call-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/host-call-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/host-call-ops.test.js +2 -2
- package/packages/core/pvm-interpreter/ops/load-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/load-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/load-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/load-ops.test.js +10 -10
- package/packages/core/pvm-interpreter/ops/math-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/math-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/math-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/math-ops.test.js +3 -3
- package/packages/core/pvm-interpreter/ops/memory-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/memory-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/memory-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/memory-ops.test.js +3 -3
- package/packages/core/pvm-interpreter/ops/move-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/move-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/move-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/move-ops.test.js +3 -3
- package/packages/core/pvm-interpreter/ops/no-args-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/no-args-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/no-args-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/no-args-ops.test.js +2 -2
- package/packages/core/pvm-interpreter/ops/shift-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/shift-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/shift-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/shift-ops.test.js +3 -3
- package/packages/core/pvm-interpreter/ops/store-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/store-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/store-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/store-ops.test.js +7 -7
- package/packages/core/pvm-interpreter/ops-dispatchers/no-args-dispatcher.test.js +1 -1
- package/packages/core/pvm-interpreter/ops-dispatchers/one-imm-dispatcher.test.js +4 -4
- package/packages/core/pvm-interpreter/ops-dispatchers/one-offset-dispatcher.test.js +2 -2
- package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-one-ext-imm-dispatcher.test.js +4 -4
- package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-one-imm-dispatcher.test.js +7 -7
- package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-one-imm-one-offset-dispatcher.test.js +10 -10
- package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-two-imms-dispatcher.test.js +5 -5
- package/packages/core/pvm-interpreter/ops-dispatchers/three-regs-dispatcher.test.js +7 -7
- package/packages/core/pvm-interpreter/ops-dispatchers/two-imms-dispatcher.test.js +5 -5
- package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-dispatcher.test.js +6 -6
- package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-one-imm-dispatcher.test.js +11 -11
- package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-one-offset-dispatcher.test.js +2 -2
- package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-two-imms-dispatcher.test.js +14 -14
- package/packages/core/pvm-interpreter/program-decoder/jump-table.d.ts +5 -2
- package/packages/core/pvm-interpreter/program-decoder/jump-table.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/program-decoder/jump-table.js +9 -4
- package/packages/core/pvm-interpreter/program-decoder/jump-table.test.js +6 -6
- package/packages/core/pvm-interpreter/program-decoder/mask.d.ts +2 -1
- package/packages/core/pvm-interpreter/program-decoder/mask.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/program-decoder/mask.js +3 -0
- package/packages/core/pvm-interpreter/program-decoder/mask.test.js +10 -10
- package/packages/core/pvm-interpreter/program-decoder/program-decoder.d.ts +2 -1
- package/packages/core/pvm-interpreter/program-decoder/program-decoder.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/program-decoder/program-decoder.js +6 -3
- package/packages/core/pvm-interpreter/program-decoder/program-decoder.test.js +5 -5
- package/packages/core/pvm-interpreter/program.js +3 -3
- package/packages/core/pvm-interpreter/registers.d.ts +5 -2
- package/packages/core/pvm-interpreter/registers.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/registers.js +10 -6
- package/packages/core/pvm-interpreter/registers.test.js +10 -10
- package/packages/core/pvm-interpreter/spi-decoder/decode-standard-program.d.ts +6 -3
- package/packages/core/pvm-interpreter/spi-decoder/decode-standard-program.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/spi-decoder/decode-standard-program.js +11 -2
- package/packages/core/pvm-interpreter-ananas/index.d.ts +6 -3
- package/packages/core/pvm-interpreter-ananas/index.d.ts.map +1 -1
- package/packages/core/pvm-interpreter-ananas/index.js +12 -3
- package/packages/core/trie/nodes.d.ts +7 -2
- package/packages/core/trie/nodes.d.ts.map +1 -1
- package/packages/core/trie/nodes.js +20 -11
- package/packages/core/trie/nodesDb.d.ts +3 -1
- package/packages/core/trie/nodesDb.d.ts.map +1 -1
- package/packages/core/trie/nodesDb.js +6 -0
- package/packages/core/trie/trie.js +2 -2
- package/packages/extensions/ipc/index.js +5 -2
- package/packages/extensions/ipc/jamnp/handler.d.ts +4 -2
- package/packages/extensions/ipc/jamnp/handler.d.ts.map +1 -1
- package/packages/extensions/ipc/jamnp/handler.js +9 -3
- package/packages/extensions/ipc/jamnp/server.js +3 -3
- package/packages/extensions/ipc/server.d.ts +2 -1
- package/packages/extensions/ipc/server.d.ts.map +1 -1
- package/packages/extensions/ipc/server.js +4 -1
- package/packages/jam/block/header.js +1 -1
- package/packages/jam/block/work-package.d.ts +7 -7
- package/packages/jam/block/work-package.d.ts.map +1 -1
- package/packages/jam/block/work-package.js +12 -12
- package/packages/jam/config/chain-spec.d.ts +2 -1
- package/packages/jam/config/chain-spec.d.ts.map +1 -1
- package/packages/jam/config/chain-spec.js +5 -2
- package/packages/jam/config/network.d.ts +2 -7
- package/packages/jam/config/network.d.ts.map +1 -1
- package/packages/jam/config/network.js +3 -0
- package/packages/jam/config-node/jip-chain-spec.js +1 -1
- package/packages/jam/database/blocks.test.js +1 -1
- package/packages/jam/database/states.d.ts +2 -1
- package/packages/jam/database/states.d.ts.map +1 -1
- package/packages/jam/database/states.js +3 -0
- package/packages/jam/database/states.test.js +1 -1
- package/packages/jam/database-lmdb/blocks.d.ts +2 -1
- package/packages/jam/database-lmdb/blocks.d.ts.map +1 -1
- package/packages/jam/database-lmdb/blocks.js +3 -0
- package/packages/jam/database-lmdb/root.d.ts +2 -1
- package/packages/jam/database-lmdb/root.d.ts.map +1 -1
- package/packages/jam/database-lmdb/root.js +3 -0
- package/packages/jam/database-lmdb/states.d.ts +2 -1
- package/packages/jam/database-lmdb/states.d.ts.map +1 -1
- package/packages/jam/database-lmdb/states.js +3 -0
- package/packages/jam/database-lmdb/states.test.js +9 -9
- package/packages/jam/executor/index.d.ts +1 -1
- package/packages/jam/executor/index.d.ts.map +1 -1
- package/packages/jam/executor/index.js +1 -1
- package/packages/jam/executor/pvm-executor.d.ts +9 -2
- package/packages/jam/executor/pvm-executor.d.ts.map +1 -1
- package/packages/jam/executor/pvm-executor.js +36 -21
- package/packages/jam/fuzz-proto/v1/handler.d.ts +2 -1
- package/packages/jam/fuzz-proto/v1/handler.d.ts.map +1 -1
- package/packages/jam/fuzz-proto/v1/handler.js +3 -0
- package/packages/jam/fuzz-proto/v1/handler.test.js +10 -10
- package/packages/jam/in-core/externalities/index.d.ts +4 -0
- package/packages/jam/in-core/externalities/index.d.ts.map +1 -0
- package/packages/jam/in-core/externalities/index.js +3 -0
- package/packages/jam/in-core/externalities/is-authorized-fetch.d.ts +20 -0
- package/packages/jam/in-core/externalities/is-authorized-fetch.d.ts.map +1 -0
- package/packages/jam/in-core/externalities/is-authorized-fetch.js +41 -0
- package/packages/jam/in-core/externalities/is-authorized-fetch.test.d.ts +2 -0
- package/packages/jam/in-core/externalities/is-authorized-fetch.test.d.ts.map +1 -0
- package/packages/jam/in-core/externalities/is-authorized-fetch.test.js +101 -0
- package/packages/jam/in-core/externalities/refine-fetch.d.ts +51 -0
- package/packages/jam/in-core/externalities/refine-fetch.d.ts.map +1 -0
- package/packages/jam/in-core/externalities/refine-fetch.js +80 -0
- package/packages/jam/in-core/externalities/refine-fetch.test.d.ts +2 -0
- package/packages/jam/in-core/externalities/refine-fetch.test.d.ts.map +1 -0
- package/packages/jam/in-core/externalities/refine-fetch.test.js +219 -0
- package/packages/jam/in-core/externalities/refine.d.ts +18 -8
- package/packages/jam/in-core/externalities/refine.d.ts.map +1 -1
- package/packages/jam/in-core/externalities/refine.js +86 -7
- package/packages/jam/in-core/externalities/refine.test.js +168 -3
- package/packages/jam/in-core/in-core.d.ts +9 -23
- package/packages/jam/in-core/in-core.d.ts.map +1 -1
- package/packages/jam/in-core/in-core.js +22 -187
- package/packages/jam/in-core/in-core.test.js +52 -20
- package/packages/jam/in-core/is-authorized.d.ts +34 -0
- package/packages/jam/in-core/is-authorized.d.ts.map +1 -0
- package/packages/jam/in-core/is-authorized.js +73 -0
- package/packages/jam/in-core/is-authorized.test.d.ts +2 -0
- package/packages/jam/in-core/is-authorized.test.d.ts.map +1 -0
- package/packages/jam/in-core/is-authorized.test.js +167 -0
- package/packages/jam/in-core/refine.d.ts +31 -0
- package/packages/jam/in-core/refine.d.ts.map +1 -0
- package/packages/jam/in-core/refine.js +182 -0
- package/packages/jam/in-core/refine.test.d.ts +2 -0
- package/packages/jam/in-core/refine.test.d.ts.map +1 -0
- package/packages/jam/in-core/refine.test.js +6 -0
- package/packages/jam/jam-host-calls/accumulate/assign.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/assign.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/assign.js +3 -0
- package/packages/jam/jam-host-calls/accumulate/assign.test.js +8 -9
- package/packages/jam/jam-host-calls/accumulate/bless.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/bless.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/bless.js +12 -9
- package/packages/jam/jam-host-calls/accumulate/bless.test.js +11 -12
- package/packages/jam/jam-host-calls/accumulate/checkpoint.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/checkpoint.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/checkpoint.js +4 -1
- package/packages/jam/jam-host-calls/accumulate/checkpoint.test.js +2 -3
- package/packages/jam/jam-host-calls/accumulate/designate.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/designate.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/designate.js +3 -0
- package/packages/jam/jam-host-calls/accumulate/designate.test.js +5 -6
- package/packages/jam/jam-host-calls/accumulate/eject.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/eject.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/eject.js +3 -0
- package/packages/jam/jam-host-calls/accumulate/eject.test.js +8 -9
- package/packages/jam/jam-host-calls/accumulate/forget.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/forget.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/forget.js +3 -0
- package/packages/jam/jam-host-calls/accumulate/forget.test.js +5 -6
- package/packages/jam/jam-host-calls/accumulate/new.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/new.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/new.js +3 -0
- package/packages/jam/jam-host-calls/accumulate/new.test.js +9 -10
- package/packages/jam/jam-host-calls/accumulate/provide.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/provide.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/provide.js +3 -0
- package/packages/jam/jam-host-calls/accumulate/provide.test.js +8 -9
- package/packages/jam/jam-host-calls/accumulate/query.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/query.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/query.js +3 -0
- package/packages/jam/jam-host-calls/accumulate/query.test.js +8 -9
- package/packages/jam/jam-host-calls/accumulate/solicit.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/solicit.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/solicit.js +3 -0
- package/packages/jam/jam-host-calls/accumulate/solicit.test.js +7 -8
- package/packages/jam/jam-host-calls/accumulate/transfer.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/transfer.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/transfer.js +3 -0
- package/packages/jam/jam-host-calls/accumulate/transfer.test.js +9 -10
- package/packages/jam/jam-host-calls/accumulate/upgrade.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/upgrade.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/upgrade.js +3 -0
- package/packages/jam/jam-host-calls/accumulate/upgrade.test.js +4 -5
- package/packages/jam/jam-host-calls/accumulate/yield.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/yield.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/yield.js +3 -0
- package/packages/jam/jam-host-calls/accumulate/yield.test.js +4 -5
- package/packages/jam/jam-host-calls/externalities/partial-state.d.ts +1 -1
- package/packages/jam/jam-host-calls/externalities/refine-externalities.d.ts +1 -1
- package/packages/jam/jam-host-calls/externalities/refine-externalities.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/externalities/refine-externalities.test.js +9 -9
- package/packages/jam/jam-host-calls/externalities/state-update.d.ts +2 -3
- package/packages/jam/jam-host-calls/externalities/state-update.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/externalities/state-update.js +5 -2
- package/packages/jam/jam-host-calls/externalities/test-accounts.js +2 -2
- package/packages/jam/jam-host-calls/general/fetch.d.ts +166 -104
- package/packages/jam/jam-host-calls/general/fetch.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/general/fetch.js +120 -23
- package/packages/jam/jam-host-calls/general/fetch.test.js +125 -92
- package/packages/jam/jam-host-calls/general/gas.d.ts +2 -1
- package/packages/jam/jam-host-calls/general/gas.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/general/gas.js +3 -0
- package/packages/jam/jam-host-calls/general/gas.test.js +4 -5
- package/packages/jam/jam-host-calls/general/info.d.ts +2 -1
- package/packages/jam/jam-host-calls/general/info.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/general/info.js +3 -0
- package/packages/jam/jam-host-calls/general/info.test.js +6 -7
- package/packages/jam/jam-host-calls/general/log.d.ts +2 -1
- package/packages/jam/jam-host-calls/general/log.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/general/log.js +3 -0
- package/packages/jam/jam-host-calls/general/lookup.d.ts +2 -1
- package/packages/jam/jam-host-calls/general/lookup.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/general/lookup.js +3 -0
- package/packages/jam/jam-host-calls/general/lookup.test.js +8 -9
- package/packages/jam/jam-host-calls/general/read.d.ts +2 -1
- package/packages/jam/jam-host-calls/general/read.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/general/read.js +3 -0
- package/packages/jam/jam-host-calls/general/read.test.js +11 -12
- package/packages/jam/jam-host-calls/general/write.d.ts +2 -1
- package/packages/jam/jam-host-calls/general/write.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/general/write.js +3 -0
- package/packages/jam/jam-host-calls/general/write.test.js +10 -11
- package/packages/jam/jam-host-calls/refine/export.d.ts +2 -1
- package/packages/jam/jam-host-calls/refine/export.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/refine/export.js +3 -0
- package/packages/jam/jam-host-calls/refine/export.test.js +6 -7
- package/packages/jam/jam-host-calls/refine/expunge.d.ts +2 -1
- package/packages/jam/jam-host-calls/refine/expunge.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/refine/expunge.js +3 -0
- package/packages/jam/jam-host-calls/refine/expunge.test.js +3 -4
- package/packages/jam/jam-host-calls/refine/historical-lookup.d.ts +2 -1
- package/packages/jam/jam-host-calls/refine/historical-lookup.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/refine/historical-lookup.js +3 -0
- package/packages/jam/jam-host-calls/refine/historical-lookup.test.js +11 -12
- package/packages/jam/jam-host-calls/refine/invoke.d.ts +2 -1
- package/packages/jam/jam-host-calls/refine/invoke.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/refine/invoke.js +4 -1
- package/packages/jam/jam-host-calls/refine/invoke.test.js +10 -11
- package/packages/jam/jam-host-calls/refine/machine.d.ts +2 -1
- package/packages/jam/jam-host-calls/refine/machine.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/refine/machine.js +3 -0
- package/packages/jam/jam-host-calls/refine/machine.test.js +6 -7
- package/packages/jam/jam-host-calls/refine/pages.d.ts +2 -1
- package/packages/jam/jam-host-calls/refine/pages.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/refine/pages.js +3 -0
- package/packages/jam/jam-host-calls/refine/pages.test.js +3 -4
- package/packages/jam/jam-host-calls/refine/peek.d.ts +2 -1
- package/packages/jam/jam-host-calls/refine/peek.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/refine/peek.js +3 -0
- package/packages/jam/jam-host-calls/refine/peek.test.js +3 -4
- package/packages/jam/jam-host-calls/refine/poke.d.ts +2 -1
- package/packages/jam/jam-host-calls/refine/poke.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/refine/poke.js +3 -0
- package/packages/jam/jam-host-calls/refine/poke.test.js +3 -4
- package/packages/jam/jamnp-s/network.js +1 -1
- package/packages/jam/jamnp-s/peers.d.ts +2 -1
- package/packages/jam/jamnp-s/peers.d.ts.map +1 -1
- package/packages/jam/jamnp-s/peers.js +3 -0
- package/packages/jam/jamnp-s/protocol/ce-128-block-request.d.ts +4 -2
- package/packages/jam/jamnp-s/protocol/ce-128-block-request.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/ce-128-block-request.js +6 -0
- package/packages/jam/jamnp-s/protocol/ce-128-block-request.test.js +2 -2
- package/packages/jam/jamnp-s/protocol/ce-129-state-request.d.ts +4 -2
- package/packages/jam/jamnp-s/protocol/ce-129-state-request.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/ce-129-state-request.js +6 -0
- package/packages/jam/jamnp-s/protocol/ce-129-state-request.test.js +4 -4
- package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts +4 -2
- package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.js +6 -0
- package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.test.js +2 -2
- package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts +6 -3
- package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.js +7 -0
- package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.test.js +2 -2
- package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.d.ts +5 -2
- package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.js +7 -0
- package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.test.js +2 -2
- package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts +4 -2
- package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.js +6 -0
- package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.test.js +2 -2
- package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts +2 -1
- package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/up-0-block-announcement.js +3 -0
- package/packages/jam/jamnp-s/stream-manager.d.ts +2 -1
- package/packages/jam/jamnp-s/stream-manager.d.ts.map +1 -1
- package/packages/jam/jamnp-s/stream-manager.js +4 -1
- package/packages/jam/jamnp-s/tasks/sync.js +4 -4
- package/packages/jam/jamnp-s/tasks/sync.test.js +4 -4
- package/packages/jam/jamnp-s/tasks/ticket-distribution.js +2 -2
- package/packages/jam/jamnp-s/tasks/ticket-distribution.test.js +1 -1
- package/packages/jam/node/common.d.ts.map +1 -1
- package/packages/jam/node/common.js +3 -3
- package/packages/jam/rpc-client/index.d.ts +4 -2
- package/packages/jam/rpc-client/index.d.ts.map +1 -1
- package/packages/jam/rpc-client/index.js +7 -1
- package/packages/jam/state/in-memory-state-view.d.ts +2 -1
- package/packages/jam/state/in-memory-state-view.d.ts.map +1 -1
- package/packages/jam/state/in-memory-state-view.js +3 -0
- package/packages/jam/state/in-memory-state.d.ts +16 -21
- package/packages/jam/state/in-memory-state.d.ts.map +1 -1
- package/packages/jam/state/in-memory-state.js +10 -6
- package/packages/jam/state/in-memory-state.test.js +2 -2
- package/packages/jam/state/service.d.ts +2 -6
- package/packages/jam/state/service.d.ts.map +1 -1
- package/packages/jam/state/service.js +3 -0
- package/packages/jam/state/test.utils.js +3 -3
- package/packages/jam/state-json/accounts.js +5 -5
- package/packages/jam/state-merkleization/in-memory-state-codec.d.ts +3 -34
- package/packages/jam/state-merkleization/in-memory-state-codec.d.ts.map +1 -1
- package/packages/jam/state-merkleization/in-memory-state-codec.js +1 -1
- package/packages/jam/state-merkleization/serialized-state-view.d.ts +8 -3
- package/packages/jam/state-merkleization/serialized-state-view.d.ts.map +1 -1
- package/packages/jam/state-merkleization/serialized-state-view.js +6 -3
- package/packages/jam/state-merkleization/serialized-state.d.ts +2 -3
- package/packages/jam/state-merkleization/serialized-state.d.ts.map +1 -1
- package/packages/jam/state-merkleization/serialized-state.js +10 -2
- package/packages/jam/state-merkleization/serialized-state.test.js +1 -1
- package/packages/jam/transition/accumulate/accumulate.d.ts.map +1 -1
- package/packages/jam/transition/accumulate/accumulate.js +20 -8
- package/packages/jam/transition/accumulate/accumulate.test.js +1 -1
- package/packages/jam/transition/accumulate/accumulation-result-merge-utils.js +48 -39
- package/packages/jam/transition/block-verifier.d.ts +2 -1
- package/packages/jam/transition/block-verifier.d.ts.map +1 -1
- package/packages/jam/transition/block-verifier.js +3 -0
- package/packages/jam/transition/block-verifier.test.js +8 -8
- package/packages/jam/transition/chain-stf.d.ts +12 -4
- package/packages/jam/transition/chain-stf.d.ts.map +1 -1
- package/packages/jam/transition/chain-stf.js +7 -3
- package/packages/jam/transition/externalities/accumulate-externalities.d.ts +22 -8
- package/packages/jam/transition/externalities/accumulate-externalities.d.ts.map +1 -1
- package/packages/jam/transition/externalities/accumulate-externalities.js +49 -29
- package/packages/jam/transition/externalities/accumulate-externalities.test.js +661 -101
- package/packages/jam/transition/externalities/accumulate-fetch-externalities.d.ts +19 -0
- package/packages/jam/transition/externalities/accumulate-fetch-externalities.d.ts.map +1 -0
- package/packages/jam/transition/externalities/accumulate-fetch-externalities.js +45 -0
- package/packages/jam/transition/externalities/accumulate-fetch-externalities.test.d.ts +2 -0
- package/packages/jam/transition/externalities/accumulate-fetch-externalities.test.d.ts.map +1 -0
- package/packages/jam/transition/externalities/accumulate-fetch-externalities.test.js +192 -0
- package/packages/jam/transition/externalities/fetch-externalities.d.ts +54 -37
- package/packages/jam/transition/externalities/fetch-externalities.d.ts.map +1 -1
- package/packages/jam/transition/externalities/fetch-externalities.js +45 -89
- package/packages/jam/transition/externalities/index.d.ts +1 -0
- package/packages/jam/transition/externalities/index.d.ts.map +1 -1
- package/packages/jam/transition/externalities/index.js +1 -0
- package/packages/jam/transition/hasher.d.ts +2 -1
- package/packages/jam/transition/hasher.d.ts.map +1 -1
- package/packages/jam/transition/hasher.js +5 -2
- package/packages/jam/transition/hasher.test.js +1 -1
- package/packages/jam/transition/preimages.test.js +4 -4
- package/packages/jam/transition/reports/test.utils.js +1 -1
- package/packages/workers/api-node/config.js +4 -4
- package/packages/workers/api-node/port.d.ts +2 -1
- package/packages/workers/api-node/port.d.ts.map +1 -1
- package/packages/workers/api-node/port.js +4 -1
- package/packages/workers/api-node/port.test.js +2 -2
- package/packages/workers/api-node/protocol.js +2 -2
- package/packages/workers/block-authorship/generator.d.ts +13 -2
- package/packages/workers/block-authorship/generator.d.ts.map +1 -1
- package/packages/workers/block-authorship/generator.js +13 -9
- package/packages/workers/block-authorship/generator.test.js +16 -2
- package/packages/workers/block-authorship/main.d.ts.map +1 -1
- package/packages/workers/block-authorship/main.js +8 -1
- package/packages/workers/importer/finality.test.js +1 -1
- package/packages/workers/importer/importer.d.ts +23 -6
- package/packages/workers/importer/importer.d.ts.map +1 -1
- package/packages/workers/importer/importer.js +34 -19
- package/packages/workers/importer/main.d.ts.map +1 -1
- package/packages/workers/importer/main.js +13 -5
- package/packages/jam/transition/externalities/fetch-externalities.test.d.ts +0 -2
- package/packages/jam/transition/externalities/fetch-externalities.test.d.ts.map +0 -1
- package/packages/jam/transition/externalities/fetch-externalities.test.js +0 -254
|
@@ -7,7 +7,7 @@ import { BasicBlocks } from "./basic-blocks.js";
|
|
|
7
7
|
describe("BasicBlocks", () => {
|
|
8
8
|
it("should return true for the first instruction even it is a termination block instruction", () => {
|
|
9
9
|
const code = new Uint8Array([Instruction.TRAP]);
|
|
10
|
-
const mask = new
|
|
10
|
+
const mask = Mask.new(BitVec.fromBlob(new Uint8Array([0b0000_0001]), code.length));
|
|
11
11
|
const basicBlocks = new BasicBlocks();
|
|
12
12
|
basicBlocks.reset(code, mask);
|
|
13
13
|
const index = 0;
|
|
@@ -16,7 +16,7 @@ describe("BasicBlocks", () => {
|
|
|
16
16
|
});
|
|
17
17
|
it("should return true for the first instruction after a termination block instruction", () => {
|
|
18
18
|
const code = new Uint8Array([Instruction.TRAP, Instruction.ADD_32, 5, 7]);
|
|
19
|
-
const mask = new
|
|
19
|
+
const mask = Mask.new(BitVec.fromBlob(new Uint8Array([0b0000_0011]), code.length));
|
|
20
20
|
const basicBlocks = new BasicBlocks();
|
|
21
21
|
basicBlocks.reset(code, mask);
|
|
22
22
|
const index = 1;
|
|
@@ -25,7 +25,7 @@ describe("BasicBlocks", () => {
|
|
|
25
25
|
});
|
|
26
26
|
it("should return false for the second instruction after a termination block instruction", () => {
|
|
27
27
|
const code = new Uint8Array([Instruction.TRAP, Instruction.ADD_32, 5, 7, Instruction.SUB_32, 5, 7]);
|
|
28
|
-
const mask = new
|
|
28
|
+
const mask = Mask.new(BitVec.fromBlob(new Uint8Array([0b0001_0011]), code.length));
|
|
29
29
|
const basicBlocks = new BasicBlocks();
|
|
30
30
|
basicBlocks.reset(code, mask);
|
|
31
31
|
const index = 4;
|
|
@@ -34,7 +34,7 @@ describe("BasicBlocks", () => {
|
|
|
34
34
|
});
|
|
35
35
|
it("should return false for a termination block instruction that is not the first instruction in the program", () => {
|
|
36
36
|
const code = new Uint8Array([Instruction.TRAP, Instruction.ADD_32, 5, 7, Instruction.TRAP]);
|
|
37
|
-
const mask = new
|
|
37
|
+
const mask = Mask.new(BitVec.fromBlob(new Uint8Array([0b0001_0011]), code.length));
|
|
38
38
|
const basicBlocks = new BasicBlocks();
|
|
39
39
|
basicBlocks.reset(code, mask);
|
|
40
40
|
const index = 4;
|
|
@@ -43,7 +43,7 @@ describe("BasicBlocks", () => {
|
|
|
43
43
|
});
|
|
44
44
|
it("should return true for a beginning of basic block instruction that is not the first instruction after a block termination instruction that has some args", () => {
|
|
45
45
|
const code = new Uint8Array([Instruction.BRANCH_EQ, 135, 25, Instruction.ADD_32, 5, 7, Instruction.TRAP]);
|
|
46
|
-
const mask = new
|
|
46
|
+
const mask = Mask.new(BitVec.fromBlob(new Uint8Array([0b0100_1001]), code.length));
|
|
47
47
|
const basicBlocks = new BasicBlocks();
|
|
48
48
|
basicBlocks.reset(code, mask);
|
|
49
49
|
const index = 3;
|
|
@@ -52,7 +52,7 @@ describe("BasicBlocks", () => {
|
|
|
52
52
|
});
|
|
53
53
|
it("should return true for a termination block instruction that is the after a termination instruction", () => {
|
|
54
54
|
const code = new Uint8Array([Instruction.TRAP, Instruction.TRAP]);
|
|
55
|
-
const mask = new
|
|
55
|
+
const mask = Mask.new(BitVec.fromBlob(new Uint8Array([0b0000_0011]), code.length));
|
|
56
56
|
const basicBlocks = new BasicBlocks();
|
|
57
57
|
basicBlocks.reset(code, mask);
|
|
58
58
|
const index = 1;
|
|
@@ -61,7 +61,7 @@ describe("BasicBlocks", () => {
|
|
|
61
61
|
});
|
|
62
62
|
it("should return false for a negative number", () => {
|
|
63
63
|
const code = new Uint8Array([Instruction.TRAP, Instruction.TRAP]);
|
|
64
|
-
const mask = new
|
|
64
|
+
const mask = Mask.new(BitVec.fromBlob(new Uint8Array([0b0000_0011]), code.length));
|
|
65
65
|
const basicBlocks = new BasicBlocks();
|
|
66
66
|
basicBlocks.reset(code, mask);
|
|
67
67
|
const index = -1;
|
|
@@ -103,7 +103,7 @@ describe("BasicBlocks", () => {
|
|
|
103
103
|
0,
|
|
104
104
|
Instruction.JUMP_IND,
|
|
105
105
|
]);
|
|
106
|
-
const mask = new
|
|
106
|
+
const mask = Mask.new(BitVec.fromBlob(new Uint8Array([0b0000_0001, 0b0000_0000, 0b0000_0000, 0b1000_0000]), 32));
|
|
107
107
|
const basicBlocks = new BasicBlocks();
|
|
108
108
|
basicBlocks.reset(code, mask);
|
|
109
109
|
const expectedStartingBasicBlockIndices = [0, 26];
|
|
@@ -4,7 +4,7 @@ const program = new Uint8Array([
|
|
|
4
4
|
0, 0, 33, 51, 8, 1, 51, 9, 1, 40, 3, 0, 149, 119, 255, 81, 7, 12, 100, 138, 200, 152, 8, 100, 169, 40, 243, 100, 135,
|
|
5
5
|
51, 8, 51, 9, 1, 50, 0, 73, 147, 82, 213, 0,
|
|
6
6
|
]);
|
|
7
|
-
const pvm = new
|
|
7
|
+
const pvm = Interpreter.new();
|
|
8
8
|
pvm.resetGeneric(program, 0, tryAsGas(1000));
|
|
9
9
|
// biome-ignore lint/suspicious/noConsole: We do want to print that.
|
|
10
10
|
console.table(pvm.dumpProgram());
|
|
@@ -3,7 +3,8 @@ import { type Memory } from "./memory/index.js";
|
|
|
3
3
|
import { Registers } from "./registers.js";
|
|
4
4
|
export declare class DebuggerAdapter {
|
|
5
5
|
private readonly pvm;
|
|
6
|
-
|
|
6
|
+
static new(useSbrkGas?: boolean): DebuggerAdapter;
|
|
7
|
+
private constructor();
|
|
7
8
|
resetJAM(jamProgram: Uint8Array, pc: number, gas: bigint, args: Uint8Array, hasMetadata?: boolean): void;
|
|
8
9
|
resetGeneric(rawProgram: Uint8Array, flatRegisters: Uint8Array, initialGas: bigint): void;
|
|
9
10
|
reset(rawProgram: Uint8Array, pc: number, gas: bigint, maybeRegisters?: Registers, maybeMemory?: Memory): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debugger-adapter.d.ts","sourceRoot":"","sources":["../../../../../packages/core/pvm-interpreter/debugger-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAY,MAAM,0BAA0B,CAAC;AAG5D,OAAO,EAAE,KAAK,MAAM,EAAoB,MAAM,mBAAmB,CAAC;AAElE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAc;
|
|
1
|
+
{"version":3,"file":"debugger-adapter.d.ts","sourceRoot":"","sources":["../../../../../packages/core/pvm-interpreter/debugger-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAY,MAAM,0BAA0B,CAAC;AAG5D,OAAO,EAAE,KAAK,MAAM,EAAoB,MAAM,mBAAmB,CAAC;AAElE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAc;IAElC,MAAM,CAAC,GAAG,CAAC,UAAU,UAAQ;IAI7B,OAAO;IAIP,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,UAAQ;IAI/F,YAAY,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM;IAIlF,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,MAAM;IAIvG,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,UAAU;IAmBlD,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU;IAI5C,UAAU,IAAI,MAAM;IAIpB,SAAS,IAAI,MAAM;IAInB,QAAQ,IAAI,OAAO;IAInB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAW9B,YAAY,IAAI,UAAU;IAI1B,YAAY,CAAC,SAAS,EAAE,UAAU;IAIlC,iBAAiB,IAAI,MAAM;IAI3B,qBAAqB,CAAC,MAAM,EAAE,MAAM;IAIpC,UAAU,IAAI,MAAM;IAIpB,UAAU,CAAC,GAAG,EAAE,MAAM;CAGvB"}
|
|
@@ -6,14 +6,17 @@ import { PAGE_SIZE } from "./memory/memory-consts.js";
|
|
|
6
6
|
import { Registers } from "./registers.js";
|
|
7
7
|
export class DebuggerAdapter {
|
|
8
8
|
pvm;
|
|
9
|
+
static new(useSbrkGas = false) {
|
|
10
|
+
return new DebuggerAdapter(useSbrkGas);
|
|
11
|
+
}
|
|
9
12
|
constructor(useSbrkGas = false) {
|
|
10
|
-
this.pvm = new
|
|
13
|
+
this.pvm = Interpreter.new({ useSbrkGas });
|
|
11
14
|
}
|
|
12
15
|
resetJAM(jamProgram, pc, gas, args, hasMetadata = false) {
|
|
13
16
|
this.pvm.resetJam(jamProgram, args, pc, tryAsGas(gas), hasMetadata);
|
|
14
17
|
}
|
|
15
18
|
resetGeneric(rawProgram, flatRegisters, initialGas) {
|
|
16
|
-
this.pvm.resetGeneric(rawProgram, 0, tryAsGas(initialGas),
|
|
19
|
+
this.pvm.resetGeneric(rawProgram, 0, tryAsGas(initialGas), Registers.fromBytes(flatRegisters));
|
|
17
20
|
}
|
|
18
21
|
reset(rawProgram, pc, gas, maybeRegisters, maybeMemory) {
|
|
19
22
|
this.pvm.resetGeneric(rawProgram, pc, tryAsGas(gas), maybeRegisters, maybeMemory);
|
|
@@ -59,7 +62,7 @@ export class DebuggerAdapter {
|
|
|
59
62
|
return this.pvm.registers.getAllEncoded();
|
|
60
63
|
}
|
|
61
64
|
setRegisters(registers) {
|
|
62
|
-
this.pvm.registers.copyFrom(
|
|
65
|
+
this.pvm.registers.copyFrom(Registers.fromBytes(registers));
|
|
63
66
|
}
|
|
64
67
|
getProgramCounter() {
|
|
65
68
|
return this.pvm.getPC();
|
|
@@ -2,11 +2,14 @@ import { tryAsU64 } from "#@typeberry/numbers";
|
|
|
2
2
|
import { tryAsGas } from "#@typeberry/pvm-interface";
|
|
3
3
|
/** Create a new gas counter instance depending on the gas value. */
|
|
4
4
|
export function gasCounter(gas) {
|
|
5
|
-
return new
|
|
5
|
+
return GasCounterU64.new(tryAsU64(gas));
|
|
6
6
|
}
|
|
7
7
|
class GasCounterU64 {
|
|
8
8
|
gas;
|
|
9
9
|
initialGas;
|
|
10
|
+
static new(gas) {
|
|
11
|
+
return new GasCounterU64(gas);
|
|
12
|
+
}
|
|
10
13
|
constructor(gas) {
|
|
11
14
|
this.gas = gas;
|
|
12
15
|
this.initialGas = tryAsGas(gas);
|
|
@@ -32,7 +32,8 @@ export declare class Interpreter implements IPvmInterpreter {
|
|
|
32
32
|
private argsDecodingResults;
|
|
33
33
|
private basicBlocks;
|
|
34
34
|
private jumpTable;
|
|
35
|
-
|
|
35
|
+
static new(options?: InterpreterOptions): Interpreter;
|
|
36
|
+
private constructor();
|
|
36
37
|
resetJam(program: Uint8Array, args: Uint8Array, pc: number, gas: Gas, hasMetadata?: boolean): void;
|
|
37
38
|
resetGeneric(rawProgram: Uint8Array, pc: number, gas: Gas, maybeRegisters?: Registers, maybeMemory?: Memory): void;
|
|
38
39
|
dumpProgram(): (string | number)[][];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interpreter.d.ts","sourceRoot":"","sources":["../../../../../packages/core/pvm-interpreter/interpreter.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,eAAe,EAAE,MAAM,EAAY,MAAM,0BAA0B,CAAC;AAW5F,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAsC3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,KAAK,kBAAkB,GAAG;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAIF,qBAAa,WAAY,YAAW,eAAe;IACjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAU;IACrC,QAAQ,CAAC,SAAS,
|
|
1
|
+
{"version":3,"file":"interpreter.d.ts","sourceRoot":"","sources":["../../../../../packages/core/pvm-interpreter/interpreter.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,eAAe,EAAE,MAAM,EAAY,MAAM,0BAA0B,CAAC;AAW5F,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAsC3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,KAAK,kBAAkB,GAAG;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAIF,qBAAa,WAAY,YAAW,eAAe;IACjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAU;IACrC,QAAQ,CAAC,SAAS,YAAqB;IACvC,QAAQ,CAAC,MAAM,SAAgB;IAC/B,GAAG,iDAA2B;IAC9B,OAAO,CAAC,IAAI,CAAgC;IAC5C,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,EAAE,CAAK;IACf,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,mBAAmB,CAAsB;IACjD,OAAO,CAAC,uBAAuB,CAA0B;IACzD,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,+BAA+B,CAAkC;IACzE,OAAO,CAAC,0BAA0B,CAA6B;IAC/D,OAAO,CAAC,mBAAmB,CAAsB;IACjD,OAAO,CAAC,sBAAsB,CAAyB;IACvD,OAAO,CAAC,iBAAiB,CAA2B;IACpD,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,uBAAuB,CAA0B;IACzD,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,wBAAwB,CAA2B;IAC3D,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,yBAAyB,CAA4B;IAC7D,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,mBAAmB,CAAmB;IAC9C,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,SAAS,CAAqB;IAEtC,MAAM,CAAC,GAAG,CAAC,OAAO,GAAE,kBAAuB;IAI3C,OAAO;IA0CP,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,UAAO;IAKxF,YAAY,CAAC,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,MAAM;IA0B3G,WAAW;IAIX,UAAU;IAIV,QAAQ;IAgHR,KAAK;IAIL,SAAS,CAAC,MAAM,EAAE,MAAM;IAIxB,SAAS;IAIT,YAAY,IAAI,IAAI,GAAG,GAAG;IAK1B,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,UAAU;IAIpD,qBAAqB,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;CAsB7C"}
|
|
@@ -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 =
|
|
30
|
-
memory = new
|
|
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
|
|
59
|
-
const shiftOps = new
|
|
60
|
-
const bitOps = new
|
|
61
|
-
const booleanOps = new
|
|
62
|
-
const moveOps = new
|
|
63
|
-
const branchOps = new
|
|
64
|
-
const loadOps = new
|
|
65
|
-
const storeOps = new
|
|
66
|
-
const noArgsOps = new
|
|
67
|
-
const dynamicJumpOps = new
|
|
68
|
-
const hostCallOps = new
|
|
69
|
-
const memoryOps = new
|
|
70
|
-
const bitRotationOps = new
|
|
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
|
|
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
|
|
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
|
|
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
|
|
16
|
-
pageMap.set(RESERVED_NUMBER_OF_PAGES + 1, new
|
|
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
|
|
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
|
|
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
|
|
87
|
-
pageMap.set(RESERVED_NUMBER_OF_PAGES + 1, new
|
|
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
|
|
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
|
-
|
|
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;
|
|
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
|
|
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
|
|
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
|
|
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
|
|
43
|
-
const secondPage = new
|
|
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
|
|
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
|
|
78
|
-
const secondPage = new
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
140
|
-
const secondPage = new
|
|
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
|
|
151
|
-
expectedMemoryMap.set(secondPageNumber, new
|
|
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
|
|
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
|
|
179
|
-
const secondPage = new
|
|
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
|
|
190
|
-
expectedMemoryMap.set(secondPageNumber, new
|
|
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
|
|
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
|
|
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
|
|
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
|
|
225
|
-
expectedMemoryMap.set(secondPageNumber, new
|
|
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
|
|
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
|
|
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
|
|
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
|
|
265
|
-
expectedMemoryMap.set(secondPageNumber, new
|
|
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
|
-
|
|
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;
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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;
|
|
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"}
|