Rebuild WASM artifacts after 10d bytecode expansion
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -359,6 +359,12 @@
|
||||
(emit-op em 52)
|
||||
(emit-u16 em (pool-add (get em "pool") "scope-emitted"))
|
||||
(emit-byte em 1))
|
||||
(= name "deref")
|
||||
(do
|
||||
(compile-expr em (first args) scope false)
|
||||
(emit-op em 52)
|
||||
(emit-u16 em (pool-add (get em "pool") "deref"))
|
||||
(emit-byte em 1))
|
||||
(= name "perform")
|
||||
(let
|
||||
()
|
||||
@@ -964,6 +970,170 @@
|
||||
tail?
|
||||
(do (emit-op em 49) (emit-byte em (len args)))
|
||||
(do (emit-op em 48) (emit-byte em (len args)))))))))
|
||||
(define
|
||||
compile-provide
|
||||
(fn
|
||||
(em args scope tail?)
|
||||
(let
|
||||
((first-arg (first args))
|
||||
(name
|
||||
(cond
|
||||
(= (type-of first-arg) "keyword")
|
||||
(keyword-name first-arg)
|
||||
(= (type-of first-arg) "string")
|
||||
first-arg
|
||||
:else (symbol-name first-arg)))
|
||||
(val-expr (nth args 1))
|
||||
(body (slice args 2))
|
||||
(name-idx (pool-add (get em "pool") name)))
|
||||
(emit-op em 1)
|
||||
(emit-u16 em name-idx)
|
||||
(compile-expr em val-expr scope false)
|
||||
(emit-op em 52)
|
||||
(emit-u16 em (pool-add (get em "pool") "scope-push!"))
|
||||
(emit-byte em 2)
|
||||
(emit-op em 5)
|
||||
(if
|
||||
(empty? body)
|
||||
(emit-op em 2)
|
||||
(compile-begin em body scope false))
|
||||
(emit-op em 1)
|
||||
(emit-u16 em name-idx)
|
||||
(emit-op em 52)
|
||||
(emit-u16 em (pool-add (get em "pool") "scope-pop!"))
|
||||
(emit-byte em 1)
|
||||
(emit-op em 5))))
|
||||
(define
|
||||
compile-scope
|
||||
(fn
|
||||
(em args scope tail?)
|
||||
(let
|
||||
((first-arg (first args))
|
||||
(name
|
||||
(if
|
||||
(= (type-of first-arg) "keyword")
|
||||
(keyword-name first-arg)
|
||||
(symbol-name first-arg)))
|
||||
(rest-args (rest args))
|
||||
(name-idx (pool-add (get em "pool") name)))
|
||||
(if
|
||||
(and
|
||||
(>= (len rest-args) 2)
|
||||
(= (type-of (first rest-args)) "keyword")
|
||||
(= (keyword-name (first rest-args)) "value"))
|
||||
(let
|
||||
((val-expr (nth rest-args 1)) (body (slice rest-args 2)))
|
||||
(emit-op em 1)
|
||||
(emit-u16 em name-idx)
|
||||
(compile-expr em val-expr scope false)
|
||||
(emit-op em 52)
|
||||
(emit-u16 em (pool-add (get em "pool") "scope-push!"))
|
||||
(emit-byte em 2)
|
||||
(emit-op em 5)
|
||||
(if
|
||||
(empty? body)
|
||||
(emit-op em 2)
|
||||
(compile-begin em body scope false))
|
||||
(emit-op em 1)
|
||||
(emit-u16 em name-idx)
|
||||
(emit-op em 52)
|
||||
(emit-u16 em (pool-add (get em "pool") "scope-pop!"))
|
||||
(emit-byte em 1)
|
||||
(emit-op em 5))
|
||||
(let
|
||||
((body rest-args))
|
||||
(emit-op em 1)
|
||||
(emit-u16 em name-idx)
|
||||
(emit-op em 2)
|
||||
(emit-op em 52)
|
||||
(emit-u16 em (pool-add (get em "pool") "scope-push!"))
|
||||
(emit-byte em 2)
|
||||
(emit-op em 5)
|
||||
(if
|
||||
(empty? body)
|
||||
(emit-op em 2)
|
||||
(compile-begin em body scope false))
|
||||
(emit-op em 1)
|
||||
(emit-u16 em name-idx)
|
||||
(emit-op em 52)
|
||||
(emit-u16 em (pool-add (get em "pool") "scope-pop!"))
|
||||
(emit-byte em 1)
|
||||
(emit-op em 5))))))
|
||||
(define
|
||||
compile-guard
|
||||
(fn
|
||||
(em args scope tail?)
|
||||
(let
|
||||
((guard-clause (first args))
|
||||
(body (rest args))
|
||||
(guard-scope (make-scope scope)))
|
||||
(let
|
||||
((var-name (symbol-name (first guard-clause)))
|
||||
(clauses (rest guard-clause))
|
||||
(var-slot (scope-define-local guard-scope var-name)))
|
||||
(emit-op em 35)
|
||||
(let
|
||||
((handler-offset (current-offset em)))
|
||||
(emit-i16 em 0)
|
||||
(compile-begin em body guard-scope false)
|
||||
(emit-op em 36)
|
||||
(emit-op em 32)
|
||||
(let
|
||||
((done-jump (current-offset em)))
|
||||
(emit-i16 em 0)
|
||||
(patch-i16
|
||||
em
|
||||
handler-offset
|
||||
(- (current-offset em) (+ handler-offset 2)))
|
||||
(emit-op em 17)
|
||||
(emit-byte em var-slot)
|
||||
(emit-op em 5)
|
||||
(compile-guard-clauses em clauses guard-scope var-slot tail?)
|
||||
(patch-i16
|
||||
em
|
||||
done-jump
|
||||
(- (current-offset em) (+ done-jump 2)))))))))
|
||||
(define
|
||||
compile-guard-clauses
|
||||
(fn
|
||||
(em clauses scope var-slot tail?)
|
||||
(if
|
||||
(empty? clauses)
|
||||
(do (emit-op em 16) (emit-byte em var-slot) (emit-op em 37))
|
||||
(let
|
||||
((clause (first clauses))
|
||||
(rest-clauses (rest clauses))
|
||||
(test (first clause))
|
||||
(body (rest clause)))
|
||||
(if
|
||||
(or
|
||||
(and
|
||||
(= (type-of test) "keyword")
|
||||
(= (keyword-name test) "else"))
|
||||
(= test true))
|
||||
(compile-begin em body scope tail?)
|
||||
(do
|
||||
(compile-expr em test scope false)
|
||||
(emit-op em 33)
|
||||
(let
|
||||
((skip (current-offset em)))
|
||||
(emit-i16 em 0)
|
||||
(compile-begin em body scope tail?)
|
||||
(emit-op em 32)
|
||||
(let
|
||||
((end-jump (current-offset em)))
|
||||
(emit-i16 em 0)
|
||||
(patch-i16 em skip (- (current-offset em) (+ skip 2)))
|
||||
(compile-guard-clauses
|
||||
em
|
||||
rest-clauses
|
||||
scope
|
||||
var-slot
|
||||
tail?)
|
||||
(patch-i16
|
||||
em
|
||||
end-jump
|
||||
(- (current-offset em) (+ end-jump 2)))))))))))
|
||||
(define
|
||||
compile
|
||||
(fn
|
||||
@@ -989,129 +1159,4 @@
|
||||
{:constants (get (get em "pool") "entries") :bytecode (get em "bytecode")}))))) ;; end define-library
|
||||
|
||||
;; Re-export to global namespace for backward compatibility
|
||||
(define
|
||||
compile-provide
|
||||
(fn
|
||||
(em args scope tail?)
|
||||
(let
|
||||
((first-arg (first args))
|
||||
(name
|
||||
(cond
|
||||
(= (type-of first-arg) "keyword")
|
||||
(keyword-name first-arg)
|
||||
(= (type-of first-arg) "string")
|
||||
first-arg
|
||||
:else (symbol-name first-arg)))
|
||||
(val-expr (nth args 1))
|
||||
(body (slice args 2))
|
||||
(name-idx (pool-add (get em "pool") name)))
|
||||
(emit-op em 1)
|
||||
(emit-u16 em name-idx)
|
||||
(compile-expr em val-expr scope false)
|
||||
(emit-op em 52)
|
||||
(emit-u16 em (pool-add (get em "pool") "scope-push!"))
|
||||
(emit-byte em 2)
|
||||
(emit-op em 5)
|
||||
(if (empty? body) (emit-op em 2) (compile-begin em body scope false))
|
||||
(emit-op em 1)
|
||||
(emit-u16 em name-idx)
|
||||
(emit-op em 52)
|
||||
(emit-u16 em (pool-add (get em "pool") "scope-pop!"))
|
||||
(emit-byte em 1)
|
||||
(emit-op em 5))))
|
||||
|
||||
(define
|
||||
compile-scope
|
||||
(fn
|
||||
(em args scope tail?)
|
||||
(let
|
||||
((first-arg (first args))
|
||||
(name
|
||||
(if
|
||||
(= (type-of first-arg) "keyword")
|
||||
(keyword-name first-arg)
|
||||
(symbol-name first-arg)))
|
||||
(rest-args (rest args))
|
||||
(name-idx (pool-add (get em "pool") name)))
|
||||
(if
|
||||
(and
|
||||
(>= (len rest-args) 2)
|
||||
(= (type-of (first rest-args)) "keyword")
|
||||
(= (keyword-name (first rest-args)) "value"))
|
||||
(let
|
||||
((val-expr (nth rest-args 1)) (body (slice rest-args 2)))
|
||||
(emit-op em 1)
|
||||
(emit-u16 em name-idx)
|
||||
(compile-expr em val-expr scope false)
|
||||
(emit-op em 52)
|
||||
(emit-u16 em (pool-add (get em "pool") "scope-push!"))
|
||||
(emit-byte em 2)
|
||||
(emit-op em 5)
|
||||
(if
|
||||
(empty? body)
|
||||
(emit-op em 2)
|
||||
(compile-begin em body scope false))
|
||||
(emit-op em 1)
|
||||
(emit-u16 em name-idx)
|
||||
(emit-op em 52)
|
||||
(emit-u16 em (pool-add (get em "pool") "scope-pop!"))
|
||||
(emit-byte em 1)
|
||||
(emit-op em 5))
|
||||
(let
|
||||
((body rest-args))
|
||||
(emit-op em 1)
|
||||
(emit-u16 em name-idx)
|
||||
(emit-op em 2)
|
||||
(emit-op em 52)
|
||||
(emit-u16 em (pool-add (get em "pool") "scope-push!"))
|
||||
(emit-byte em 2)
|
||||
(emit-op em 5)
|
||||
(if
|
||||
(empty? body)
|
||||
(emit-op em 2)
|
||||
(compile-begin em body scope false))
|
||||
(emit-op em 1)
|
||||
(emit-u16 em name-idx)
|
||||
(emit-op em 52)
|
||||
(emit-u16 em (pool-add (get em "pool") "scope-pop!"))
|
||||
(emit-byte em 1)
|
||||
(emit-op em 5))))))
|
||||
|
||||
(define
|
||||
compile-guard-clauses
|
||||
(fn
|
||||
(em clauses scope var-slot tail?)
|
||||
(if
|
||||
(empty? clauses)
|
||||
(do (emit-op em 16) (emit-byte em var-slot) (emit-op em 37))
|
||||
(let
|
||||
((clause (first clauses))
|
||||
(rest-clauses (rest clauses))
|
||||
(test (first clause))
|
||||
(body (rest clause)))
|
||||
(if
|
||||
(or
|
||||
(and
|
||||
(= (type-of test) "keyword")
|
||||
(= (keyword-name test) "else"))
|
||||
(= test true))
|
||||
(compile-begin em body scope tail?)
|
||||
(do
|
||||
(compile-expr em test scope false)
|
||||
(emit-op em 33)
|
||||
(let
|
||||
((skip (current-offset em)))
|
||||
(emit-i16 em 0)
|
||||
(compile-begin em body scope tail?)
|
||||
(emit-op em 32)
|
||||
(let
|
||||
((end-jump (current-offset em)))
|
||||
(emit-i16 em 0)
|
||||
(patch-i16 em skip (- (current-offset em) (+ skip 2)))
|
||||
(compile-guard-clauses em rest-clauses scope var-slot tail?)
|
||||
(patch-i16
|
||||
em
|
||||
end-jump
|
||||
(- (current-offset em) (+ end-jump 2)))))))))))
|
||||
|
||||
(import (sx compiler))
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,3 +1,3 @@
|
||||
(sxbc 1 "0bc2cc2f659d5a90"
|
||||
(code
|
||||
:constants ("assert-signal-value" {:upvalue-count 0 :arity 2 :constants ("deref" "assert=" "str" "Expected signal value " ", got ") :bytecode (20 0 0 16 0 48 1 17 2 20 1 0 16 2 16 1 1 3 0 16 1 1 4 0 16 2 52 2 0 4 49 3 50)} "assert-signal-has-subscribers" {:upvalue-count 0 :arity 1 :constants ("assert" ">" "len" "signal-subscribers" 0 "Expected signal to have subscribers") :bytecode (20 0 0 20 3 0 16 0 48 1 52 2 0 1 1 4 0 52 1 0 2 1 5 0 49 2 50)} "assert-signal-no-subscribers" {:upvalue-count 0 :arity 1 :constants ("assert" "=" "len" "signal-subscribers" 0 "Expected signal to have no subscribers") :bytecode (20 0 0 20 3 0 16 0 48 1 52 2 0 1 1 4 0 52 1 0 2 1 5 0 49 2 50)} "assert-signal-subscriber-count" {:upvalue-count 0 :arity 2 :constants ("len" "signal-subscribers" "assert=" "str" "Expected " " subscribers, got ") :bytecode (20 1 0 16 0 48 1 52 0 0 1 17 2 20 2 0 16 2 16 1 1 4 0 16 1 1 5 0 16 2 52 3 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 ("len" "signal-deps" "assert=" "str" "Expected " " deps, got ") :bytecode (20 1 0 16 0 48 1 52 0 0 1 17 2 20 2 0 16 2 16 1 1 4 0 16 1 1 5 0 16 2 52 3 0 4 49 3 50)} "assert-computed-depends-on" {:upvalue-count 0 :arity 2 :constants ("assert" "contains?" "signal-deps" "Expected computed to depend on the given signal") :bytecode (20 0 0 20 2 0 16 0 48 1 16 1 52 1 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 (20 0 0 18 0 49 1 50)} {:upvalue-count 2 :arity 0 :constants ("+" 1 "cek-call") :bytecode (18 0 1 1 0 52 0 0 2 19 0 5 18 1 2 52 2 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 ("append!" "deref") :bytecode (18 0 20 1 0 18 1 48 1 52 0 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 (20 0 0 18 0 48 1 5 18 1 1 2 0 52 1 0 2 19 1 50)} "batch" "assert=" "str" "Expected " " notifications, got ") :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 7 0 16 1 1 8 0 16 2 52 6 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)))
|
||||
:constants ("assert-signal-value" {:upvalue-count 0 :arity 2 :constants ("deref" "assert=" "str" "Expected signal value " ", got ") :bytecode (16 0 52 0 0 1 17 2 20 1 0 16 2 16 1 1 3 0 16 1 1 4 0 16 2 52 2 0 4 49 3 50)} "assert-signal-has-subscribers" {:upvalue-count 0 :arity 1 :constants ("assert" ">" "len" "signal-subscribers" 0 "Expected signal to have subscribers") :bytecode (20 0 0 20 3 0 16 0 48 1 52 2 0 1 1 4 0 52 1 0 2 1 5 0 49 2 50)} "assert-signal-no-subscribers" {:upvalue-count 0 :arity 1 :constants ("assert" "=" "len" "signal-subscribers" 0 "Expected signal to have no subscribers") :bytecode (20 0 0 20 3 0 16 0 48 1 52 2 0 1 1 4 0 52 1 0 2 1 5 0 49 2 50)} "assert-signal-subscriber-count" {:upvalue-count 0 :arity 2 :constants ("len" "signal-subscribers" "assert=" "str" "Expected " " subscribers, got ") :bytecode (20 1 0 16 0 48 1 52 0 0 1 17 2 20 2 0 16 2 16 1 1 4 0 16 1 1 5 0 16 2 52 3 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 ("len" "signal-deps" "assert=" "str" "Expected " " deps, got ") :bytecode (20 1 0 16 0 48 1 52 0 0 1 17 2 20 2 0 16 2 16 1 1 4 0 16 1 1 5 0 16 2 52 3 0 4 49 3 50)} "assert-computed-depends-on" {:upvalue-count 0 :arity 2 :constants ("assert" "contains?" "signal-deps" "Expected computed to depend on the given signal") :bytecode (20 0 0 20 2 0 16 0 48 1 16 1 52 1 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 1 0 52 0 0 2 19 0 5 18 1 2 52 2 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 ("append!" "deref") :bytecode (18 0 18 1 52 1 0 1 52 0 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 2 0 52 1 0 2 19 1 50)} "batch" "assert=" "str" "Expected " " notifications, got ") :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 7 0 16 1 1 8 0 16 2 52 6 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)))
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1792,7 +1792,7 @@
|
||||
blake2_js_for_wasm_create: blake2_js_for_wasm_create};
|
||||
}
|
||||
(globalThis))
|
||||
({"link":[["runtime-0db9b496",0],["prelude-d7e4b000",0],["stdlib-23ce0836",[]],["sx-3af91abd",[2]],["jsoo_runtime-f96b44a8",[2]],["js_of_ocaml-651f6707",[2,4]],["dune__exe__Sx_browser-19f4e198",[2,3,5]],["std_exit-10fb8830",[2]],["start-f5d3f095",0]],"generated":(b=>{var
|
||||
({"link":[["runtime-0db9b496",0],["prelude-d7e4b000",0],["stdlib-23ce0836",[]],["sx-7dd7570e",[2]],["jsoo_runtime-f96b44a8",[2]],["js_of_ocaml-651f6707",[2,4]],["dune__exe__Sx_browser-19f4e198",[2,3,5]],["std_exit-10fb8830",[2]],["start-f5d3f095",0]],"generated":(b=>{var
|
||||
c=b,a=b?.module?.export||b;return{"env":{"caml_ba_kind_of_typed_array":()=>{throw new
|
||||
Error("caml_ba_kind_of_typed_array not implemented")},"caml_exn_with_js_backtrace":()=>{throw new
|
||||
Error("caml_exn_with_js_backtrace not implemented")},"caml_int64_create_lo_mi_hi":()=>{throw new
|
||||
|
||||
Reference in New Issue
Block a user