Add .sxbc s-expression bytecode format
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>
This commit is contained in:
948
shared/static/wasm/sx/compiler.sxbc
Normal file
948
shared/static/wasm/sx/compiler.sxbc
Normal file
@@ -0,0 +1,948 @@
|
||||
(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")))))
|
||||
Reference in New Issue
Block a user