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>
949 lines
38 KiB
Plaintext
949 lines
38 KiB
Plaintext
(sxbc 1 "9f12bfb447e36aeb"
|
|
(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 5 51 61 0 128 60 0 5 51 63 0 128 62 0 5 51 65 0 128 64 0 5 51 67 0 128 66 0 5 51 69 0 128 68 0 5 51 71 0 128 70 0 5 51 73 0 128 72 0 5 51 75 0 128 74 0 5 51 77 0 128 76 0 5 51 79 0 128 78 0 5 51 81 0 128 80 0 50)
|
|
:constants (
|
|
"make-pool"
|
|
(code
|
|
:bytecode (1 0 0 1 2 0 52 1 0 1 33 7 0 52 2 0 0 32 4 0 52 3 0 0 1 4 0 1 5 0 1 6 0 65 1 0 65 2 0 50)
|
|
:constants (
|
|
"entries"
|
|
"primitive?"
|
|
"mutable-list"
|
|
"list"
|
|
"index"
|
|
"_count"
|
|
0))
|
|
"pool-add"
|
|
(code :arity 2
|
|
:bytecode (1 0 0 5 16 1 52 1 0 1 17 2 16 0 1 3 0 52 2 0 2 17 3 16 3 16 2 52 4 0 2 33 11 0 16 3 16 2 52 2 0 2 32 60 0 16 3 1 5 0 52 2 0 2 17 4 16 3 16 2 16 4 52 6 0 3 5 16 3 1 5 0 16 4 1 8 0 52 7 0 2 52 6 0 3 5 20 9 0 16 0 1 10 0 52 2 0 2 16 1 48 2 5 16 4 50)
|
|
:constants (
|
|
"Add a value to the constant pool, return its index. Deduplicates."
|
|
"serialize"
|
|
"get"
|
|
"index"
|
|
"has-key?"
|
|
"_count"
|
|
"dict-set!"
|
|
"+"
|
|
1
|
|
"append!"
|
|
"entries"))
|
|
"make-scope"
|
|
(code :arity 1
|
|
:bytecode (1 0 0 1 1 0 1 2 0 52 3 0 0 1 4 0 52 3 0 0 1 5 0 16 0 1 6 0 4 65 5 0 50)
|
|
:constants (
|
|
"next-slot"
|
|
0
|
|
"upvalues"
|
|
"list"
|
|
"locals"
|
|
"parent"
|
|
"is-function"))
|
|
"scope-define-local"
|
|
(code :arity 2
|
|
:bytecode (1 0 0 5 51 3 0 1 1 16 0 1 5 0 52 4 0 2 52 2 0 2 52 1 0 1 17 2 16 2 33 12 0 16 2 1 6 0 52 4 0 2 32 64 0 16 0 1 7 0 52 4 0 2 17 3 20 8 0 16 0 1 5 0 52 4 0 2 1 9 0 4 1 6 0 16 3 1 10 0 16 1 65 3 0 48 2 5 16 0 1 7 0 16 3 1 13 0 52 12 0 2 52 11 0 3 5 16 3 50)
|
|
:constants (
|
|
"Add a local variable, return its slot index.
|
|
Idempotent: if name already has a slot, return it."
|
|
"first"
|
|
"filter"
|
|
(code :arity 1 :upvalue-count 1
|
|
:bytecode (16 0 1 2 0 52 1 0 2 18 0 52 0 0 2 50)
|
|
:constants (
|
|
"="
|
|
"get"
|
|
"name"))
|
|
"get"
|
|
"locals"
|
|
"slot"
|
|
"next-slot"
|
|
"append!"
|
|
"mutable"
|
|
"name"
|
|
"dict-set!"
|
|
"+"
|
|
1))
|
|
"scope-resolve"
|
|
(code :arity 2
|
|
:bytecode (1 0 0 5 16 0 52 1 0 1 33 17 0 1 2 0 16 1 1 3 0 1 4 0 65 2 0 32 61 1 16 0 1 6 0 52 5 0 2 17 2 51 8 0 1 1 16 2 52 7 0 2 17 3 16 3 33 41 0 51 8 0 1 1 16 2 52 10 0 2 52 9 0 1 17 4 1 2 0 16 4 1 11 0 52 5 0 2 1 3 0 1 12 0 65 2 0 32 247 0 16 0 1 13 0 52 5 0 2 17 4 51 8 0 1 1 16 4 52 7 0 2 17 5 16 5 33 41 0 51 8 0 1 1 16 4 52 10 0 2 52 9 0 1 17 6 1 2 0 16 6 1 14 0 52 5 0 2 1 3 0 1 15 0 65 2 0 32 177 0 16 0 1 16 0 52 5 0 2 17 6 16 6 52 1 0 1 33 17 0 1 2 0 16 1 1 3 0 1 4 0 65 2 0 32 140 0 20 17 0 16 6 16 1 48 2 17 7 16 7 1 3 0 52 5 0 2 1 4 0 52 18 0 2 33 5 0 16 7 32 105 0 16 0 1 19 0 52 5 0 2 33 91 0 16 0 1 13 0 52 5 0 2 52 20 0 1 17 8 20 21 0 16 0 1 13 0 52 5 0 2 1 2 0 16 7 1 2 0 52 5 0 2 1 22 0 16 7 1 3 0 52 5 0 2 1 12 0 52 18 0 2 1 14 0 16 8 1 23 0 16 1 65 4 0 48 2 5 1 2 0 16 8 1 3 0 1 15 0 65 2 0 32 2 0 16 7 50)
|
|
:constants (
|
|
"Resolve a variable name. Returns {:type \"local\"|\"upvalue\"|\"global\", :index N}.
|
|
Upvalue captures only happen at function boundaries (is-function=true).
|
|
Let scopes share the enclosing function's frame — their locals are
|
|
accessed directly without upvalue indirection."
|
|
"nil?"
|
|
"index"
|
|
"type"
|
|
"global"
|
|
"get"
|
|
"locals"
|
|
"some"
|
|
(code :arity 1 :upvalue-count 1
|
|
:bytecode (16 0 1 2 0 52 1 0 2 18 0 52 0 0 2 50)
|
|
:constants (
|
|
"="
|
|
"get"
|
|
"name"))
|
|
"first"
|
|
"filter"
|
|
"slot"
|
|
"local"
|
|
"upvalues"
|
|
"uv-index"
|
|
"upvalue"
|
|
"parent"
|
|
"scope-resolve"
|
|
"="
|
|
"is-function"
|
|
"len"
|
|
"append!"
|
|
"is-local"
|
|
"name"))
|
|
"make-emitter"
|
|
(code
|
|
:bytecode (1 0 0 20 1 0 48 0 1 2 0 1 4 0 52 3 0 1 33 7 0 52 4 0 0 32 4 0 52 5 0 0 65 2 0 50)
|
|
:constants (
|
|
"pool"
|
|
"make-pool"
|
|
"bytecode"
|
|
"primitive?"
|
|
"mutable-list"
|
|
"list"))
|
|
"emit-byte"
|
|
(code :arity 2
|
|
:bytecode (20 0 0 16 0 1 2 0 52 1 0 2 16 1 49 2 50)
|
|
:constants (
|
|
"append!"
|
|
"get"
|
|
"bytecode"))
|
|
"emit-u16"
|
|
(code :arity 2
|
|
:bytecode (20 0 0 16 0 16 1 1 2 0 52 1 0 2 48 2 5 20 0 0 16 0 16 1 1 2 0 52 4 0 2 52 3 0 1 1 2 0 52 1 0 2 49 2 50)
|
|
:constants (
|
|
"emit-byte"
|
|
"mod"
|
|
256
|
|
"floor"
|
|
"/"))
|
|
"emit-i16"
|
|
(code :arity 2
|
|
:bytecode (16 1 1 1 0 52 0 0 2 33 12 0 16 1 1 3 0 52 2 0 2 32 2 0 16 1 17 2 20 4 0 16 0 16 2 49 2 50)
|
|
:constants (
|
|
"<"
|
|
0
|
|
"+"
|
|
65536
|
|
"emit-u16"))
|
|
"emit-op"
|
|
(code :arity 2
|
|
:bytecode (20 0 0 16 0 16 1 49 2 50)
|
|
:constants (
|
|
"emit-byte"))
|
|
"emit-const"
|
|
(code :arity 2
|
|
:bytecode (20 0 0 16 0 1 2 0 52 1 0 2 16 1 48 2 17 2 20 3 0 16 0 1 4 0 48 2 5 20 5 0 16 0 16 2 49 2 50)
|
|
:constants (
|
|
"pool-add"
|
|
"get"
|
|
"pool"
|
|
"emit-op"
|
|
1
|
|
"emit-u16"))
|
|
"current-offset"
|
|
(code :arity 1
|
|
:bytecode (16 0 1 2 0 52 1 0 2 52 0 0 1 50)
|
|
:constants (
|
|
"len"
|
|
"get"
|
|
"bytecode"))
|
|
"patch-i16"
|
|
(code :arity 3
|
|
:bytecode (1 0 0 5 16 2 1 2 0 52 1 0 2 33 12 0 16 2 1 4 0 52 3 0 2 32 2 0 16 2 17 3 16 0 1 6 0 52 5 0 2 17 4 16 4 16 1 16 3 1 9 0 52 8 0 2 52 7 0 3 5 16 4 16 1 1 10 0 52 3 0 2 16 3 1 9 0 52 12 0 2 52 11 0 1 1 9 0 52 8 0 2 52 7 0 3 50)
|
|
:constants (
|
|
"Patch a previously emitted i16 at the given bytecode offset."
|
|
"<"
|
|
0
|
|
"+"
|
|
65536
|
|
"get"
|
|
"bytecode"
|
|
"set-nth!"
|
|
"mod"
|
|
256
|
|
1
|
|
"floor"
|
|
"/"))
|
|
"compile-expr"
|
|
(code :arity 4
|
|
:bytecode (1 0 0 5 16 1 52 1 0 1 33 13 0 20 2 0 16 0 1 3 0 49 2 32 12 1 16 1 52 5 0 1 1 6 0 52 4 0 2 33 12 0 20 7 0 16 0 16 1 49 2 32 240 0 16 1 52 5 0 1 1 8 0 52 4 0 2 33 12 0 20 7 0 16 0 16 1 49 2 32 212 0 16 1 52 5 0 1 1 9 0 52 4 0 2 33 24 0 20 2 0 16 0 16 1 33 6 0 1 10 0 32 3 0 1 11 0 49 2 32 172 0 16 1 52 5 0 1 1 12 0 52 4 0 2 33 17 0 20 7 0 16 0 20 13 0 16 1 48 1 49 2 32 139 0 16 1 52 5 0 1 1 14 0 52 4 0 2 33 19 0 20 15 0 16 0 20 16 0 16 1 48 1 16 2 49 3 32 104 0 16 1 52 5 0 1 1 17 0 52 4 0 2 33 49 0 16 1 52 18 0 1 33 24 0 20 2 0 16 0 1 19 0 48 2 5 20 20 0 16 0 1 21 0 49 2 32 13 0 20 22 0 16 0 16 1 16 2 16 3 49 4 32 39 0 16 1 52 5 0 1 1 23 0 52 4 0 2 33 14 0 20 24 0 16 0 16 1 16 2 49 3 32 9 0 20 7 0 16 0 16 1 49 2 50)
|
|
:constants (
|
|
"Compile an expression. tail? indicates tail position for TCO."
|
|
"nil?"
|
|
"emit-op"
|
|
2
|
|
"="
|
|
"type-of"
|
|
"number"
|
|
"emit-const"
|
|
"string"
|
|
"boolean"
|
|
3
|
|
4
|
|
"keyword"
|
|
"keyword-name"
|
|
"symbol"
|
|
"compile-symbol"
|
|
"symbol-name"
|
|
"list"
|
|
"empty?"
|
|
64
|
|
"emit-u16"
|
|
0
|
|
"compile-list"
|
|
"dict"
|
|
"compile-dict"))
|
|
"compile-symbol"
|
|
(code :arity 3
|
|
:bytecode (20 0 0 16 2 16 1 48 2 17 3 16 3 1 3 0 52 2 0 2 1 4 0 52 1 0 2 33 30 0 20 5 0 16 0 1 6 0 48 2 5 20 7 0 16 0 16 3 1 8 0 52 2 0 2 49 2 32 87 0 16 3 1 3 0 52 2 0 2 1 9 0 52 1 0 2 33 30 0 20 5 0 16 0 1 10 0 48 2 5 20 7 0 16 0 16 3 1 8 0 52 2 0 2 49 2 32 38 0 20 11 0 16 0 1 12 0 52 2 0 2 16 1 48 2 17 4 20 5 0 16 0 1 13 0 48 2 5 20 14 0 16 0 16 4 49 2 50)
|
|
:constants (
|
|
"scope-resolve"
|
|
"="
|
|
"get"
|
|
"type"
|
|
"local"
|
|
"emit-op"
|
|
16
|
|
"emit-byte"
|
|
"index"
|
|
"upvalue"
|
|
18
|
|
"pool-add"
|
|
"pool"
|
|
20
|
|
"emit-u16"))
|
|
"compile-dict"
|
|
(code :arity 3
|
|
:bytecode (16 1 52 0 0 1 17 3 16 3 52 1 0 1 17 4 51 3 0 1 0 1 1 1 2 16 3 52 2 0 2 5 20 4 0 16 0 1 5 0 48 2 5 20 6 0 16 0 16 4 49 2 50)
|
|
:constants (
|
|
"keys"
|
|
"len"
|
|
"for-each"
|
|
(code :arity 1 :upvalue-count 3
|
|
:bytecode (20 0 0 18 0 16 0 48 2 5 20 1 0 18 0 18 1 16 0 52 2 0 2 18 2 4 49 4 50)
|
|
:constants (
|
|
"emit-const"
|
|
"compile-expr"
|
|
"get"))
|
|
"emit-op"
|
|
65
|
|
"emit-u16"))
|
|
"compile-list"
|
|
(code :arity 4
|
|
:bytecode (16 1 52 0 0 1 17 4 16 1 52 1 0 1 17 5 16 4 52 4 0 1 1 5 0 52 3 0 2 52 2 0 1 33 18 0 20 6 0 16 0 16 4 16 5 16 2 16 3 49 5 32 54 3 20 7 0 16 4 48 1 17 6 16 6 1 8 0 52 3 0 2 33 16 0 20 9 0 16 0 16 5 16 2 16 3 49 4 32 17 3 16 6 1 10 0 52 3 0 2 33 16 0 20 11 0 16 0 16 5 16 2 16 3 49 4 32 245 2 16 6 1 12 0 52 3 0 2 33 16 0 20 13 0 16 0 16 5 16 2 16 3 49 4 32 217 2 16 6 1 14 0 52 3 0 2 33 16 0 20 15 0 16 0 16 5 16 2 16 3 49 4 32 189 2 16 6 1 16 0 52 3 0 2 33 16 0 20 17 0 16 0 16 5 16 2 16 3 49 4 32 161 2 16 6 1 18 0 52 3 0 2 33 16 0 20 17 0 16 0 16 5 16 2 16 3 49 4 32 133 2 16 6 1 19 0 52 3 0 2 33 16 0 20 20 0 16 0 16 5 16 2 16 3 49 4 32 105 2 16 6 1 21 0 52 3 0 2 33 16 0 20 20 0 16 0 16 5 16 2 16 3 49 4 32 77 2 16 6 1 22 0 52 3 0 2 33 14 0 20 23 0 16 0 16 5 16 2 49 3 32 51 2 16 6 1 24 0 52 3 0 2 33 14 0 20 23 0 16 0 16 5 16 2 49 3 32 25 2 16 6 1 25 0 52 3 0 2 33 14 0 20 26 0 16 0 16 5 16 2 49 3 32 255 1 16 6 1 27 0 52 3 0 2 33 14 0 20 28 0 16 0 16 5 16 2 49 3 32 229 1 16 6 1 29 0 52 3 0 2 33 12 0 20 30 0 16 0 16 5 49 2 32 205 1 16 6 1 31 0 52 3 0 2 33 16 0 20 32 0 16 0 16 5 16 2 16 3 49 4 32 177 1 16 6 1 33 0 52 3 0 2 33 16 0 20 34 0 16 0 16 5 16 2 16 3 49 4 32 149 1 16 6 1 35 0 52 3 0 2 33 16 0 20 36 0 16 0 16 5 16 2 16 3 49 4 32 121 1 16 6 1 37 0 52 3 0 2 33 14 0 20 38 0 16 0 16 5 16 2 49 3 32 95 1 16 6 1 39 0 52 3 0 2 33 14 0 20 38 0 16 0 16 5 16 2 49 3 32 69 1 16 6 1 40 0 52 3 0 2 33 14 0 20 41 0 16 0 16 5 16 2 49 3 32 43 1 16 6 1 42 0 52 3 0 2 33 13 0 20 43 0 16 0 1 44 0 49 2 32 18 1 16 6 1 45 0 52 3 0 2 33 13 0 20 43 0 16 0 1 44 0 49 2 32 249 0 16 6 1 46 0 52 3 0 2 33 13 0 20 43 0 16 0 1 44 0 49 2 32 224 0 16 6 1 47 0 52 3 0 2 33 13 0 20 43 0 16 0 1 44 0 49 2 32 199 0 16 6 1 48 0 52 3 0 2 33 13 0 20 43 0 16 0 1 44 0 49 2 32 174 0 16 6 1 49 0 52 3 0 2 33 13 0 20 43 0 16 0 1 44 0 49 2 32 149 0 16 6 1 50 0 52 3 0 2 33 13 0 20 43 0 16 0 1 44 0 49 2 32 124 0 16 6 1 51 0 52 3 0 2 33 13 0 20 43 0 16 0 1 44 0 49 2 32 99 0 16 6 1 39 0 52 3 0 2 33 14 0 20 38 0 16 0 16 5 16 2 49 3 32 73 0 16 6 1 52 0 52 3 0 2 33 18 0 20 53 0 16 0 16 5 52 0 0 1 16 2 49 3 32 43 0 16 6 1 54 0 52 3 0 2 33 16 0 20 55 0 16 0 16 5 16 2 16 3 49 4 32 15 0 20 6 0 16 0 16 4 16 5 16 2 16 3 49 5 50)
|
|
:constants (
|
|
"first"
|
|
"rest"
|
|
"not"
|
|
"="
|
|
"type-of"
|
|
"symbol"
|
|
"compile-call"
|
|
"symbol-name"
|
|
"if"
|
|
"compile-if"
|
|
"when"
|
|
"compile-when"
|
|
"and"
|
|
"compile-and"
|
|
"or"
|
|
"compile-or"
|
|
"let"
|
|
"compile-let"
|
|
"let*"
|
|
"begin"
|
|
"compile-begin"
|
|
"do"
|
|
"lambda"
|
|
"compile-lambda"
|
|
"fn"
|
|
"define"
|
|
"compile-define"
|
|
"set!"
|
|
"compile-set"
|
|
"quote"
|
|
"compile-quote"
|
|
"cond"
|
|
"compile-cond"
|
|
"case"
|
|
"compile-case"
|
|
"->"
|
|
"compile-thread"
|
|
"defcomp"
|
|
"compile-defcomp"
|
|
"defisland"
|
|
"defmacro"
|
|
"compile-defmacro"
|
|
"defstyle"
|
|
"emit-op"
|
|
2
|
|
"defhandler"
|
|
"defpage"
|
|
"defquery"
|
|
"defaction"
|
|
"defrelation"
|
|
"deftype"
|
|
"defeffect"
|
|
"quasiquote"
|
|
"compile-quasiquote"
|
|
"letrec"
|
|
"compile-letrec"))
|
|
"compile-if"
|
|
(code :arity 4
|
|
:bytecode (16 1 52 0 0 1 17 4 16 1 1 2 0 52 1 0 2 17 5 16 1 52 4 0 1 1 5 0 52 3 0 2 33 12 0 16 1 1 5 0 52 1 0 2 32 1 0 2 17 6 20 6 0 16 0 16 4 16 2 4 48 4 5 20 7 0 16 0 1 8 0 48 2 5 20 9 0 16 0 48 1 17 7 20 10 0 16 0 1 11 0 48 2 5 20 6 0 16 0 16 5 16 2 16 3 48 4 5 20 7 0 16 0 1 12 0 48 2 5 20 9 0 16 0 48 1 17 8 20 10 0 16 0 1 11 0 48 2 5 20 13 0 16 0 16 7 20 9 0 16 0 48 1 16 7 1 5 0 52 15 0 2 52 14 0 2 48 3 5 16 6 52 16 0 1 33 13 0 20 7 0 16 0 1 5 0 48 2 32 13 0 20 6 0 16 0 16 6 16 2 16 3 48 4 5 20 13 0 16 0 16 8 20 9 0 16 0 48 1 16 8 1 5 0 52 15 0 2 52 14 0 2 49 3 50)
|
|
:constants (
|
|
"first"
|
|
"nth"
|
|
1
|
|
">"
|
|
"len"
|
|
2
|
|
"compile-expr"
|
|
"emit-op"
|
|
33
|
|
"current-offset"
|
|
"emit-i16"
|
|
0
|
|
32
|
|
"patch-i16"
|
|
"-"
|
|
"+"
|
|
"nil?"))
|
|
"compile-when"
|
|
(code :arity 4
|
|
:bytecode (16 1 52 0 0 1 17 4 16 1 52 1 0 1 17 5 20 2 0 16 0 16 4 16 2 4 48 4 5 20 3 0 16 0 1 4 0 48 2 5 20 5 0 16 0 48 1 17 6 20 6 0 16 0 1 7 0 48 2 5 20 8 0 16 0 16 5 16 2 16 3 48 4 5 20 3 0 16 0 1 9 0 48 2 5 20 5 0 16 0 48 1 17 7 20 6 0 16 0 1 7 0 48 2 5 20 10 0 16 0 16 6 20 5 0 16 0 48 1 16 6 1 13 0 52 12 0 2 52 11 0 2 48 3 5 20 3 0 16 0 1 13 0 48 2 5 20 10 0 16 0 16 7 20 5 0 16 0 48 1 16 7 1 13 0 52 12 0 2 52 11 0 2 49 3 50)
|
|
:constants (
|
|
"first"
|
|
"rest"
|
|
"compile-expr"
|
|
"emit-op"
|
|
33
|
|
"current-offset"
|
|
"emit-i16"
|
|
0
|
|
"compile-begin"
|
|
32
|
|
"patch-i16"
|
|
"-"
|
|
"+"
|
|
2))
|
|
"compile-and"
|
|
(code :arity 4
|
|
:bytecode (16 1 52 0 0 1 33 13 0 20 1 0 16 0 1 2 0 49 2 32 153 0 16 1 52 4 0 1 1 5 0 52 3 0 2 33 20 0 20 6 0 16 0 16 1 52 7 0 1 16 2 16 3 49 4 32 117 0 20 6 0 16 0 16 1 52 7 0 1 16 2 4 48 4 5 20 1 0 16 0 1 8 0 48 2 5 20 1 0 16 0 1 9 0 48 2 5 20 10 0 16 0 48 1 17 4 20 11 0 16 0 1 12 0 48 2 5 20 1 0 16 0 1 13 0 48 2 5 20 14 0 16 0 16 1 52 15 0 1 16 2 16 3 48 4 5 20 16 0 16 0 16 4 20 10 0 16 0 48 1 16 4 1 19 0 52 18 0 2 52 17 0 2 49 3 50)
|
|
:constants (
|
|
"empty?"
|
|
"emit-op"
|
|
3
|
|
"="
|
|
"len"
|
|
1
|
|
"compile-expr"
|
|
"first"
|
|
6
|
|
33
|
|
"current-offset"
|
|
"emit-i16"
|
|
0
|
|
5
|
|
"compile-and"
|
|
"rest"
|
|
"patch-i16"
|
|
"-"
|
|
"+"
|
|
2))
|
|
"compile-or"
|
|
(code :arity 4
|
|
:bytecode (16 1 52 0 0 1 33 13 0 20 1 0 16 0 1 2 0 49 2 32 153 0 16 1 52 4 0 1 1 5 0 52 3 0 2 33 20 0 20 6 0 16 0 16 1 52 7 0 1 16 2 16 3 49 4 32 117 0 20 6 0 16 0 16 1 52 7 0 1 16 2 4 48 4 5 20 1 0 16 0 1 8 0 48 2 5 20 1 0 16 0 1 9 0 48 2 5 20 10 0 16 0 48 1 17 4 20 11 0 16 0 1 12 0 48 2 5 20 1 0 16 0 1 13 0 48 2 5 20 14 0 16 0 16 1 52 15 0 1 16 2 16 3 48 4 5 20 16 0 16 0 16 4 20 10 0 16 0 48 1 16 4 1 19 0 52 18 0 2 52 17 0 2 49 3 50)
|
|
:constants (
|
|
"empty?"
|
|
"emit-op"
|
|
4
|
|
"="
|
|
"len"
|
|
1
|
|
"compile-expr"
|
|
"first"
|
|
6
|
|
34
|
|
"current-offset"
|
|
"emit-i16"
|
|
0
|
|
5
|
|
"compile-or"
|
|
"rest"
|
|
"patch-i16"
|
|
"-"
|
|
"+"
|
|
2))
|
|
"compile-begin"
|
|
(code :arity 4
|
|
:bytecode (16 1 52 1 0 1 52 0 0 1 6 33 18 0 5 16 2 1 4 0 52 3 0 2 52 2 0 1 52 0 0 1 33 14 0 51 6 0 1 2 16 1 52 5 0 2 32 1 0 2 5 16 1 52 1 0 1 33 13 0 20 7 0 16 0 1 8 0 49 2 32 81 0 16 1 52 10 0 1 1 11 0 52 9 0 2 33 20 0 20 12 0 16 0 16 1 52 13 0 1 16 2 16 3 49 4 32 45 0 20 12 0 16 0 16 1 52 13 0 1 16 2 4 48 4 5 20 7 0 16 0 1 14 0 48 2 5 20 15 0 16 0 16 1 52 16 0 1 16 2 16 3 49 4 50)
|
|
:constants (
|
|
"not"
|
|
"empty?"
|
|
"nil?"
|
|
"get"
|
|
"parent"
|
|
"for-each"
|
|
(code :arity 1 :upvalue-count 1
|
|
:bytecode (16 0 52 1 0 1 1 2 0 52 0 0 2 6 33 59 0 5 16 0 52 4 0 1 1 5 0 52 3 0 2 6 33 41 0 5 16 0 52 6 0 1 52 1 0 1 1 7 0 52 0 0 2 6 33 19 0 5 20 8 0 16 0 52 6 0 1 48 1 1 9 0 52 0 0 2 33 53 0 16 0 1 11 0 52 10 0 2 17 1 16 1 52 1 0 1 1 7 0 52 0 0 2 33 10 0 20 8 0 16 1 48 1 32 2 0 16 1 17 2 20 12 0 18 0 16 2 49 2 32 1 0 2 50)
|
|
:constants (
|
|
"="
|
|
"type-of"
|
|
"list"
|
|
">="
|
|
"len"
|
|
2
|
|
"first"
|
|
"symbol"
|
|
"symbol-name"
|
|
"define"
|
|
"nth"
|
|
1
|
|
"scope-define-local"))
|
|
"emit-op"
|
|
2
|
|
"="
|
|
"len"
|
|
1
|
|
"compile-expr"
|
|
"first"
|
|
5
|
|
"compile-begin"
|
|
"rest"))
|
|
"compile-let"
|
|
(code :arity 4
|
|
:bytecode (16 1 52 2 0 1 52 1 0 1 1 3 0 52 0 0 2 33 136 0 20 4 0 16 1 52 2 0 1 48 1 17 4 16 1 1 6 0 52 5 0 2 17 5 16 1 1 8 0 52 7 0 2 17 6 52 9 0 0 17 7 52 9 0 0 17 8 51 11 0 1 7 1 8 16 5 52 10 0 2 5 1 14 0 52 13 0 1 16 7 52 9 0 2 16 6 52 12 0 2 17 9 16 4 52 13 0 1 16 9 52 9 0 2 52 9 0 1 17 10 16 4 52 13 0 1 16 8 52 15 0 2 17 11 20 16 0 16 0 16 10 16 11 52 9 0 2 16 2 16 3 49 4 32 71 0 16 1 52 2 0 1 17 4 16 1 52 17 0 1 17 5 20 18 0 16 2 48 1 17 6 16 6 1 20 0 16 2 1 20 0 52 21 0 2 52 19 0 3 5 51 22 0 1 6 1 0 16 4 52 10 0 2 5 20 23 0 16 0 16 5 16 6 16 3 49 4 50)
|
|
:constants (
|
|
"="
|
|
"type-of"
|
|
"first"
|
|
"symbol"
|
|
"symbol-name"
|
|
"nth"
|
|
1
|
|
"slice"
|
|
2
|
|
"list"
|
|
"for-each"
|
|
(code :arity 1 :upvalue-count 2
|
|
:bytecode (20 0 0 18 0 16 0 52 3 0 1 52 2 0 1 1 4 0 52 1 0 2 33 9 0 16 0 52 3 0 1 32 10 0 16 0 52 3 0 1 52 5 0 1 48 2 5 20 0 0 18 1 16 0 1 7 0 52 6 0 2 49 2 50)
|
|
:constants (
|
|
"append!"
|
|
"="
|
|
"type-of"
|
|
"first"
|
|
"symbol"
|
|
"make-symbol"
|
|
"nth"
|
|
1))
|
|
"concat"
|
|
"make-symbol"
|
|
"fn"
|
|
"cons"
|
|
"compile-letrec"
|
|
"rest"
|
|
"make-scope"
|
|
"dict-set!"
|
|
"next-slot"
|
|
"get"
|
|
(code :arity 1 :upvalue-count 2
|
|
:bytecode (16 0 52 2 0 1 52 1 0 1 1 3 0 52 0 0 2 33 14 0 20 4 0 16 0 52 2 0 1 48 1 32 6 0 16 0 52 2 0 1 17 1 16 0 1 6 0 52 5 0 2 17 2 20 7 0 18 0 16 1 48 2 17 3 20 8 0 18 1 16 2 18 0 4 48 4 5 20 9 0 18 1 1 10 0 48 2 5 20 11 0 18 1 16 3 49 2 50)
|
|
:constants (
|
|
"="
|
|
"type-of"
|
|
"first"
|
|
"symbol"
|
|
"symbol-name"
|
|
"nth"
|
|
1
|
|
"scope-define-local"
|
|
"compile-expr"
|
|
"emit-op"
|
|
17
|
|
"emit-byte"))
|
|
"compile-begin"))
|
|
"compile-letrec"
|
|
(code :arity 4
|
|
:bytecode (1 0 0 5 16 1 52 1 0 1 17 4 16 1 52 2 0 1 17 5 20 3 0 16 2 48 1 17 6 16 6 1 5 0 16 2 1 5 0 52 6 0 2 52 4 0 3 5 51 8 0 1 6 1 0 16 4 52 7 0 2 17 7 51 10 0 1 0 1 6 51 11 0 1 4 1 7 1 13 0 16 4 52 14 0 1 52 12 0 2 52 7 0 2 52 9 0 2 5 20 15 0 16 0 16 5 16 6 16 3 49 4 50)
|
|
:constants (
|
|
"Compile letrec: all names visible during value compilation.
|
|
1. Define all local slots (initialized to nil).
|
|
2. Compile each value and assign — names are already in scope
|
|
so mutually recursive functions can reference each other."
|
|
"first"
|
|
"rest"
|
|
"make-scope"
|
|
"dict-set!"
|
|
"next-slot"
|
|
"get"
|
|
"map"
|
|
(code :arity 1 :upvalue-count 2
|
|
:bytecode (16 0 52 2 0 1 52 1 0 1 1 3 0 52 0 0 2 33 14 0 20 4 0 16 0 52 2 0 1 48 1 32 6 0 16 0 52 2 0 1 17 1 20 5 0 18 0 16 1 48 2 17 2 20 6 0 18 1 1 7 0 48 2 5 20 6 0 18 1 1 8 0 48 2 5 20 9 0 18 1 16 2 48 2 5 16 2 50)
|
|
:constants (
|
|
"="
|
|
"type-of"
|
|
"first"
|
|
"symbol"
|
|
"symbol-name"
|
|
"scope-define-local"
|
|
"emit-op"
|
|
2
|
|
17
|
|
"emit-byte"))
|
|
"for-each"
|
|
(code :arity 1 :upvalue-count 2
|
|
:bytecode (16 0 52 0 0 1 17 1 16 0 1 2 0 52 1 0 2 17 2 20 3 0 18 0 16 1 1 2 0 52 1 0 2 18 1 4 48 4 5 20 4 0 18 0 1 5 0 48 2 5 20 6 0 18 0 16 2 49 2 50)
|
|
:constants (
|
|
"first"
|
|
"nth"
|
|
1
|
|
"compile-expr"
|
|
"emit-op"
|
|
17
|
|
"emit-byte"))
|
|
(code :arity 1 :upvalue-count 2
|
|
:bytecode (18 0 16 0 52 1 0 2 18 1 16 0 52 1 0 2 52 0 0 2 50)
|
|
:constants (
|
|
"list"
|
|
"nth"))
|
|
"range"
|
|
0
|
|
"len"
|
|
"compile-begin"))
|
|
"compile-lambda"
|
|
(code :arity 3
|
|
:bytecode (16 1 52 0 0 1 17 3 16 1 52 1 0 1 17 4 20 2 0 16 2 48 1 17 5 20 3 0 48 0 17 6 16 5 1 5 0 3 52 4 0 3 5 51 7 0 1 5 16 3 52 6 0 2 5 20 8 0 16 6 16 4 16 5 3 48 4 5 20 9 0 16 6 1 10 0 48 2 5 16 5 1 12 0 52 11 0 2 17 7 1 13 0 16 7 52 14 0 1 1 15 0 16 5 1 16 0 52 11 0 2 52 14 0 1 1 17 0 16 6 1 18 0 52 11 0 2 1 19 0 52 11 0 2 1 20 0 16 6 1 20 0 52 11 0 2 65 4 0 17 8 20 21 0 16 0 1 18 0 52 11 0 2 16 8 48 2 17 9 20 9 0 16 0 1 22 0 48 2 5 20 23 0 16 0 16 9 48 2 5 51 24 0 1 0 16 7 52 6 0 2 50)
|
|
:constants (
|
|
"first"
|
|
"rest"
|
|
"make-scope"
|
|
"make-emitter"
|
|
"dict-set!"
|
|
"is-function"
|
|
"for-each"
|
|
(code :arity 1 :upvalue-count 1
|
|
:bytecode (16 0 52 1 0 1 1 2 0 52 0 0 2 33 10 0 20 3 0 16 0 48 1 32 62 0 16 0 52 4 0 1 6 33 33 0 5 16 0 52 6 0 1 52 5 0 1 6 33 18 0 5 16 0 52 7 0 1 52 1 0 1 1 2 0 52 0 0 2 33 14 0 20 3 0 16 0 52 7 0 1 48 1 32 2 0 16 0 17 1 16 1 1 8 0 52 0 0 2 52 5 0 1 6 33 14 0 5 16 1 1 9 0 52 0 0 2 52 5 0 1 33 12 0 20 10 0 18 0 16 1 49 2 32 1 0 2 50)
|
|
:constants (
|
|
"="
|
|
"type-of"
|
|
"symbol"
|
|
"symbol-name"
|
|
"list?"
|
|
"not"
|
|
"empty?"
|
|
"first"
|
|
"&key"
|
|
"&rest"
|
|
"scope-define-local"))
|
|
"compile-begin"
|
|
"emit-op"
|
|
50
|
|
"get"
|
|
"upvalues"
|
|
"upvalue-count"
|
|
"len"
|
|
"arity"
|
|
"locals"
|
|
"constants"
|
|
"pool"
|
|
"entries"
|
|
"bytecode"
|
|
"pool-add"
|
|
51
|
|
"emit-u16"
|
|
(code :arity 1 :upvalue-count 1
|
|
:bytecode (20 0 0 18 0 16 0 1 2 0 52 1 0 2 33 6 0 1 3 0 32 3 0 1 4 0 48 2 5 20 0 0 18 0 16 0 1 5 0 52 1 0 2 49 2 50)
|
|
:constants (
|
|
"emit-byte"
|
|
"get"
|
|
"is-local"
|
|
1
|
|
0
|
|
"index"))))
|
|
"compile-define"
|
|
(code :arity 3
|
|
:bytecode (16 1 52 0 0 1 17 3 16 3 52 2 0 1 1 3 0 52 1 0 2 33 10 0 20 4 0 16 3 48 1 32 2 0 16 3 17 4 16 1 52 5 0 1 17 6 16 6 52 7 0 1 52 6 0 1 6 33 18 0 5 16 6 52 0 0 1 52 2 0 1 1 8 0 52 1 0 2 33 16 0 51 9 0 1 7 17 7 16 7 16 6 48 1 32 6 0 16 6 52 0 0 1 17 5 16 2 1 12 0 52 11 0 2 52 10 0 1 52 6 0 1 33 47 0 20 13 0 16 2 16 4 48 2 17 6 20 14 0 16 0 16 5 16 2 4 48 4 5 20 15 0 16 0 1 16 0 48 2 5 20 17 0 16 0 16 6 49 2 32 51 0 20 18 0 16 0 1 19 0 52 11 0 2 16 4 48 2 17 6 20 14 0 16 0 16 5 16 2 4 48 4 5 20 15 0 16 0 1 20 0 48 2 5 20 21 0 16 0 16 6 49 2 50)
|
|
:constants (
|
|
"first"
|
|
"="
|
|
"type-of"
|
|
"symbol"
|
|
"symbol-name"
|
|
"rest"
|
|
"not"
|
|
"empty?"
|
|
"keyword"
|
|
(code :arity 1 :upvalue-count 1
|
|
:bytecode (16 0 52 0 0 1 33 4 0 2 32 43 0 16 0 52 3 0 1 52 2 0 1 1 4 0 52 1 0 2 33 17 0 18 0 16 0 52 5 0 1 52 5 0 1 49 1 32 6 0 16 0 52 3 0 1 50)
|
|
:constants (
|
|
"empty?"
|
|
"="
|
|
"type-of"
|
|
"first"
|
|
"keyword"
|
|
"rest"))
|
|
"nil?"
|
|
"get"
|
|
"parent"
|
|
"scope-define-local"
|
|
"compile-expr"
|
|
"emit-op"
|
|
17
|
|
"emit-byte"
|
|
"pool-add"
|
|
"pool"
|
|
128
|
|
"emit-u16"))
|
|
"compile-set"
|
|
(code :arity 3
|
|
:bytecode (16 1 52 2 0 1 52 1 0 1 1 3 0 52 0 0 2 33 14 0 20 4 0 16 1 52 2 0 1 48 1 32 6 0 16 1 52 2 0 1 17 3 16 1 1 6 0 52 5 0 2 17 4 20 7 0 16 2 16 3 48 2 17 5 20 8 0 16 0 16 4 16 2 4 48 4 5 16 5 1 10 0 52 9 0 2 1 11 0 52 0 0 2 33 30 0 20 12 0 16 0 1 13 0 48 2 5 20 14 0 16 0 16 5 1 15 0 52 9 0 2 49 2 32 87 0 16 5 1 10 0 52 9 0 2 1 16 0 52 0 0 2 33 30 0 20 12 0 16 0 1 17 0 48 2 5 20 14 0 16 0 16 5 1 15 0 52 9 0 2 49 2 32 38 0 20 18 0 16 0 1 19 0 52 9 0 2 16 3 48 2 17 6 20 12 0 16 0 1 20 0 48 2 5 20 21 0 16 0 16 6 49 2 50)
|
|
:constants (
|
|
"="
|
|
"type-of"
|
|
"first"
|
|
"symbol"
|
|
"symbol-name"
|
|
"nth"
|
|
1
|
|
"scope-resolve"
|
|
"compile-expr"
|
|
"get"
|
|
"type"
|
|
"local"
|
|
"emit-op"
|
|
17
|
|
"emit-byte"
|
|
"index"
|
|
"upvalue"
|
|
19
|
|
"pool-add"
|
|
"pool"
|
|
21
|
|
"emit-u16"))
|
|
"compile-quote"
|
|
(code :arity 2
|
|
:bytecode (16 1 52 0 0 1 33 13 0 20 1 0 16 0 1 2 0 49 2 32 13 0 20 3 0 16 0 16 1 52 4 0 1 49 2 50)
|
|
:constants (
|
|
"empty?"
|
|
"emit-op"
|
|
2
|
|
"emit-const"
|
|
"first"))
|
|
"compile-cond"
|
|
(code :arity 4
|
|
:bytecode (1 0 0 5 16 1 52 2 0 1 1 3 0 52 1 0 2 33 13 0 20 4 0 16 0 1 3 0 49 2 32 22 1 16 1 52 5 0 1 17 4 16 1 1 7 0 52 6 0 2 17 5 16 1 52 2 0 1 1 3 0 52 8 0 2 33 12 0 16 1 1 3 0 52 9 0 2 32 4 0 52 10 0 0 17 6 16 4 52 12 0 1 1 13 0 52 11 0 2 6 33 15 0 5 20 14 0 16 4 48 1 1 15 0 52 11 0 2 6 34 8 0 5 16 4 3 52 11 0 2 33 16 0 20 16 0 16 0 16 5 16 2 16 3 49 4 32 162 0 20 16 0 16 0 16 4 16 2 4 48 4 5 20 4 0 16 0 1 17 0 48 2 5 20 18 0 16 0 48 1 17 7 20 19 0 16 0 1 20 0 48 2 5 20 16 0 16 0 16 5 16 2 16 3 48 4 5 20 4 0 16 0 1 21 0 48 2 5 20 18 0 16 0 48 1 17 8 20 19 0 16 0 1 20 0 48 2 5 20 22 0 16 0 16 7 20 18 0 16 0 48 1 16 7 1 3 0 52 24 0 2 52 23 0 2 48 3 5 20 25 0 16 0 16 6 16 2 16 3 48 4 5 20 22 0 16 0 16 8 20 18 0 16 0 48 1 16 8 1 3 0 52 24 0 2 52 23 0 2 49 3 50)
|
|
:constants (
|
|
"Compile (cond test1 body1 test2 body2 ... :else fallback)."
|
|
"<"
|
|
"len"
|
|
2
|
|
"emit-op"
|
|
"first"
|
|
"nth"
|
|
1
|
|
">"
|
|
"slice"
|
|
"list"
|
|
"="
|
|
"type-of"
|
|
"keyword"
|
|
"keyword-name"
|
|
"else"
|
|
"compile-expr"
|
|
33
|
|
"current-offset"
|
|
"emit-i16"
|
|
0
|
|
32
|
|
"patch-i16"
|
|
"-"
|
|
"+"
|
|
"compile-cond"))
|
|
"compile-case"
|
|
(code :arity 4
|
|
:bytecode (1 0 0 5 20 1 0 16 0 16 1 52 2 0 1 16 2 4 48 4 5 16 1 52 3 0 1 17 4 20 4 0 16 0 16 4 16 2 16 3 49 4 50)
|
|
:constants (
|
|
"Compile (case expr val1 body1 val2 body2 ... :else fallback)."
|
|
"compile-expr"
|
|
"first"
|
|
"rest"
|
|
"compile-case-clauses"))
|
|
"compile-case-clauses"
|
|
(code :arity 4
|
|
:bytecode (16 1 52 1 0 1 1 2 0 52 0 0 2 33 24 0 20 3 0 16 0 1 4 0 48 2 5 20 3 0 16 0 1 2 0 49 2 32 106 1 16 1 52 5 0 1 17 4 16 1 1 7 0 52 6 0 2 17 5 16 1 52 1 0 1 1 2 0 52 8 0 2 33 12 0 16 1 1 2 0 52 9 0 2 32 4 0 52 10 0 0 17 6 16 4 52 12 0 1 1 13 0 52 11 0 2 6 33 15 0 5 20 14 0 16 4 48 1 1 15 0 52 11 0 2 6 34 8 0 5 16 4 3 52 11 0 2 33 27 0 20 3 0 16 0 1 4 0 48 2 5 20 16 0 16 0 16 5 16 2 16 3 49 4 32 235 0 20 3 0 16 0 1 17 0 48 2 5 20 16 0 16 0 16 4 16 2 4 48 4 5 20 18 0 16 0 1 20 0 52 19 0 2 1 11 0 48 2 17 7 20 3 0 16 0 1 21 0 48 2 5 20 22 0 16 0 16 7 48 2 5 20 23 0 16 0 1 2 0 48 2 5 20 3 0 16 0 1 24 0 48 2 5 20 25 0 16 0 48 1 17 7 20 26 0 16 0 1 27 0 48 2 5 20 3 0 16 0 1 4 0 48 2 5 20 16 0 16 0 16 5 16 2 16 3 48 4 5 20 3 0 16 0 1 28 0 48 2 5 20 25 0 16 0 48 1 17 8 20 26 0 16 0 1 27 0 48 2 5 20 29 0 16 0 16 7 20 25 0 16 0 48 1 16 7 1 2 0 52 31 0 2 52 30 0 2 48 3 5 20 32 0 16 0 16 6 16 2 16 3 48 4 5 20 29 0 16 0 16 8 20 25 0 16 0 48 1 16 8 1 2 0 52 31 0 2 52 30 0 2 49 3 50)
|
|
:constants (
|
|
"<"
|
|
"len"
|
|
2
|
|
"emit-op"
|
|
5
|
|
"first"
|
|
"nth"
|
|
1
|
|
">"
|
|
"slice"
|
|
"list"
|
|
"="
|
|
"type-of"
|
|
"keyword"
|
|
"keyword-name"
|
|
"else"
|
|
"compile-expr"
|
|
6
|
|
"pool-add"
|
|
"get"
|
|
"pool"
|
|
52
|
|
"emit-u16"
|
|
"emit-byte"
|
|
33
|
|
"current-offset"
|
|
"emit-i16"
|
|
0
|
|
32
|
|
"patch-i16"
|
|
"-"
|
|
"+"
|
|
"compile-case-clauses"))
|
|
"compile-thread"
|
|
(code :arity 4
|
|
:bytecode (1 0 0 5 16 1 52 1 0 1 33 13 0 20 2 0 16 0 1 3 0 49 2 32 67 0 16 1 52 5 0 1 1 6 0 52 4 0 2 33 20 0 20 7 0 16 0 16 1 52 8 0 1 16 2 16 3 49 4 32 31 0 16 1 52 8 0 1 17 4 16 1 52 9 0 1 17 5 20 10 0 16 0 16 4 16 5 16 2 16 3 49 5 50)
|
|
:constants (
|
|
"Compile (-> val (f1 a) (f2 b)) by desugaring to nested calls."
|
|
"empty?"
|
|
"emit-op"
|
|
2
|
|
"="
|
|
"len"
|
|
1
|
|
"compile-expr"
|
|
"first"
|
|
"rest"
|
|
"compile-thread-step"))
|
|
"compile-thread-step"
|
|
(code :arity 5
|
|
:bytecode (16 2 52 0 0 1 33 16 0 20 1 0 16 0 16 1 16 3 16 4 49 4 32 128 0 16 2 52 2 0 1 17 5 16 2 52 3 0 1 17 6 16 4 6 33 7 0 5 16 6 52 0 0 1 17 7 16 5 52 4 0 1 33 25 0 16 5 52 2 0 1 16 1 52 6 0 2 16 5 52 3 0 1 52 5 0 2 32 8 0 16 5 16 1 52 6 0 2 17 8 16 6 52 0 0 1 33 16 0 20 1 0 16 0 16 8 16 3 16 7 49 4 32 28 0 20 1 0 16 0 16 8 16 3 4 48 4 5 20 7 0 16 0 16 8 16 6 16 3 16 4 49 5 50)
|
|
:constants (
|
|
"empty?"
|
|
"compile-expr"
|
|
"first"
|
|
"rest"
|
|
"list?"
|
|
"concat"
|
|
"list"
|
|
"compile-thread-step"))
|
|
"compile-defcomp"
|
|
(code :arity 3
|
|
:bytecode (1 0 0 5 20 1 0 16 0 1 3 0 52 2 0 2 1 4 0 48 2 17 3 20 5 0 16 0 1 6 0 48 2 5 20 7 0 16 0 16 3 48 2 5 20 8 0 16 0 1 12 0 52 11 0 1 52 10 0 1 16 1 52 9 0 2 48 2 5 20 5 0 16 0 1 13 0 48 2 5 20 14 0 16 0 1 15 0 49 2 50)
|
|
:constants (
|
|
"Compile defcomp/defisland — delegates to runtime via GLOBAL_GET + CALL."
|
|
"pool-add"
|
|
"get"
|
|
"pool"
|
|
"eval-defcomp"
|
|
"emit-op"
|
|
20
|
|
"emit-u16"
|
|
"emit-const"
|
|
"concat"
|
|
"list"
|
|
"make-symbol"
|
|
"defcomp"
|
|
48
|
|
"emit-byte"
|
|
1))
|
|
"compile-defmacro"
|
|
(code :arity 3
|
|
:bytecode (1 0 0 5 20 1 0 16 0 1 3 0 52 2 0 2 1 4 0 48 2 17 3 20 5 0 16 0 1 6 0 48 2 5 20 7 0 16 0 16 3 48 2 5 20 8 0 16 0 1 12 0 52 11 0 1 52 10 0 1 16 1 52 9 0 2 48 2 5 20 5 0 16 0 1 13 0 48 2 5 20 14 0 16 0 1 15 0 49 2 50)
|
|
:constants (
|
|
"Compile defmacro — delegates to runtime via GLOBAL_GET + CALL."
|
|
"pool-add"
|
|
"get"
|
|
"pool"
|
|
"eval-defmacro"
|
|
"emit-op"
|
|
20
|
|
"emit-u16"
|
|
"emit-const"
|
|
"concat"
|
|
"list"
|
|
"make-symbol"
|
|
"defmacro"
|
|
48
|
|
"emit-byte"
|
|
1))
|
|
"compile-quasiquote"
|
|
(code :arity 3
|
|
:bytecode (1 0 0 5 20 1 0 16 0 16 1 16 2 49 3 50)
|
|
:constants (
|
|
"Compile quasiquote inline — walks the template at compile time,
|
|
emitting code that builds the structure at runtime. Unquoted
|
|
expressions are compiled normally (resolving locals/upvalues),
|
|
avoiding the qq-expand-runtime env-lookup limitation."
|
|
"compile-qq-expr"))
|
|
"compile-qq-expr"
|
|
(code :arity 3
|
|
:bytecode (1 0 0 5 16 1 52 3 0 1 1 4 0 52 2 0 2 52 1 0 1 33 12 0 20 5 0 16 0 16 1 49 2 32 109 0 16 1 52 6 0 1 33 24 0 20 7 0 16 0 1 8 0 48 2 5 20 9 0 16 0 1 10 0 49 2 32 76 0 16 1 52 11 0 1 17 3 16 3 52 3 0 1 1 12 0 52 2 0 2 6 33 15 0 5 20 13 0 16 3 48 1 1 14 0 52 2 0 2 33 22 0 20 15 0 16 0 16 1 1 17 0 52 16 0 2 16 2 4 49 4 32 11 0 20 18 0 16 0 16 1 16 2 49 3 50)
|
|
:constants (
|
|
"Compile a quasiquote sub-expression."
|
|
"not"
|
|
"="
|
|
"type-of"
|
|
"list"
|
|
"emit-const"
|
|
"empty?"
|
|
"emit-op"
|
|
64
|
|
"emit-u16"
|
|
0
|
|
"first"
|
|
"symbol"
|
|
"symbol-name"
|
|
"unquote"
|
|
"compile-expr"
|
|
"nth"
|
|
1
|
|
"compile-qq-list"))
|
|
"compile-qq-list"
|
|
(code :arity 3
|
|
:bytecode (1 0 0 5 51 2 0 16 1 52 1 0 2 17 3 16 3 52 3 0 1 33 41 0 51 5 0 1 0 1 2 16 1 52 4 0 2 5 20 6 0 16 0 1 7 0 48 2 5 20 8 0 16 0 16 1 52 9 0 1 49 2 32 142 0 1 10 0 17 4 1 10 0 17 5 51 11 0 1 5 1 0 1 4 1 2 16 1 52 4 0 2 5 16 5 1 10 0 52 12 0 2 33 35 0 20 6 0 16 0 1 7 0 48 2 5 20 8 0 16 0 16 5 48 2 5 16 4 1 14 0 52 13 0 2 17 4 32 1 0 2 5 16 4 1 14 0 52 12 0 2 33 52 0 20 15 0 16 0 1 17 0 52 16 0 2 1 18 0 48 2 17 6 20 6 0 16 0 1 19 0 48 2 5 20 8 0 16 0 16 6 48 2 5 20 20 0 16 0 16 4 49 2 32 1 0 2 50)
|
|
:constants (
|
|
"Compile a quasiquote list. Handles splice-unquote by building
|
|
segments and concatenating them."
|
|
"some"
|
|
(code :arity 1
|
|
:bytecode (16 0 52 1 0 1 1 2 0 52 0 0 2 6 33 59 0 5 16 0 52 4 0 1 1 5 0 52 3 0 2 6 33 41 0 5 16 0 52 6 0 1 52 1 0 1 1 7 0 52 0 0 2 6 33 19 0 5 20 8 0 16 0 52 6 0 1 48 1 1 9 0 52 0 0 2 50)
|
|
:constants (
|
|
"="
|
|
"type-of"
|
|
"list"
|
|
">="
|
|
"len"
|
|
2
|
|
"first"
|
|
"symbol"
|
|
"symbol-name"
|
|
"splice-unquote"))
|
|
"not"
|
|
"for-each"
|
|
(code :arity 1 :upvalue-count 2
|
|
:bytecode (20 0 0 18 0 16 0 18 1 49 3 50)
|
|
:constants (
|
|
"compile-qq-expr"))
|
|
"emit-op"
|
|
64
|
|
"emit-u16"
|
|
"len"
|
|
0
|
|
(code :arity 1 :upvalue-count 4
|
|
:bytecode (16 0 52 1 0 1 1 2 0 52 0 0 2 6 33 59 0 5 16 0 52 4 0 1 1 5 0 52 3 0 2 6 33 41 0 5 16 0 52 6 0 1 52 1 0 1 1 7 0 52 0 0 2 6 33 19 0 5 20 8 0 16 0 52 6 0 1 48 1 1 9 0 52 0 0 2 33 89 0 18 0 1 11 0 52 10 0 2 33 41 0 20 12 0 18 1 1 13 0 48 2 5 20 14 0 18 1 18 0 48 2 5 18 2 1 16 0 52 15 0 2 19 2 5 1 11 0 19 0 32 1 0 2 5 20 17 0 18 1 16 0 1 16 0 52 18 0 2 18 3 4 48 4 5 18 2 1 16 0 52 15 0 2 19 2 32 23 0 20 19 0 18 1 16 0 18 3 48 3 5 18 0 1 16 0 52 15 0 2 19 0 50)
|
|
:constants (
|
|
"="
|
|
"type-of"
|
|
"list"
|
|
">="
|
|
"len"
|
|
2
|
|
"first"
|
|
"symbol"
|
|
"symbol-name"
|
|
"splice-unquote"
|
|
">"
|
|
0
|
|
"emit-op"
|
|
64
|
|
"emit-u16"
|
|
"+"
|
|
1
|
|
"compile-expr"
|
|
"nth"
|
|
"compile-qq-expr"))
|
|
">"
|
|
"+"
|
|
1
|
|
"pool-add"
|
|
"get"
|
|
"pool"
|
|
"concat"
|
|
52
|
|
"emit-byte"))
|
|
"compile-call"
|
|
(code :arity 5
|
|
:bytecode (16 1 52 1 0 1 1 2 0 52 0 0 2 6 33 80 0 5 20 3 0 16 1 48 1 17 6 20 6 0 16 3 16 6 48 2 1 7 0 52 5 0 2 1 8 0 52 0 0 2 52 4 0 1 6 33 39 0 5 20 6 0 16 3 16 6 48 2 1 7 0 52 5 0 2 1 9 0 52 0 0 2 52 4 0 1 6 33 7 0 5 16 6 52 10 0 1 17 5 16 5 33 82 0 20 3 0 16 1 48 1 17 6 16 2 52 11 0 1 17 7 20 12 0 16 0 1 13 0 52 5 0 2 16 6 48 2 17 8 51 15 0 1 0 1 3 16 2 52 14 0 2 5 20 16 0 16 0 1 17 0 48 2 5 20 18 0 16 0 16 8 48 2 5 20 19 0 16 0 16 7 49 2 32 83 0 20 20 0 16 0 16 1 16 3 4 48 4 5 51 15 0 1 0 1 3 16 2 52 14 0 2 5 16 4 33 27 0 20 16 0 16 0 1 21 0 48 2 5 20 19 0 16 0 16 2 52 11 0 1 49 2 32 24 0 20 16 0 16 0 1 22 0 48 2 5 20 19 0 16 0 16 2 52 11 0 1 49 2 50)
|
|
:constants (
|
|
"="
|
|
"type-of"
|
|
"symbol"
|
|
"symbol-name"
|
|
"not"
|
|
"get"
|
|
"scope-resolve"
|
|
"type"
|
|
"local"
|
|
"upvalue"
|
|
"primitive?"
|
|
"len"
|
|
"pool-add"
|
|
"pool"
|
|
"for-each"
|
|
(code :arity 1 :upvalue-count 2
|
|
:bytecode (20 0 0 18 0 16 0 18 1 4 49 4 50)
|
|
:constants (
|
|
"compile-expr"))
|
|
"emit-op"
|
|
52
|
|
"emit-u16"
|
|
"emit-byte"
|
|
"compile-expr"
|
|
49
|
|
48))
|
|
"compile"
|
|
(code :arity 1
|
|
:bytecode (1 0 0 5 20 1 0 48 0 17 1 20 2 0 2 48 1 17 2 20 3 0 16 1 16 0 16 2 4 48 4 5 20 4 0 16 1 1 5 0 48 2 5 1 6 0 16 1 1 8 0 52 7 0 2 1 9 0 52 7 0 2 1 10 0 16 1 1 10 0 52 7 0 2 65 2 0 50)
|
|
:constants (
|
|
"Compile a single SX expression to a bytecode module."
|
|
"make-emitter"
|
|
"make-scope"
|
|
"compile-expr"
|
|
"emit-op"
|
|
50
|
|
"constants"
|
|
"get"
|
|
"pool"
|
|
"entries"
|
|
"bytecode"))
|
|
"compile-module"
|
|
(code :arity 1
|
|
:bytecode (1 0 0 5 20 1 0 48 0 17 1 20 2 0 2 48 1 17 2 51 4 0 1 1 1 2 16 0 52 5 0 1 52 3 0 2 5 20 6 0 16 1 16 0 52 7 0 1 16 2 4 48 4 5 20 8 0 16 1 1 9 0 48 2 5 1 10 0 16 1 1 12 0 52 11 0 2 1 13 0 52 11 0 2 1 14 0 16 1 1 14 0 52 11 0 2 65 2 0 50)
|
|
:constants (
|
|
"Compile a list of top-level expressions to a bytecode module."
|
|
"make-emitter"
|
|
"make-scope"
|
|
"for-each"
|
|
(code :arity 1 :upvalue-count 2
|
|
:bytecode (20 0 0 18 0 16 0 18 1 4 48 4 5 20 1 0 18 0 1 2 0 49 2 50)
|
|
:constants (
|
|
"compile-expr"
|
|
"emit-op"
|
|
5))
|
|
"init"
|
|
"compile-expr"
|
|
"last"
|
|
"emit-op"
|
|
50
|
|
"constants"
|
|
"get"
|
|
"pool"
|
|
"entries"
|
|
"bytecode")))))
|