Bytecode modules are now serialized as s-expressions (.sxbc) in addition to JSON (.sxbc.json). The .sxbc format is the canonical representation — content-addressable, parseable by the SX parser, and suitable for CID referencing. Annotation layers (source maps, variable names, tests, docs) can reference the bytecode CID without polluting the bytecode itself. Format: (sxbc version hash (code :arity N :bytecode (...) :constants (...))) The browser loader tries .sxbc first (via load-sxbc kernel primitive), falls back to .sxbc.json. Caddy needs .sxbc MIME type to serve the new format (currently 404s, JSON fallback works). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
484 lines
20 KiB
Plaintext
484 lines
20 KiB
Plaintext
(sxbc 1 "3a8a55b66b6597f5"
|
|
(code
|
|
:bytecode (51 1 0 128 0 0 5 51 3 0 128 2 0 5 51 5 0 128 4 0 5 51 7 0 128 6 0 5 51 9 0 128 8 0 5 51 11 0 128 10 0 5 51 13 0 128 12 0 5 51 15 0 128 14 0 5 51 17 0 128 16 0 5 51 19 0 128 18 0 5 51 21 0 128 20 0 5 51 23 0 128 22 0 5 51 25 0 128 24 0 5 51 27 0 128 26 0 5 51 29 0 128 28 0 5 51 31 0 128 30 0 5 51 33 0 128 32 0 5 51 35 0 128 34 0 5 51 37 0 128 36 0 5 51 39 0 128 38 0 5 51 41 0 128 40 0 5 51 43 0 128 42 0 5 51 45 0 128 44 0 5 51 47 0 128 46 0 5 51 49 0 128 48 0 5 51 51 0 128 50 0 5 51 53 0 128 52 0 5 51 55 0 128 54 0 5 51 57 0 128 56 0 5 51 59 0 128 58 0 50)
|
|
:constants (
|
|
"make-upvalue-cell"
|
|
(code :arity 1
|
|
:bytecode (1 0 0 16 0 65 1 0 50)
|
|
:constants (
|
|
"uv-value"))
|
|
"uv-get"
|
|
(code :arity 1
|
|
:bytecode (16 0 1 1 0 52 0 0 2 50)
|
|
:constants (
|
|
"get"
|
|
"uv-value"))
|
|
"uv-set!"
|
|
(code :arity 2
|
|
:bytecode (16 0 1 1 0 16 1 52 0 0 3 50)
|
|
:constants (
|
|
"dict-set!"
|
|
"uv-value"))
|
|
"make-vm-code"
|
|
(code :arity 4
|
|
: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)
|
|
:constants (
|
|
"vc-bytecode"
|
|
"vc-locals"
|
|
"vc-arity"
|
|
"vc-constants"))
|
|
"make-vm-closure"
|
|
(code :arity 5
|
|
: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)
|
|
:constants (
|
|
"vm-globals"
|
|
"vm-upvalues"
|
|
"vm-name"
|
|
"vm-code"
|
|
"vm-closure-env"))
|
|
"make-vm-frame"
|
|
(code :arity 2
|
|
: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)
|
|
:constants (
|
|
"ip"
|
|
0
|
|
"closure"
|
|
"base"
|
|
"local-cells"))
|
|
"make-vm"
|
|
(code :arity 1
|
|
: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)
|
|
:constants (
|
|
"sp"
|
|
0
|
|
"frames"
|
|
"list"
|
|
"stack"
|
|
"make-vm-stack"
|
|
4096
|
|
"globals"))
|
|
"vm-push"
|
|
(code :arity 2
|
|
: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)
|
|
:constants (
|
|
"get"
|
|
"sp"
|
|
"stack"
|
|
">="
|
|
"vm-stack-length"
|
|
"make-vm-stack"
|
|
"*"
|
|
2
|
|
"vm-stack-copy!"
|
|
"dict-set!"
|
|
"vm-stack-set!"
|
|
"+"
|
|
1))
|
|
"vm-pop"
|
|
(code :arity 1
|
|
: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)
|
|
:constants (
|
|
"-"
|
|
"get"
|
|
"sp"
|
|
1
|
|
"dict-set!"
|
|
"vm-stack-get"
|
|
"stack"))
|
|
"vm-peek"
|
|
(code :arity 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)
|
|
:constants (
|
|
"vm-stack-get"
|
|
"get"
|
|
"stack"
|
|
"-"
|
|
"sp"
|
|
1))
|
|
"frame-read-u8"
|
|
(code :arity 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)
|
|
:constants (
|
|
"get"
|
|
"ip"
|
|
"closure"
|
|
"vm-code"
|
|
"vc-bytecode"
|
|
"nth"
|
|
"dict-set!"
|
|
"+"
|
|
1))
|
|
"frame-read-u16"
|
|
(code :arity 1
|
|
: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)
|
|
:constants (
|
|
"frame-read-u8"
|
|
"+"
|
|
"*"
|
|
256))
|
|
"frame-read-i16"
|
|
(code :arity 1
|
|
: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)
|
|
:constants (
|
|
"frame-read-u16"
|
|
">="
|
|
32768
|
|
"-"
|
|
65536))
|
|
"vm-push-frame"
|
|
(code :arity 3
|
|
: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)
|
|
:constants (
|
|
"make-vm-frame"
|
|
"get"
|
|
"sp"
|
|
"for-each"
|
|
(code :arity 1 :upvalue-count 1
|
|
:bytecode (20 0 0 18 0 16 0 49 2 50)
|
|
:constants (
|
|
"vm-push"))
|
|
"len"
|
|
"vm-code"
|
|
"vc-locals"
|
|
"-"
|
|
">"
|
|
0
|
|
(code :upvalue-count 4
|
|
: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)
|
|
:constants (
|
|
"<"
|
|
"vm-push"
|
|
"+"
|
|
1))
|
|
"dict-set!"
|
|
"frames"
|
|
"cons"))
|
|
"code-from-value"
|
|
(code :arity 1
|
|
: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)
|
|
:constants (
|
|
"Convert a compiler output dict to a vm-code object."
|
|
"not"
|
|
"dict?"
|
|
"make-vm-code"
|
|
0
|
|
16
|
|
"list"
|
|
"get"
|
|
"bytecode"
|
|
"nil?"
|
|
"constants"
|
|
"arity"
|
|
"+"))
|
|
"vm-closure?"
|
|
(code :arity 1
|
|
:bytecode (16 0 52 0 0 1 6 33 10 0 5 16 0 1 2 0 52 1 0 2 50)
|
|
:constants (
|
|
"dict?"
|
|
"has-key?"
|
|
"vm-code"))
|
|
"vm-call"
|
|
(code :arity 3
|
|
:bytecode (20 0 0 16 1 48 1 33 14 0 20 1 0 16 0 16 1 16 2 49 3 32 116 0 20 2 0 16 1 48 1 33 18 0 20 3 0 16 0 16 1 16 2 52 4 0 2 49 2 32 88 0 16 1 52 6 0 1 1 7 0 52 5 0 2 6 34 32 0 5 16 1 52 6 0 1 1 8 0 52 5 0 2 6 34 14 0 5 16 1 52 6 0 1 1 9 0 52 5 0 2 33 19 0 20 3 0 16 0 20 10 0 16 1 16 2 48 2 49 2 32 17 0 1 13 0 16 1 52 6 0 1 52 12 0 2 52 11 0 1 50)
|
|
:constants (
|
|
"vm-closure?"
|
|
"vm-push-frame"
|
|
"callable?"
|
|
"vm-push"
|
|
"apply"
|
|
"="
|
|
"type-of"
|
|
"lambda"
|
|
"component"
|
|
"island"
|
|
"cek-call"
|
|
"error"
|
|
"str"
|
|
"VM: not callable: "))
|
|
"frame-local-get"
|
|
(code :arity 3
|
|
: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)
|
|
:constants (
|
|
"Read a local variable — check shared cells first, then stack."
|
|
"get"
|
|
"local-cells"
|
|
"str"
|
|
"has-key?"
|
|
"uv-get"
|
|
"vm-stack-get"
|
|
"stack"
|
|
"+"
|
|
"base"))
|
|
"frame-local-set"
|
|
(code :arity 4
|
|
: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)
|
|
: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"))
|
|
"frame-upvalue-get"
|
|
(code :arity 2
|
|
: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)
|
|
:constants (
|
|
"uv-get"
|
|
"nth"
|
|
"get"
|
|
"closure"
|
|
"vm-upvalues"))
|
|
"frame-upvalue-set"
|
|
(code :arity 3
|
|
: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)
|
|
:constants (
|
|
"uv-set!"
|
|
"nth"
|
|
"get"
|
|
"closure"
|
|
"vm-upvalues"))
|
|
"vm-global-get"
|
|
(code :arity 3
|
|
: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 67 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 9 0 16 2 52 7 0 1 32 31 0 20 8 0 16 4 16 2 48 2 17 5 16 5 52 6 0 1 33 9 0 16 2 52 7 0 1 32 2 0 16 5 50)
|
|
:constants (
|
|
"Look up a global: globals table → closure env chain → primitives."
|
|
"get"
|
|
"globals"
|
|
"has-key?"
|
|
"closure"
|
|
"vm-closure-env"
|
|
"nil?"
|
|
"get-primitive"
|
|
"env-walk"))
|
|
"vm-global-set"
|
|
(code :arity 4
|
|
: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)
|
|
: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"))
|
|
"env-walk"
|
|
(code :arity 2
|
|
:bytecode (16 0 52 0 0 1 33 4 0 2 32 55 0 20 1 0 16 0 16 1 48 2 33 12 0 20 2 0 16 0 16 1 49 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)
|
|
:constants (
|
|
"nil?"
|
|
"env-has?"
|
|
"env-get"
|
|
"env-parent"
|
|
"env-walk"))
|
|
"env-walk-set!"
|
|
(code :arity 3
|
|
:bytecode (16 0 52 0 0 1 33 4 0 4 32 61 0 20 1 0 16 0 16 1 48 2 33 16 0 20 2 0 16 0 16 1 16 2 48 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)
|
|
:constants (
|
|
"nil?"
|
|
"env-has?"
|
|
"env-set!"
|
|
"env-parent"
|
|
"env-walk-set!"))
|
|
"vm-create-closure"
|
|
(code :arity 3
|
|
: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)
|
|
:constants (
|
|
"Create a closure from a code constant. Reads upvalue descriptors
|
|
from the bytecode stream and captures values from the enclosing frame."
|
|
"code-from-value"
|
|
"dict?"
|
|
"get"
|
|
"upvalue-count"
|
|
"nil?"
|
|
0
|
|
"list"
|
|
(code :upvalue-count 6
|
|
:bytecode (18 0 18 1 52 0 0 2 33 175 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 20 17 0 18 4 16 2 48 2 5 18 0 1 3 0 52 11 0 2 19 0 5 18 5 49 0 32 1 0 2 50)
|
|
: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!"))
|
|
"make-vm-closure"
|
|
"globals"))
|
|
"vm-run"
|
|
(code :arity 2
|
|
:bytecode (1 0 0 5 51 1 0 1 0 1 1 17 1 5 16 1 49 0 50)
|
|
:constants (
|
|
"Execute bytecode until all frames are exhausted.
|
|
VmClosure calls push new frames; the loop picks them up.
|
|
OP_TAIL_CALL + VmClosure = true TCO: drop frame, push new, loop."
|
|
(code :upvalue-count 2
|
|
:bytecode (18 0 1 3 0 52 2 0 2 52 1 0 1 52 0 0 1 33 141 0 18 0 1 3 0 52 2 0 2 52 4 0 1 17 0 18 0 1 3 0 52 2 0 2 52 5 0 1 17 1 16 0 1 6 0 52 2 0 2 1 7 0 52 2 0 2 1 8 0 52 2 0 2 17 2 16 0 1 6 0 52 2 0 2 1 7 0 52 2 0 2 1 9 0 52 2 0 2 17 3 16 0 1 11 0 52 2 0 2 16 2 52 12 0 1 52 10 0 2 33 16 0 18 0 1 3 0 52 14 0 0 52 13 0 3 32 20 0 20 15 0 18 0 16 0 16 1 16 2 16 3 48 5 5 18 1 49 0 32 1 0 2 50)
|
|
:constants (
|
|
"not"
|
|
"empty?"
|
|
"get"
|
|
"frames"
|
|
"first"
|
|
"rest"
|
|
"closure"
|
|
"vm-code"
|
|
"vc-bytecode"
|
|
"vc-constants"
|
|
">="
|
|
"ip"
|
|
"len"
|
|
"dict-set!"
|
|
"list"
|
|
"vm-step"))))
|
|
"vm-step"
|
|
(code :arity 5
|
|
: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 109 7 16 5 1 6 0 52 1 0 2 33 11 0 20 4 0 16 0 2 49 2 32 86 7 16 5 1 7 0 52 1 0 2 33 11 0 20 4 0 16 0 3 49 2 32 63 7 16 5 1 8 0 52 1 0 2 33 11 0 20 4 0 16 0 4 49 2 32 40 7 16 5 1 9 0 52 1 0 2 33 10 0 20 10 0 16 0 49 1 32 18 7 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 245 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 203 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 161 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 121 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 81 6 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 29 6 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 233 5 16 5 1 25 0 52 1 0 2 33 36 0 20 26 0 16 1 48 1 17 6 16 1 1 28 0 16 1 1 28 0 52 30 0 2 16 6 52 29 0 2 52 27 0 3 32 185 5 16 5 1 31 0 52 1 0 2 33 58 0 20 26 0 16 1 48 1 17 6 20 10 0 16 0 48 1 17 7 16 7 52 32 0 1 33 27 0 16 1 1 28 0 16 1 1 28 0 52 30 0 2 16 6 52 29 0 2 52 27 0 3 32 1 0 2 32 115 5 16 5 1 33 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 33 27 0 16 1 1 28 0 16 1 1 28 0 52 30 0 2 16 6 52 29 0 2 52 27 0 3 32 1 0 2 32 49 5 16 5 1 34 0 52 1 0 2 33 64 0 20 0 0 16 1 48 1 17 6 52 35 0 0 17 7 1 36 0 17 8 51 37 0 1 8 1 6 1 7 1 0 1 9 17 9 5 16 9 48 0 5 20 10 0 16 0 48 1 17 10 20 38 0 16 0 16 10 16 7 49 3 32 229 4 16 5 1 39 0 52 1 0 2 33 95 0 20 0 0 16 1 48 1 17 6 52 35 0 0 17 7 1 36 0 17 8 51 37 0 1 8 1 6 1 7 1 0 1 9 17 9 5 16 9 48 0 5 20 10 0 16 0 48 1 17 10 16 0 1 40 0 16 2 52 27 0 3 5 16 0 1 41 0 16 1 1 42 0 52 30 0 2 52 27 0 3 5 20 38 0 16 0 16 10 16 7 49 3 32 122 4 16 5 1 43 0 52 1 0 2 33 52 0 20 10 0 16 0 48 1 17 6 16 0 1 40 0 16 2 52 27 0 3 5 16 0 1 41 0 16 1 1 42 0 52 30 0 2 52 27 0 3 5 20 4 0 16 0 16 6 49 2 32 58 4 16 5 1 44 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 45 0 16 0 16 1 16 7 48 3 17 8 20 4 0 16 0 16 8 49 2 32 2 4 16 5 1 46 0 52 1 0 2 33 78 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 52 35 0 0 17 9 1 36 0 17 10 51 37 0 1 10 1 7 1 9 1 0 1 11 17 11 5 16 11 48 0 5 20 4 0 16 0 16 8 16 9 52 47 0 2 49 2 32 168 3 16 5 1 48 0 52 1 0 2 33 53 0 20 3 0 16 1 48 1 17 6 52 35 0 0 17 7 1 36 0 17 8 51 37 0 1 8 1 6 1 7 1 0 1 9 17 9 5 16 9 48 0 5 20 4 0 16 0 16 7 49 2 32 103 3 16 5 1 49 0 52 1 0 2 33 52 0 20 3 0 16 1 48 1 17 6 65 0 0 17 7 1 36 0 17 8 51 50 0 1 8 1 6 1 0 1 7 1 9 17 9 5 16 9 48 0 5 20 4 0 16 0 16 7 49 2 32 39 3 16 5 1 51 0 52 1 0 2 33 60 0 20 0 0 16 1 48 1 17 6 52 35 0 0 17 7 1 36 0 17 8 51 37 0 1 8 1 6 1 7 1 0 1 9 17 9 5 16 9 48 0 5 20 4 0 16 0 20 53 0 16 7 52 52 0 2 49 2 32 223 2 16 5 1 54 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 16 0 1 55 0 52 30 0 2 16 7 20 12 0 16 0 48 1 52 27 0 3 32 167 2 16 5 1 56 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 29 0 2 49 2 32 119 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 71 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 23 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 62 0 2 49 2 32 231 1 16 5 1 63 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 183 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 135 1 16 5 1 66 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 67 0 2 49 2 32 87 1 16 5 1 68 0 52 1 0 2 33 21 0 20 4 0 16 0 20 10 0 16 0 48 1 52 32 0 1 49 2 32 54 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 21 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 244 0 16 5 1 73 0 52 1 0 2 33 21 0 20 4 0 16 0 20 10 0 16 0 48 1 52 74 0 1 49 2 32 211 0 16 5 1 75 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 163 0 16 5 1 76 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 77 0 2 49 2 32 115 0 16 5 1 78 0 52 1 0 2 33 24 0 20 4 0 16 0 1 36 0 20 10 0 16 0 48 1 52 58 0 2 49 2 32 79 0 16 5 1 79 0 52 1 0 2 33 21 0 20 4 0 16 0 20 10 0 16 0 48 1 52 80 0 1 49 2 32 46 0 16 5 1 81 0 52 1 0 2 33 21 0 20 4 0 16 0 20 10 0 16 0 48 1 52 82 0 1 49 2 32 13 0 1 84 0 16 5 52 53 0 2 52 83 0 1 50)
|
|
: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"
|
|
"dict-set!"
|
|
"ip"
|
|
"+"
|
|
"get"
|
|
33
|
|
"not"
|
|
34
|
|
48
|
|
"list"
|
|
0
|
|
(code :upvalue-count 5
|
|
: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)
|
|
:constants (
|
|
"<"
|
|
"cons"
|
|
"vm-pop"
|
|
"+"
|
|
1))
|
|
"vm-call"
|
|
49
|
|
"frames"
|
|
"sp"
|
|
"base"
|
|
50
|
|
51
|
|
"vm-create-closure"
|
|
52
|
|
"call-primitive"
|
|
64
|
|
65
|
|
(code :upvalue-count 5
|
|
: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)
|
|
:constants (
|
|
"<"
|
|
"vm-pop"
|
|
"dict-set!"
|
|
"+"
|
|
1))
|
|
144
|
|
"apply"
|
|
"str"
|
|
128
|
|
"globals"
|
|
160
|
|
161
|
|
"-"
|
|
162
|
|
"*"
|
|
163
|
|
"/"
|
|
164
|
|
165
|
|
"<"
|
|
166
|
|
">"
|
|
167
|
|
168
|
|
"len"
|
|
169
|
|
"first"
|
|
170
|
|
"rest"
|
|
171
|
|
172
|
|
"cons"
|
|
173
|
|
174
|
|
"inc"
|
|
175
|
|
"dec"
|
|
"error"
|
|
"VM: unknown opcode "))
|
|
"vm-call-closure"
|
|
(code :arity 3
|
|
: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)
|
|
:constants (
|
|
"make-vm"
|
|
"vm-push-frame"
|
|
"vm-run"
|
|
"vm-pop"))
|
|
"vm-execute-module"
|
|
(code :arity 2
|
|
: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 1 5 0 17 5 16 0 1 7 0 52 6 0 2 17 6 51 8 0 1 5 1 6 1 3 1 7 17 7 5 16 7 48 0 5 16 3 1 10 0 16 4 52 1 0 1 52 9 0 3 5 20 11 0 16 3 48 1 5 20 12 0 16 3 49 1 50)
|
|
:constants (
|
|
"make-vm-closure"
|
|
"list"
|
|
"module"
|
|
"make-vm"
|
|
"make-vm-frame"
|
|
0
|
|
"get"
|
|
"vc-locals"
|
|
(code :upvalue-count 4
|
|
: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)
|
|
:constants (
|
|
"<"
|
|
"vm-push"
|
|
"+"
|
|
1))
|
|
"dict-set!"
|
|
"frames"
|
|
"vm-run"
|
|
"vm-pop")))))
|