jolt/host/chez
Yogthos 4461179804 Fix direct-link crash on a non-fn var called as a function
Under --direct-link a top-level def binds jv$<fqn> and app->app calls bound directly
to it. emit-invoke raw-applied that binding for any var callee, but only a fn-valued
def is a Scheme procedure: (def cfg {...}) then (cfg :a) emitted (jv$cfg :a), applying
a pmap -> "attempt to apply non-procedure". Maps/sets/keywords are invokable in Clojure
via jolt-invoke, which the indirect path used, so this only bit closed-world builds.

Track which direct-linked vars hold fn literals (direct-link-fns, registered at the def
site when the init op is :fn) and only raw-apply those. A non-fn callee falls through to
the jolt-invoke branch, which still uses the direct jv$ binding as the invoke target —
so the var-deref is still skipped, just not the dispatch.

Seed source: re-minted. Regression in directlink-test.ss (jolt-cw1o).
2026-06-23 23:34:28 -04:00
..
seed Fix direct-link crash on a non-fn var called as a function 2026-06-23 23:34:28 -04:00
async.ss JVM-semantics fixes and small cleanups 2026-06-23 01:36:51 -04:00
atoms.ss Clean up codebase: rename stdlib layer, strip porting residue, fix tooling 2026-06-22 22:18:00 -04:00
bigdec.ss refactor: registry pattern for jolt-pr-str/pr-readable + remaining arms (jolt-lmot) 2026-06-23 23:22:25 -04:00
bootstrap.ss Clean up codebase: rename stdlib layer, strip porting residue, fix tooling 2026-06-22 22:18:00 -04:00
build-smoke.sh Tree-shake the clojure.core prelude too (whole-program DCE) 2026-06-23 20:42:23 -04:00
build.ss refactor: dynamic-wind the build's compiler-global flags (tier 1) 2026-06-23 22:22:43 -04:00
cli.ss jolt build: compile an app to a standalone binary (Phase 4 stages 1-2) 2026-06-22 23:01:36 -04:00
collections.ss refactor: registry pattern for jolt-get + jolt=2 (jolt-lmot) 2026-06-23 23:12:08 -04:00
compile-eval.ss Wire the optimization pass pipeline into compile + build 2026-06-23 01:14:14 -04:00
concurrency.ss Dead-code removal, perf fixes, deterministic seed emission 2026-06-23 01:05:45 -04:00
converters.ss Replace str-render/instance-check set! chains with registries 2026-06-23 09:05:36 -04:00
dce.ss refactor: extract host/chez/dce.ss; tag the runtime manifest (tier 1) 2026-06-23 22:20:48 -04:00
dot-forms.ss Clean up codebase: rename stdlib layer, strip porting residue, fix tooling 2026-06-22 22:18:00 -04:00
dyn-binding.ss refactor: registry pattern for jolt-pr-str/pr-readable + remaining arms (jolt-lmot) 2026-06-23 23:22:25 -04:00
dynamic-vars.ss Fix conformance gaps: exception types, byte/getBytes, host classes 2026-06-22 17:52:38 -04:00
emit-image.ss refactor: extract host/chez/dce.ss; tag the runtime manifest (tier 1) 2026-06-23 22:20:48 -04:00
ffi.ss jolt build: bundle native libs + resources into standalone binaries 2026-06-23 13:19:33 -04:00
host-class.ss refactor: registry pattern for jolt-hash + jolt-class (jolt-lmot) 2026-06-23 23:01:30 -04:00
host-contract.ss Enable IR inlining: splice small defns at call sites (lever 1/4) 2026-06-23 17:43:13 -04:00
host-static-objects.ss Replace str-render/instance-check set! chains with registries 2026-06-23 09:05:36 -04:00
host-static-statics.ss Split host-static.ss into base / statics / objects 2026-06-23 04:16:43 -04:00
host-static.ss Split host-static.ss into base / statics / objects 2026-06-23 04:16:43 -04:00
host-table.ss refactor: registry pattern for jolt-pr-str/pr-readable + remaining arms (jolt-lmot) 2026-06-23 23:22:25 -04:00
inst-time.ss refactor: registry pattern for jolt-pr-str/pr-readable + remaining arms (jolt-lmot) 2026-06-23 23:22:25 -04:00
io.ss refactor: registry pattern for jolt-pr-str/pr-readable + remaining arms (jolt-lmot) 2026-06-23 23:22:25 -04:00
lazy-bridge.ss refactor: registry pattern for jolt-pr-str/pr-readable + remaining arms (jolt-lmot) 2026-06-23 23:22:25 -04:00
loader.ss Deduplicate small host helpers 2026-06-23 01:42:33 -04:00
math.ss Clean up codebase: rename stdlib layer, strip porting residue, fix tooling 2026-06-22 22:18:00 -04:00
multimethods.ss Clean up codebase: rename stdlib layer, strip porting residue, fix tooling 2026-06-22 22:18:00 -04:00
natives-array.ss Replace str-render/instance-check set! chains with registries 2026-06-23 09:05:36 -04:00
natives-coll.ss Clean up codebase: rename stdlib layer, strip porting residue, fix tooling 2026-06-22 22:18:00 -04:00
natives-meta.ss Clean up codebase: rename stdlib layer, strip porting residue, fix tooling 2026-06-22 22:18:00 -04:00
natives-misc.ss refactor: registry pattern for jolt-pr-str/pr-readable + remaining arms (jolt-lmot) 2026-06-23 23:22:25 -04:00
natives-num.ss Clean up codebase: rename stdlib layer, strip porting residue, fix tooling 2026-06-22 22:18:00 -04:00
natives-parity.ss Clean up codebase: rename stdlib layer, strip porting residue, fix tooling 2026-06-22 22:18:00 -04:00
natives-queue.ss refactor: registry pattern for jolt-pr-str/pr-readable + remaining arms (jolt-lmot) 2026-06-23 23:22:25 -04:00
natives-seq.ss Clean up codebase: rename stdlib layer, strip porting residue, fix tooling 2026-06-22 22:18:00 -04:00
natives-str.ss Deduplicate small host helpers 2026-06-23 01:42:33 -04:00
natives-xform.ss Clean up codebase: rename stdlib layer, strip porting residue, fix tooling 2026-06-22 22:18:00 -04:00
ns.ss refactor: registry pattern for jolt-pr-str/pr-readable + remaining arms (jolt-lmot) 2026-06-23 23:22:25 -04:00
png.ss Clean up codebase: rename stdlib layer, strip porting residue, fix tooling 2026-06-22 22:18:00 -04:00
post-prelude.ss Clean up codebase: rename stdlib layer, strip porting residue, fix tooling 2026-06-22 22:18:00 -04:00
predicates.ss Clean up codebase: rename stdlib layer, strip porting residue, fix tooling 2026-06-22 22:18:00 -04:00
printing.ss refactor: registry pattern for jolt-pr-str/pr-readable + remaining arms (jolt-lmot) 2026-06-23 23:22:25 -04:00
reader.ss Clean up codebase: rename stdlib layer, strip porting residue, fix tooling 2026-06-22 22:18:00 -04:00
records-interop.ss Replace str-render/instance-check set! chains with registries 2026-06-23 09:05:36 -04:00
records.ss refactor: registry pattern for jolt-pr-str/pr-readable + remaining arms (jolt-lmot) 2026-06-23 23:22:25 -04:00
regex.ss Clean up codebase: rename stdlib layer, strip porting residue, fix tooling 2026-06-22 22:18:00 -04:00
remint.sh Pure-Chez test gates (no Janet) 2026-06-21 11:22:32 -04:00
rt.ss refactor: registry pattern for jolt-pr-str/pr-readable + remaining arms (jolt-lmot) 2026-06-23 23:22:25 -04:00
run-corpus.ss Clean up codebase: rename stdlib layer, strip porting residue, fix tooling 2026-06-22 22:18:00 -04:00
run-infer.ss infer gate: cover the run-inference / take-diags! checker path 2026-06-23 09:38:13 -04:00
run-sci.ss Clean up codebase: rename stdlib layer, strip porting residue, fix tooling 2026-06-22 22:18:00 -04:00
run-unit.ss Real Thread/yield + Thread/interrupted (jolt-l2gc) 2026-06-23 00:06:04 -04:00
selfcheck.sh Pure-Chez test gates (no Janet) 2026-06-21 11:22:32 -04:00
seq.ss Dead-code removal, perf fixes, deterministic seed emission 2026-06-23 01:05:45 -04:00
smoke.sh Pure-Chez test gates (no Janet) 2026-06-21 11:22:32 -04:00
syntax-quote.ss Clean up codebase: rename stdlib layer, strip porting residue, fix tooling 2026-06-22 22:18:00 -04:00
transients.ss refactor: registry pattern for jolt-pr-str/pr-readable + remaining arms (jolt-lmot) 2026-06-23 23:22:25 -04:00
tree-shake-smoke.sh Tree-shake: count #'x references; multi-app soundness smoke 2026-06-23 20:27:21 -04:00
values.ss refactor: registry pattern for jolt-get + jolt=2 (jolt-lmot) 2026-06-23 23:12:08 -04:00
vars.ss refactor: registry pattern for jolt-pr-str/pr-readable + remaining arms (jolt-lmot) 2026-06-23 23:22:25 -04:00