kernel+bundle: fix nil-bytecode .sxbc (compile-blob serializer dropped Integer)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 46s
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 46s
Every .sxbc shipped with `:bytecode (nil nil ...)` and `:arity nil`, so the WASM
kernel's vm.sx hit "VM: unknown opcode 0" on every module and fell back to .sx
source (slower, noisy console). Root cause: `raw_serialize` in the `compile-blob`
command (sx_server.ml) handles `Number` but not `Integer`, and bytecode opcodes +
arity/upvalue-count are `Integer`s — so they fell through to the `_ -> "nil"`
catch-all and serialized as nil. Same class of bug as the value_to_js Integer gap
(689dae7d). It went unnoticed because source-fallback masks it. Add the Integer
case and regenerate: the web stack now loads entirely from bytecode (0 unknown-
opcode warnings, 0 source fallbacks), boost + SPA unchanged. compiler.sx in the
bundle was also stale — re-synced to the canonical lib/compiler.sx.
Verified: native host conformance 271/271; chromium boots with 0 unknown-opcode
warnings + 0 source-fallback loads; spa-check still passes (boost 6/6, fragment
swap). Prereq for content-addressing the assets (caching real bytecode, not nil).
This commit is contained in:
@@ -1,3 +1,3 @@
|
||||
(sxbc 1 "0bc2cc2f659d5a90"
|
||||
(code
|
||||
:constants ("assert-signal-value" {:upvalue-count nil :arity nil :constants ("deref" "assert=" "str" "Expected signal value " ", got ") :bytecode (nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil)} "assert-signal-has-subscribers" {:upvalue-count nil :arity nil :constants ("assert" ">" "len" "signal-subscribers" nil "Expected signal to have subscribers") :bytecode (nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil)} "assert-signal-no-subscribers" {:upvalue-count nil :arity nil :constants ("assert" "=" "len" "signal-subscribers" nil "Expected signal to have no subscribers") :bytecode (nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil)} "assert-signal-subscriber-count" {:upvalue-count nil :arity nil :constants ("len" "signal-subscribers" "assert=" "str" "Expected " " subscribers, got ") :bytecode (nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil)} "simulate-signal-set!" {:upvalue-count nil :arity nil :constants ("reset!") :bytecode (nil nil nil nil nil nil nil nil nil nil)} "simulate-signal-swap!" {:upvalue-count nil :arity nil :constants ("swap!") :bytecode (nil nil nil nil nil nil nil nil nil nil)} "assert-computed-dep-count" {:upvalue-count nil :arity nil :constants ("len" "signal-deps" "assert=" "str" "Expected " " deps, got ") :bytecode (nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil)} "assert-computed-depends-on" {:upvalue-count nil :arity nil :constants ("assert" "contains?" "signal-deps" "Expected computed to depend on the given signal") :bytecode (nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil)} "count-effect-runs" {:upvalue-count nil :arity nil :constants ("signal" nil "effect" {:upvalue-count nil :arity nil :constants ("deref") :bytecode (nil nil nil nil nil nil nil)} {:upvalue-count nil :arity nil :constants ("+" nil "cek-call") :bytecode (nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil)}) :bytecode (nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil)} "make-test-signal" {:upvalue-count nil :arity nil :constants ("signal" "list" "effect" {:upvalue-count nil :arity nil :constants ("append!" "deref") :bytecode (nil nil nil nil nil nil nil nil nil nil nil nil nil)} "history") :bytecode (nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil)} "assert-batch-coalesces" {:upvalue-count nil :arity nil :constants (nil "signal" "effect" {:upvalue-count nil :arity nil :constants ("deref" "+" nil) :bytecode (nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil)} "batch" "assert=" "str" "Expected " " notifications, got ") :bytecode (nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil)} {:library (sx harness-reactive) :op "import"}) :bytecode (nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil)))
|
||||
:constants ("assert-signal-value" {:upvalue-count 0 :arity 2 :constants ("deref" "assert=" "Expected signal value " ", got " "str") :bytecode (16 0 52 0 0 1 17 2 20 1 0 16 2 16 1 1 2 0 16 1 1 3 0 16 2 52 4 0 4 49 3 50)} "assert-signal-has-subscribers" {:upvalue-count 0 :arity 1 :constants ("assert" "signal-subscribers" 0 "Expected signal to have subscribers") :bytecode (20 0 0 20 1 0 16 0 48 1 168 1 2 0 166 1 3 0 49 2 50)} "assert-signal-no-subscribers" {:upvalue-count 0 :arity 1 :constants ("assert" "signal-subscribers" 0 "Expected signal to have no subscribers") :bytecode (20 0 0 20 1 0 16 0 48 1 168 1 2 0 164 1 3 0 49 2 50)} "assert-signal-subscriber-count" {:upvalue-count 0 :arity 2 :constants ("signal-subscribers" "assert=" "Expected " " subscribers, got " "str") :bytecode (20 0 0 16 0 48 1 168 17 2 20 1 0 16 2 16 1 1 2 0 16 1 1 3 0 16 2 52 4 0 4 49 3 50)} "simulate-signal-set!" {:upvalue-count 0 :arity 2 :constants ("reset!") :bytecode (20 0 0 16 0 16 1 49 2 50)} "simulate-signal-swap!" {:upvalue-count 0 :arity 2 :constants ("swap!") :bytecode (20 0 0 16 0 16 1 49 2 50)} "assert-computed-dep-count" {:upvalue-count 0 :arity 2 :constants ("signal-deps" "assert=" "Expected " " deps, got " "str") :bytecode (20 0 0 16 0 48 1 168 17 2 20 1 0 16 2 16 1 1 2 0 16 1 1 3 0 16 2 52 4 0 4 49 3 50)} "assert-computed-depends-on" {:upvalue-count 0 :arity 2 :constants ("assert" "signal-deps" "contains?" "Expected computed to depend on the given signal") :bytecode (20 0 0 20 1 0 16 0 48 1 16 1 52 2 0 2 1 3 0 49 2 50)} "count-effect-runs" {:upvalue-count 0 :arity 1 :constants ("signal" 0 "effect" {:upvalue-count 1 :arity 0 :constants ("deref") :bytecode (18 0 52 0 0 1 50)} {:upvalue-count 2 :arity 0 :constants (1 "cek-call") :bytecode (18 0 1 0 0 160 19 0 5 18 1 2 52 1 0 2 50)}) :bytecode (20 0 0 1 1 0 48 1 17 1 20 2 0 51 3 0 1 1 48 1 5 1 1 0 17 2 20 2 0 51 4 0 1 2 1 0 48 1 17 3 16 2 50)} "make-test-signal" {:upvalue-count 0 :arity 1 :constants ("signal" "list" "effect" {:upvalue-count 2 :arity 0 :constants ("deref" "append!") :bytecode (18 0 18 1 52 0 0 1 52 1 0 2 50)} "history") :bytecode (20 0 0 16 0 48 1 17 1 52 1 0 0 17 2 20 2 0 51 3 0 1 2 1 1 48 1 5 1 0 0 16 1 1 4 0 16 2 65 2 0 50)} "assert-batch-coalesces" {:upvalue-count 0 :arity 2 :constants (0 "signal" "effect" {:upvalue-count 2 :arity 0 :constants ("deref" 1) :bytecode (18 0 52 0 0 1 5 18 1 1 1 0 160 19 1 50)} "batch" "assert=" "Expected " " notifications, got " "str") :bytecode (1 0 0 17 2 20 1 0 1 0 0 48 1 17 3 20 2 0 51 3 0 1 3 1 2 48 1 5 1 0 0 17 2 5 20 4 0 16 0 48 1 5 20 5 0 16 2 16 1 1 6 0 16 1 1 7 0 16 2 52 8 0 4 49 3 50)} {:library (sx harness-reactive) :op "import"}) :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 1 22 0 112 50)))
|
||||
|
||||
Reference in New Issue
Block a user