Files
rose-ash/shared/static/wasm/sx/vm.sxbc
giles fc2b5e502f Step 5p6 lazy loading + Step 6b VM transpilation prep
Lazy module loading (Step 5 piece 6 completion):
- Add define-library wrappers + import declarations to 13 source .sx files
- compile-modules.js generates module-manifest.json with dependency graph
- compile-modules.js strips define-library/import before bytecode compilation
  (VM doesn't handle these as special forms)
- sx-platform.js replaces hardcoded 24-file loadWebStack() with manifest-driven
  recursive loader — only downloads modules the page needs
- Result: 12 modules loaded (was 24), zero errors, zero warnings
- Fallback to full load if manifest missing

VM transpilation prep (Step 6b):
- Refactor lib/vm.sx: 20 accessor functions replace raw dict access
- Factor out collect-n-from-stack, collect-n-pairs, pad-n-nils helpers
- bootstrap_vm.py: transpiles 9 VM logic functions to OCaml
- sx_vm_ref.ml: proof that vm.sx transpiles (preamble has stubs)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 12:18:41 +00:00

4 lines
22 KiB
Plaintext

(sxbc 1 "676913a136fdd81d"
(code
:constants ("define-library" "sx" "vm" "export" "make-upvalue-cell" "uv-get" "uv-set!" "make-vm-code" "make-vm-closure" "make-vm-frame" "make-vm" "vm-push" "vm-pop" "vm-peek" "frame-read-u8" "frame-read-u16" "frame-read-i16" "vm-push-frame" "code-from-value" "vm-closure?" "vm-call" "frame-local-get" "frame-local-set" "frame-upvalue-get" "frame-upvalue-set" "frame-ip" "frame-set-ip!" "frame-base" "frame-closure" "closure-code" "closure-upvalues" "closure-env" "code-bytecode" "code-constants" "code-locals" "vm-sp" "vm-set-sp!" "vm-stack" "vm-set-stack!" "vm-frames" "vm-set-frames!" "vm-globals-ref" "collect-n-from-stack" "pad-n-nils" "collect-n-pairs" "vm-global-get" "vm-resolve-ho-form" "vm-call-external" "vm-global-set" "env-walk" "env-walk-set!" "vm-create-closure" "vm-run" "vm-step" "vm-call-closure" "vm-execute-module" {:upvalue-count 0 :arity 1 :constants ("uv-value") :bytecode (1 0 0 16 0 65 1 0 50)} {:upvalue-count 0 :arity 1 :constants ("get" "uv-value") :bytecode (16 0 1 1 0 52 0 0 2 50)} {:upvalue-count 0 :arity 2 :constants ("dict-set!" "uv-value") :bytecode (16 0 1 1 0 16 1 52 0 0 3 50)} {:upvalue-count 0 :arity 4 :constants ("vc-bytecode" "vc-locals" "vc-arity" "vc-constants") :bytecode (1 0 0 16 2 1 1 0 16 1 1 2 0 16 0 1 3 0 16 3 65 4 0 50)} {:upvalue-count 0 :arity 5 :constants ("vm-globals" "vm-upvalues" "vm-name" "vm-code" "vm-closure-env") :bytecode (1 0 0 16 3 1 1 0 16 1 1 2 0 16 2 1 3 0 16 0 1 4 0 16 4 65 5 0 50)} {:upvalue-count 0 :arity 2 :constants ("ip" 0 "closure" "base" "local-cells") :bytecode (1 0 0 1 1 0 1 2 0 16 0 1 3 0 16 1 1 4 0 65 0 0 65 4 0 50)} {:upvalue-count 0 :arity 1 :constants ("sp" 0 "frames" "list" "stack" "make-vm-stack" 4096 "globals") :bytecode (1 0 0 1 1 0 1 2 0 52 3 0 0 1 4 0 1 6 0 52 5 0 1 1 7 0 16 0 65 4 0 50)} {:upvalue-count 0 :arity 2 :constants ("get" "sp" "stack" ">=" "vm-stack-length" "make-vm-stack" "*" 2 "vm-stack-copy!" "dict-set!" "vm-stack-set!" "+" 1) :bytecode (16 0 1 1 0 52 0 0 2 17 2 16 0 1 2 0 52 0 0 2 17 3 16 2 16 3 52 4 0 1 52 3 0 2 33 45 0 16 2 1 7 0 52 6 0 2 52 5 0 1 17 4 16 3 16 4 16 2 52 8 0 3 5 16 0 1 2 0 16 4 52 9 0 3 5 16 4 17 3 32 1 0 2 5 16 3 16 2 16 1 52 10 0 3 5 16 0 1 1 0 16 2 1 12 0 52 11 0 2 52 9 0 3 50)} {:upvalue-count 0 :arity 1 :constants ("-" "get" "sp" 1 "dict-set!" "vm-stack-get" "stack") :bytecode (16 0 1 2 0 52 1 0 2 1 3 0 52 0 0 2 17 1 16 0 1 2 0 16 1 52 4 0 3 5 16 0 1 6 0 52 1 0 2 16 1 52 5 0 2 50)} {:upvalue-count 0 :arity 1 :constants ("vm-stack-get" "get" "stack" "-" "sp" 1) :bytecode (16 0 1 2 0 52 1 0 2 16 0 1 4 0 52 1 0 2 1 5 0 52 3 0 2 52 0 0 2 50)} {:upvalue-count 0 :arity 1 :constants ("get" "ip" "closure" "vm-code" "vc-bytecode" "nth" "dict-set!" "+" 1) :bytecode (16 0 1 1 0 52 0 0 2 17 1 16 0 1 2 0 52 0 0 2 1 3 0 52 0 0 2 1 4 0 52 0 0 2 17 2 16 2 16 1 52 5 0 2 17 3 16 0 1 1 0 16 1 1 8 0 52 7 0 2 52 6 0 3 5 16 3 50)} {:upvalue-count 0 :arity 1 :constants ("frame-read-u8" "+" "*" 256) :bytecode (20 0 0 16 0 48 1 17 1 20 0 0 16 0 48 1 17 2 16 1 16 2 1 3 0 52 2 0 2 52 1 0 2 50)} {:upvalue-count 0 :arity 1 :constants ("frame-read-u16" ">=" 32768 "-" 65536) :bytecode (20 0 0 16 0 48 1 17 1 16 1 1 2 0 52 1 0 2 33 12 0 16 1 1 4 0 52 3 0 2 32 2 0 16 1 50)} {:upvalue-count 0 :arity 3 :constants ("make-vm-frame" "get" "sp" "for-each" {:upvalue-count 1 :arity 1 :constants ("vm-push") :bytecode (20 0 0 18 0 16 0 49 2 50)} "len" "vm-code" "vc-locals" "-" ">" 0 {:upvalue-count 4 :arity 0 :constants ("<" "vm-push" "+" 1) :bytecode (18 0 18 1 52 0 0 2 33 28 0 20 1 0 18 2 2 48 2 5 18 0 1 3 0 52 2 0 2 19 0 5 18 3 49 0 32 1 0 2 50)} "dict-set!" "frames" "cons") :bytecode (20 0 0 16 1 16 0 1 2 0 52 1 0 2 48 2 17 3 51 4 0 1 0 16 2 52 3 0 2 5 16 2 52 5 0 1 17 4 16 1 1 6 0 52 1 0 2 1 7 0 52 1 0 2 17 5 16 5 16 4 52 8 0 2 17 6 16 6 1 10 0 52 9 0 2 33 26 0 1 10 0 17 7 51 11 0 1 7 1 6 1 0 1 8 17 8 5 16 8 48 0 32 1 0 2 5 16 0 1 13 0 16 3 16 0 1 13 0 52 1 0 2 52 14 0 2 52 12 0 3 50)} {:upvalue-count 0 :arity 1 :constants ("Convert a compiler output dict to a vm-code object." "not" "dict?" "make-vm-code" 0 16 "list" "get" "bytecode" "nil?" "constants" "arity" "+") :bytecode (1 0 0 5 16 0 52 2 0 1 52 1 0 1 33 22 0 20 3 0 1 4 0 1 5 0 52 6 0 0 52 6 0 0 49 4 32 112 0 16 0 1 8 0 52 7 0 2 17 1 16 1 52 9 0 1 33 7 0 52 6 0 0 32 2 0 16 1 17 2 16 0 1 10 0 52 7 0 2 17 3 16 3 52 9 0 1 33 7 0 52 6 0 0 32 2 0 16 3 17 4 16 0 1 11 0 52 7 0 2 17 5 16 5 52 9 0 1 33 6 0 1 4 0 32 2 0 16 5 17 6 20 3 0 16 6 16 6 1 5 0 52 12 0 2 16 2 16 4 49 4 50)} {:upvalue-count 0 :arity 1 :constants ("dict?" "has-key?" "vm-code") :bytecode (16 0 52 0 0 1 6 33 10 0 5 16 0 1 2 0 52 1 0 2 50)} {:upvalue-count 0 :arity 3 :constants ("vm-closure?" "vm-push-frame" "=" "type-of" "lambda" "component" "island" "vm-push" "cek-call" "callable?" "apply" "error" "str" "VM: not callable: ") :bytecode (20 0 0 16 1 48 1 33 14 0 20 1 0 16 0 16 1 16 2 49 3 32 115 0 16 1 52 3 0 1 1 4 0 52 2 0 2 6 34 32 0 5 16 1 52 3 0 1 1 5 0 52 2 0 2 6 34 14 0 5 16 1 52 3 0 1 1 6 0 52 2 0 2 33 18 0 20 7 0 16 0 16 1 16 2 52 8 0 2 49 2 32 45 0 20 9 0 16 1 48 1 33 18 0 20 7 0 16 0 16 1 16 2 52 10 0 2 49 2 32 17 0 1 13 0 16 1 52 3 0 1 52 12 0 2 52 11 0 1 50)} {:upvalue-count 0 :arity 3 :constants ("Read a local variable — check shared cells first, then stack." "get" "local-cells" "str" "has-key?" "uv-get" "vm-stack-get" "stack" "+" "base") :bytecode (1 0 0 5 16 1 1 2 0 52 1 0 2 17 3 16 2 52 3 0 1 17 4 16 3 16 4 52 4 0 2 33 16 0 20 5 0 16 3 16 4 52 1 0 2 49 1 32 28 0 16 0 1 7 0 52 1 0 2 16 1 1 9 0 52 1 0 2 16 2 52 8 0 2 52 6 0 2 50)} {:upvalue-count 0 :arity 4 :constants ("Write a local variable — to shared cell if captured, else to stack." "get" "local-cells" "str" "has-key?" "uv-set!" "vm-stack-set!" "stack" "+" "base") :bytecode (1 0 0 5 16 1 1 2 0 52 1 0 2 17 4 16 2 52 3 0 1 17 5 16 4 16 5 52 4 0 2 33 18 0 20 5 0 16 4 16 5 52 1 0 2 16 3 49 2 32 30 0 16 0 1 7 0 52 1 0 2 16 1 1 9 0 52 1 0 2 16 2 52 8 0 2 16 3 52 6 0 3 50)} {:upvalue-count 0 :arity 2 :constants ("uv-get" "nth" "get" "closure" "vm-upvalues") :bytecode (20 0 0 16 0 1 3 0 52 2 0 2 1 4 0 52 2 0 2 16 1 52 1 0 2 49 1 50)} {:upvalue-count 0 :arity 3 :constants ("uv-set!" "nth" "get" "closure" "vm-upvalues") :bytecode (20 0 0 16 0 1 3 0 52 2 0 2 1 4 0 52 2 0 2 16 1 52 1 0 2 16 2 49 2 50)} {:upvalue-count 0 :arity 1 :constants ("get" "ip") :bytecode (16 0 1 1 0 52 0 0 2 50)} {:upvalue-count 0 :arity 2 :constants ("dict-set!" "ip") :bytecode (16 0 1 1 0 16 1 52 0 0 3 50)} {:upvalue-count 0 :arity 1 :constants ("get" "base") :bytecode (16 0 1 1 0 52 0 0 2 50)} {:upvalue-count 0 :arity 1 :constants ("get" "closure") :bytecode (16 0 1 1 0 52 0 0 2 50)} {:upvalue-count 0 :arity 1 :constants ("get" "vm-code") :bytecode (16 0 1 1 0 52 0 0 2 50)} {:upvalue-count 0 :arity 1 :constants ("get" "vm-upvalues") :bytecode (16 0 1 1 0 52 0 0 2 50)} {:upvalue-count 0 :arity 1 :constants ("get" "closure-env") :bytecode (16 0 1 1 0 52 0 0 2 50)} {:upvalue-count 0 :arity 1 :constants ("get" "vc-bytecode") :bytecode (16 0 1 1 0 52 0 0 2 50)} {:upvalue-count 0 :arity 1 :constants ("get" "vc-constants") :bytecode (16 0 1 1 0 52 0 0 2 50)} {:upvalue-count 0 :arity 1 :constants ("get" "vc-locals") :bytecode (16 0 1 1 0 52 0 0 2 50)} {:upvalue-count 0 :arity 1 :constants ("get" "sp") :bytecode (16 0 1 1 0 52 0 0 2 50)} {:upvalue-count 0 :arity 2 :constants ("dict-set!" "sp") :bytecode (16 0 1 1 0 16 1 52 0 0 3 50)} {:upvalue-count 0 :arity 1 :constants ("get" "stack") :bytecode (16 0 1 1 0 52 0 0 2 50)} {:upvalue-count 0 :arity 2 :constants ("dict-set!" "stack") :bytecode (16 0 1 1 0 16 1 52 0 0 3 50)} {:upvalue-count 0 :arity 1 :constants ("get" "frames") :bytecode (16 0 1 1 0 52 0 0 2 50)} {:upvalue-count 0 :arity 2 :constants ("dict-set!" "frames") :bytecode (16 0 1 1 0 16 1 52 0 0 3 50)} {:upvalue-count 0 :arity 1 :constants ("get" "globals") :bytecode (16 0 1 1 0 52 0 0 2 50)} {:upvalue-count 0 :arity 2 :constants ("list" 0 {:upvalue-count 5 :arity 0 :constants ("<" "cons" "vm-pop" "+" 1) :bytecode (18 0 18 1 52 0 0 2 33 35 0 20 2 0 18 3 48 1 18 2 52 1 0 2 19 2 5 18 0 1 4 0 52 3 0 2 19 0 5 18 4 49 0 32 1 0 2 50)}) :bytecode (52 0 0 0 17 2 1 1 0 17 3 51 2 0 1 3 1 1 1 2 1 0 1 4 17 4 5 16 4 48 0 5 16 2 50)} {:upvalue-count 0 :arity 2 :constants (0 {:upvalue-count 4 :arity 0 :constants ("<" "vm-push" "+" 1) :bytecode (18 0 18 1 52 0 0 2 33 28 0 20 1 0 18 2 2 48 2 5 18 0 1 3 0 52 2 0 2 19 0 5 18 3 49 0 32 1 0 2 50)}) :bytecode (1 0 0 17 2 51 1 0 1 2 1 1 1 0 1 3 17 3 5 16 3 49 0 50)} {:upvalue-count 0 :arity 2 :constants (0 {:upvalue-count 5 :arity 0 :constants ("<" "vm-pop" "dict-set!" "+" 1) :bytecode (18 0 18 1 52 0 0 2 33 48 0 20 1 0 18 2 48 1 17 0 20 1 0 18 2 48 1 17 1 18 3 16 1 16 0 52 2 0 3 5 18 0 1 4 0 52 3 0 2 19 0 5 18 4 49 0 32 1 0 2 50)}) :bytecode (65 0 0 17 2 1 0 0 17 3 51 1 0 1 3 1 1 1 0 1 2 1 4 17 4 5 16 4 48 0 5 16 2 50)} {:upvalue-count 0 :arity 3 :constants ("Look up a global: globals table → closure env → primitives → HO wrappers" "get" "globals" "has-key?" "closure" "closure-env" "nil?" "cek-try" {:upvalue-count 1 :arity 0 :constants ("get-primitive") :bytecode (18 0 52 0 0 1 50)} {:upvalue-count 2 :arity 1 :constants ("vm-resolve-ho-form") :bytecode (20 0 0 18 0 18 1 49 2 50)} "env-walk") :bytecode (1 0 0 5 16 0 1 2 0 52 1 0 2 17 3 16 3 16 2 52 3 0 2 33 11 0 16 3 16 2 52 1 0 2 32 87 0 16 1 1 4 0 52 1 0 2 1 5 0 52 1 0 2 17 4 16 4 52 6 0 1 33 19 0 51 8 0 1 2 51 9 0 1 0 1 2 52 7 0 2 32 41 0 20 10 0 16 4 16 2 48 2 17 5 16 5 52 6 0 1 33 19 0 51 8 0 1 2 51 9 0 1 0 1 2 52 7 0 2 32 2 0 16 5 50)} {:upvalue-count 0 :arity 2 :constants ("=" "for-each" {:upvalue-count 1 :arity 2 :constants ("for-each" {:upvalue-count 2 :arity 1 :constants ("vm-call-external" "list") :bytecode (20 0 0 18 0 18 1 16 0 52 1 0 1 49 3 50)}) :bytecode (51 1 0 0 0 1 0 16 1 52 0 0 2 50)} "map" {:upvalue-count 1 :arity 2 :constants ("map" {:upvalue-count 2 :arity 1 :constants ("vm-call-external" "list") :bytecode (20 0 0 18 0 18 1 16 0 52 1 0 1 49 3 50)}) :bytecode (51 1 0 0 0 1 0 16 1 52 0 0 2 50)} "map-indexed" {:upvalue-count 1 :arity 2 :constants ("map-indexed" {:upvalue-count 2 :arity 2 :constants ("vm-call-external" "list") :bytecode (20 0 0 18 0 18 1 16 0 16 1 52 1 0 2 49 3 50)}) :bytecode (51 1 0 0 0 1 0 16 1 52 0 0 2 50)} "filter" {:upvalue-count 1 :arity 2 :constants ("filter" {:upvalue-count 2 :arity 1 :constants ("vm-call-external" "list") :bytecode (20 0 0 18 0 18 1 16 0 52 1 0 1 49 3 50)}) :bytecode (51 1 0 0 0 1 0 16 1 52 0 0 2 50)} "reduce" {:upvalue-count 1 :arity 3 :constants ("reduce" {:upvalue-count 2 :arity 2 :constants ("vm-call-external" "list") :bytecode (20 0 0 18 0 18 1 16 0 16 1 52 1 0 2 49 3 50)}) :bytecode (51 1 0 0 0 1 0 16 1 16 2 52 0 0 3 50)} "some" {:upvalue-count 1 :arity 2 :constants ("some" {:upvalue-count 2 :arity 1 :constants ("vm-call-external" "list") :bytecode (20 0 0 18 0 18 1 16 0 52 1 0 1 49 3 50)}) :bytecode (51 1 0 0 0 1 0 16 1 52 0 0 2 50)} "every?" {:upvalue-count 1 :arity 2 :constants ("every?" {:upvalue-count 2 :arity 1 :constants ("vm-call-external" "list") :bytecode (20 0 0 18 0 18 1 16 0 52 1 0 1 49 3 50)}) :bytecode (51 1 0 0 0 1 0 16 1 52 0 0 2 50)} "error" "str" "VM undefined: ") :bytecode (16 1 1 1 0 52 0 0 2 33 8 0 51 2 0 1 0 32 133 0 16 1 1 3 0 52 0 0 2 33 8 0 51 4 0 1 0 32 113 0 16 1 1 5 0 52 0 0 2 33 8 0 51 6 0 1 0 32 93 0 16 1 1 7 0 52 0 0 2 33 8 0 51 8 0 1 0 32 73 0 16 1 1 9 0 52 0 0 2 33 8 0 51 10 0 1 0 32 53 0 16 1 1 11 0 52 0 0 2 33 8 0 51 12 0 1 0 32 33 0 16 1 1 13 0 52 0 0 2 33 8 0 51 14 0 1 0 32 13 0 1 17 0 16 1 52 16 0 2 52 15 0 1 50)} {:upvalue-count 0 :arity 3 :constants ("vm-closure?" "vm-call-closure" "vm-globals-ref" "cek-call") :bytecode (20 0 0 16 1 48 1 33 19 0 20 1 0 16 1 16 2 20 2 0 16 0 48 1 49 3 32 8 0 16 1 16 2 52 3 0 2 50)} {:upvalue-count 0 :arity 4 :constants ("Set a global: write to closure env if name exists there, else globals." "get" "closure" "vm-closure-env" "not" "nil?" "env-walk-set!" "dict-set!" "globals") :bytecode (1 0 0 5 16 1 1 2 0 52 1 0 2 1 3 0 52 1 0 2 17 4 4 17 5 16 4 52 5 0 1 52 4 0 1 33 16 0 20 6 0 16 4 16 2 16 3 48 3 17 5 32 1 0 2 5 16 5 52 4 0 1 33 20 0 16 0 1 8 0 52 1 0 2 16 2 16 3 52 7 0 3 32 1 0 2 50)} {:upvalue-count 0 :arity 2 :constants ("nil?" "env-has?" "env-get" "env-parent" "env-walk") :bytecode (16 0 52 0 0 1 33 4 0 2 32 53 0 16 0 16 1 52 1 0 2 33 11 0 16 0 16 1 52 2 0 2 32 31 0 20 3 0 16 0 48 1 17 2 16 2 52 0 0 1 33 4 0 2 32 9 0 20 4 0 16 2 16 1 49 2 50)} {:upvalue-count 0 :arity 3 :constants ("nil?" "env-has?" "env-set!" "env-parent" "env-walk-set!") :bytecode (16 0 52 0 0 1 33 4 0 4 32 59 0 16 0 16 1 52 1 0 2 33 15 0 16 0 16 1 16 2 52 2 0 3 5 3 32 33 0 20 3 0 16 0 48 1 17 3 16 3 52 0 0 1 33 4 0 4 32 11 0 20 4 0 16 3 16 1 16 2 49 3 50)} {:upvalue-count 0 :arity 3 :constants ("Create a closure from a code constant. Reads upvalue descriptors\n from the bytecode stream and captures values from the enclosing frame." "code-from-value" "dict?" "get" "upvalue-count" "nil?" 0 "list" {:upvalue-count 6 :arity 0 :constants ("<" "frame-read-u8" "=" 1 "get" "local-cells" "str" "has-key?" "make-upvalue-cell" "vm-stack-get" "stack" "+" "base" "dict-set!" "nth" "closure" "vm-upvalues" "append!") :bytecode (18 0 18 1 52 0 0 2 33 174 0 20 1 0 18 2 48 1 17 0 20 1 0 18 2 48 1 17 1 16 0 1 3 0 52 2 0 2 33 92 0 18 2 1 5 0 52 4 0 2 17 3 16 1 52 6 0 1 17 4 16 3 16 4 52 7 0 2 33 11 0 16 3 16 4 52 4 0 2 32 48 0 20 8 0 18 3 1 10 0 52 4 0 2 18 2 1 12 0 52 4 0 2 16 1 52 11 0 2 52 9 0 2 48 1 17 5 16 3 16 4 16 5 52 13 0 3 5 16 5 32 22 0 18 2 1 15 0 52 4 0 2 1 16 0 52 4 0 2 16 1 52 14 0 2 17 2 18 4 16 2 52 17 0 2 5 18 0 1 3 0 52 11 0 2 19 0 5 18 5 49 0 32 1 0 2 50)} "make-vm-closure" "globals") :bytecode (1 0 0 5 20 1 0 16 2 48 1 17 3 16 2 52 2 0 1 33 31 0 16 2 1 4 0 52 3 0 2 17 5 16 5 52 5 0 1 33 6 0 1 6 0 32 2 0 16 5 32 3 0 1 6 0 17 4 52 7 0 0 17 6 1 6 0 17 7 51 8 0 1 7 1 4 1 1 1 0 1 6 1 8 17 8 5 16 8 48 0 5 16 6 17 5 20 9 0 16 3 16 5 2 16 0 1 10 0 52 3 0 2 2 49 5 50)} {:upvalue-count 0 :arity 2 :constants ("Execute bytecode until all frames are consumed." {:upvalue-count 2 :arity 0 :constants ("not" "empty?" "vm-frames" "first" "rest" "code-bytecode" "closure-code" "frame-closure" "code-constants" ">=" "frame-ip" "len" "vm-set-frames!" "list" "vm-step") :bytecode (20 2 0 18 0 48 1 52 1 0 1 52 0 0 1 33 121 0 20 2 0 18 0 48 1 52 3 0 1 17 0 20 2 0 18 0 48 1 52 4 0 1 17 1 20 5 0 20 6 0 20 7 0 16 0 48 1 48 1 48 1 17 2 20 8 0 20 6 0 20 7 0 16 0 48 1 48 1 48 1 17 3 20 10 0 16 0 48 1 16 2 52 11 0 1 52 9 0 2 33 14 0 20 12 0 18 0 52 13 0 0 49 2 32 20 0 20 14 0 18 0 16 0 16 1 16 2 16 3 48 5 5 18 1 49 0 32 1 0 2 50)}) :bytecode (1 0 0 5 51 1 0 1 0 1 1 17 1 5 16 1 49 0 50)} {:upvalue-count 0 :arity 5 :constants ("frame-read-u8" "=" 1 "frame-read-u16" "vm-push" "nth" 2 3 4 5 "vm-pop" 6 "vm-peek" 16 "frame-local-get" 17 "frame-local-set" 18 "frame-upvalue-get" 19 "frame-upvalue-set" 20 "vm-global-get" 21 "vm-global-set" 32 "frame-read-i16" "frame-set-ip!" "+" "frame-ip" 33 "not" 34 48 "collect-n-from-stack" "vm-call" 49 "vm-set-frames!" "vm-set-sp!" "frame-base" 50 51 "vm-create-closure" 52 "call-primitive" 64 65 "collect-n-pairs" 144 "apply" "str" 128 "dict-set!" "vm-globals-ref" 160 161 "-" 162 "*" 163 "/" 164 165 "<" 166 ">" 167 168 "len" 169 "first" 170 "rest" 171 172 "cons" 173 0 174 "inc" 175 "dec" 112 "error" "VM: IO suspension (OP_PERFORM) — request: " "VM: unknown opcode ") :bytecode (20 0 0 16 1 48 1 17 5 16 5 1 2 0 52 1 0 2 33 27 0 20 3 0 16 1 48 1 17 6 20 4 0 16 0 16 4 16 6 52 5 0 2 49 2 32 251 6 16 5 1 6 0 52 1 0 2 33 11 0 20 4 0 16 0 2 49 2 32 228 6 16 5 1 7 0 52 1 0 2 33 11 0 20 4 0 16 0 3 49 2 32 205 6 16 5 1 8 0 52 1 0 2 33 11 0 20 4 0 16 0 4 49 2 32 182 6 16 5 1 9 0 52 1 0 2 33 10 0 20 10 0 16 0 49 1 32 160 6 16 5 1 11 0 52 1 0 2 33 17 0 20 4 0 16 0 20 12 0 16 0 48 1 49 2 32 131 6 16 5 1 13 0 52 1 0 2 33 30 0 20 0 0 16 1 48 1 17 6 20 4 0 16 0 20 14 0 16 0 16 1 16 6 48 3 49 2 32 89 6 16 5 1 15 0 52 1 0 2 33 30 0 20 0 0 16 1 48 1 17 6 20 16 0 16 0 16 1 16 6 20 12 0 16 0 48 1 49 4 32 47 6 16 5 1 17 0 52 1 0 2 33 28 0 20 0 0 16 1 48 1 17 6 20 4 0 16 0 20 18 0 16 1 16 6 48 2 49 2 32 7 6 16 5 1 19 0 52 1 0 2 33 28 0 20 0 0 16 1 48 1 17 6 20 20 0 16 1 16 6 20 12 0 16 0 48 1 49 3 32 223 5 16 5 1 21 0 52 1 0 2 33 40 0 20 3 0 16 1 48 1 17 6 16 4 16 6 52 5 0 2 17 7 20 4 0 16 0 20 22 0 16 0 16 1 16 7 48 3 49 2 32 171 5 16 5 1 23 0 52 1 0 2 33 40 0 20 3 0 16 1 48 1 17 6 16 4 16 6 52 5 0 2 17 7 20 24 0 16 0 16 1 16 7 20 12 0 16 0 48 1 49 4 32 119 5 16 5 1 25 0 52 1 0 2 33 32 0 20 26 0 16 1 48 1 17 6 20 27 0 16 1 20 29 0 16 1 48 1 16 6 52 28 0 2 49 2 32 75 5 16 5 1 30 0 52 1 0 2 33 54 0 20 26 0 16 1 48 1 17 6 20 10 0 16 0 48 1 17 7 16 7 52 31 0 1 33 23 0 20 27 0 16 1 20 29 0 16 1 48 1 16 6 52 28 0 2 49 2 32 1 0 2 32 9 5 16 5 1 32 0 52 1 0 2 33 50 0 20 26 0 16 1 48 1 17 6 20 10 0 16 0 48 1 17 7 16 7 33 23 0 20 27 0 16 1 20 29 0 16 1 48 1 16 6 52 28 0 2 49 2 32 1 0 2 32 203 4 16 5 1 33 0 52 1 0 2 33 43 0 20 0 0 16 1 48 1 17 6 20 34 0 16 0 16 6 48 2 17 7 20 10 0 16 0 48 1 17 8 20 35 0 16 0 16 8 16 7 49 3 32 148 4 16 5 1 36 0 52 1 0 2 33 68 0 20 0 0 16 1 48 1 17 6 20 34 0 16 0 16 6 48 2 17 7 20 10 0 16 0 48 1 17 8 20 37 0 16 0 16 2 48 2 5 20 38 0 16 0 20 39 0 16 1 48 1 48 2 5 20 35 0 16 0 16 8 16 7 49 3 32 68 4 16 5 1 40 0 52 1 0 2 33 46 0 20 10 0 16 0 48 1 17 6 20 37 0 16 0 16 2 48 2 5 20 38 0 16 0 20 39 0 16 1 48 1 48 2 5 20 4 0 16 0 16 6 49 2 32 10 4 16 5 1 41 0 52 1 0 2 33 44 0 20 3 0 16 1 48 1 17 6 16 4 16 6 52 5 0 2 17 7 20 42 0 16 0 16 1 16 7 48 3 17 8 20 4 0 16 0 16 8 49 2 32 210 3 16 5 1 43 0 52 1 0 2 33 57 0 20 3 0 16 1 48 1 17 6 20 0 0 16 1 48 1 17 7 16 4 16 6 52 5 0 2 17 8 20 34 0 16 0 16 7 48 2 17 9 20 4 0 16 0 16 8 16 9 52 44 0 2 49 2 32 141 3 16 5 1 45 0 52 1 0 2 33 32 0 20 3 0 16 1 48 1 17 6 20 34 0 16 0 16 6 48 2 17 7 20 4 0 16 0 16 7 49 2 32 97 3 16 5 1 46 0 52 1 0 2 33 32 0 20 3 0 16 1 48 1 17 6 20 47 0 16 0 16 6 48 2 17 7 20 4 0 16 0 16 7 49 2 32 53 3 16 5 1 48 0 52 1 0 2 33 39 0 20 0 0 16 1 48 1 17 6 20 34 0 16 0 16 6 48 2 17 7 20 4 0 16 0 20 50 0 16 7 52 49 0 2 49 2 32 2 3 16 5 1 51 0 52 1 0 2 33 42 0 20 3 0 16 1 48 1 17 6 16 4 16 6 52 5 0 2 17 7 20 53 0 16 0 48 1 16 7 20 12 0 16 0 48 1 52 52 0 3 32 204 2 16 5 1 54 0 52 1 0 2 33 36 0 20 10 0 16 0 48 1 17 6 20 10 0 16 0 48 1 17 7 20 4 0 16 0 16 7 16 6 52 28 0 2 49 2 32 156 2 16 5 1 55 0 52 1 0 2 33 36 0 20 10 0 16 0 48 1 17 6 20 10 0 16 0 48 1 17 7 20 4 0 16 0 16 7 16 6 52 56 0 2 49 2 32 108 2 16 5 1 57 0 52 1 0 2 33 36 0 20 10 0 16 0 48 1 17 6 20 10 0 16 0 48 1 17 7 20 4 0 16 0 16 7 16 6 52 58 0 2 49 2 32 60 2 16 5 1 59 0 52 1 0 2 33 36 0 20 10 0 16 0 48 1 17 6 20 10 0 16 0 48 1 17 7 20 4 0 16 0 16 7 16 6 52 60 0 2 49 2 32 12 2 16 5 1 61 0 52 1 0 2 33 36 0 20 10 0 16 0 48 1 17 6 20 10 0 16 0 48 1 17 7 20 4 0 16 0 16 7 16 6 52 1 0 2 49 2 32 220 1 16 5 1 62 0 52 1 0 2 33 36 0 20 10 0 16 0 48 1 17 6 20 10 0 16 0 48 1 17 7 20 4 0 16 0 16 7 16 6 52 63 0 2 49 2 32 172 1 16 5 1 64 0 52 1 0 2 33 36 0 20 10 0 16 0 48 1 17 6 20 10 0 16 0 48 1 17 7 20 4 0 16 0 16 7 16 6 52 65 0 2 49 2 32 124 1 16 5 1 66 0 52 1 0 2 33 21 0 20 4 0 16 0 20 10 0 16 0 48 1 52 31 0 1 49 2 32 91 1 16 5 1 67 0 52 1 0 2 33 21 0 20 4 0 16 0 20 10 0 16 0 48 1 52 68 0 1 49 2 32 58 1 16 5 1 69 0 52 1 0 2 33 21 0 20 4 0 16 0 20 10 0 16 0 48 1 52 70 0 1 49 2 32 25 1 16 5 1 71 0 52 1 0 2 33 21 0 20 4 0 16 0 20 10 0 16 0 48 1 52 72 0 1 49 2 32 248 0 16 5 1 73 0 52 1 0 2 33 36 0 20 10 0 16 0 48 1 17 6 20 10 0 16 0 48 1 17 7 20 4 0 16 0 16 7 16 6 52 5 0 2 49 2 32 200 0 16 5 1 74 0 52 1 0 2 33 36 0 20 10 0 16 0 48 1 17 6 20 10 0 16 0 48 1 17 7 20 4 0 16 0 16 7 16 6 52 75 0 2 49 2 32 152 0 16 5 1 76 0 52 1 0 2 33 24 0 20 4 0 16 0 1 77 0 20 10 0 16 0 48 1 52 56 0 2 49 2 32 116 0 16 5 1 78 0 52 1 0 2 33 21 0 20 4 0 16 0 20 10 0 16 0 48 1 52 79 0 1 49 2 32 83 0 16 5 1 80 0 52 1 0 2 33 21 0 20 4 0 16 0 20 10 0 16 0 48 1 52 81 0 1 49 2 32 50 0 16 5 1 82 0 52 1 0 2 33 25 0 20 10 0 16 0 48 1 17 6 1 84 0 16 6 52 50 0 2 52 83 0 1 32 13 0 1 85 0 16 5 52 50 0 2 52 83 0 1 50)} {:upvalue-count 0 :arity 3 :constants ("make-vm" "vm-push-frame" "vm-run" "vm-pop") :bytecode (20 0 0 16 2 48 1 17 3 20 1 0 16 3 16 0 16 1 48 3 5 20 2 0 16 3 48 1 5 20 3 0 16 3 49 1 50)} {:upvalue-count 0 :arity 2 :constants ("make-vm-closure" "list" "module" "make-vm" "make-vm-frame" 0 "pad-n-nils" "code-locals" "vm-set-frames!" "vm-run" "vm-pop") :bytecode (20 0 0 16 0 52 1 0 0 1 2 0 16 1 2 48 5 17 2 20 3 0 16 1 48 1 17 3 20 4 0 16 2 1 5 0 48 2 17 4 20 6 0 16 3 20 7 0 16 0 48 1 48 2 5 20 8 0 16 3 16 4 52 1 0 1 48 2 5 20 9 0 16 3 48 1 5 20 10 0 16 3 49 1 50)}) :bytecode (20 0 0 20 1 0 20 2 0 48 1 20 3 0 20 4 0 20 5 0 20 6 0 20 7 0 20 8 0 20 9 0 20 10 0 20 11 0 20 12 0 20 13 0 20 14 0 20 15 0 20 16 0 20 17 0 20 18 0 20 19 0 20 20 0 20 21 0 20 22 0 20 23 0 20 24 0 20 25 0 20 26 0 20 27 0 20 28 0 20 29 0 20 30 0 20 31 0 20 32 0 20 33 0 20 34 0 20 35 0 20 36 0 20 37 0 20 38 0 20 39 0 20 40 0 20 41 0 20 42 0 20 43 0 20 44 0 20 45 0 20 46 0 20 47 0 20 48 0 20 49 0 20 50 0 20 51 0 20 52 0 20 53 0 20 54 0 20 55 0 48 52 51 56 0 128 4 0 5 51 57 0 128 5 0 5 51 58 0 128 6 0 5 51 59 0 128 7 0 5 51 60 0 128 8 0 5 51 61 0 128 9 0 5 51 62 0 128 10 0 5 51 63 0 128 11 0 5 51 64 0 128 12 0 5 51 65 0 128 13 0 5 51 66 0 128 14 0 5 51 67 0 128 15 0 5 51 68 0 128 16 0 5 51 69 0 128 17 0 5 51 70 0 128 18 0 5 51 71 0 128 19 0 5 51 72 0 128 20 0 5 51 73 0 128 21 0 5 51 74 0 128 22 0 5 51 75 0 128 23 0 5 51 76 0 128 24 0 5 51 77 0 128 25 0 5 51 78 0 128 26 0 5 51 79 0 128 27 0 5 51 80 0 128 28 0 5 51 81 0 128 29 0 5 51 82 0 128 30 0 5 51 83 0 128 31 0 5 51 84 0 128 32 0 5 51 85 0 128 33 0 5 51 86 0 128 34 0 5 51 87 0 128 35 0 5 51 88 0 128 36 0 5 51 89 0 128 37 0 5 51 90 0 128 38 0 5 51 91 0 128 39 0 5 51 92 0 128 40 0 5 51 93 0 128 41 0 5 51 94 0 128 42 0 5 51 95 0 128 43 0 5 51 96 0 128 44 0 5 51 97 0 128 45 0 5 51 98 0 128 46 0 5 51 99 0 128 47 0 5 51 100 0 128 48 0 5 51 101 0 128 49 0 5 51 102 0 128 50 0 5 51 103 0 128 51 0 5 51 104 0 128 52 0 5 51 105 0 128 53 0 5 51 106 0 128 54 0 5 51 107 0 128 55 0 48 3 50)))