Wire the optimization pass pipeline into compile + build
The fold/inline/types passes and the jolt.passes façade were baked into neither seed half and never invoked: compile-eval and build went analyze -> emit directly, and `jolt build --opt` flipped an optimize flag that nothing consumed. - Compile the passes into the image (emit-image manifest): fold, inline, types, then the jolt.passes façade, after jolt.ir. - compile-eval and build.ss now run jolt.passes/run-passes between analyze and emit. Off the direct-link path it is a pure const-fold; `jolt build --opt` turns on inline + flatten + scalar-replace + type inference (it sets hc-optimize?, which inline-enabled? reads). - The seed minter (emit-image) stays analyze -> emit, so the seed is built un-optimized and the self-host fixpoint is unaffected. build-smoke already exercised --opt; it now actually optimizes and still matches the release binary's output. Corpus floor and the fixpoint are green.
This commit is contained in:
parent
e93006b4be
commit
2953320599
4 changed files with 362 additions and 97 deletions
|
|
@ -69,11 +69,17 @@
|
|||
;; (printable ASCII identifiers only here).
|
||||
(define (ei-str-lit s) (with-output-to-string (lambda () (write s))))
|
||||
|
||||
;; The compiler namespaces, in load order.
|
||||
;; The compiler namespaces, in load order. The passes (fold/inline/types + the
|
||||
;; jolt.passes façade) load after ir so run-passes is available to the back end;
|
||||
;; fold/inline/types come before the façade that :refers them.
|
||||
(define ei-compiler-ns-files
|
||||
(list (cons "jolt.ir" "jolt-core/jolt/ir.clj")
|
||||
(cons "jolt.analyzer" "jolt-core/jolt/analyzer.clj")
|
||||
(cons "jolt.backend-scheme" "jolt-core/jolt/backend_scheme.clj")))
|
||||
(cons "jolt.backend-scheme" "jolt-core/jolt/backend_scheme.clj")
|
||||
(cons "jolt.passes.fold" "jolt-core/jolt/passes/fold.clj")
|
||||
(cons "jolt.passes.inline" "jolt-core/jolt/passes/inline.clj")
|
||||
(cons "jolt.passes.types" "jolt-core/jolt/passes/types.clj")
|
||||
(cons "jolt.passes" "jolt-core/jolt/passes.clj")))
|
||||
|
||||
;; The clojure.core tiers + stdlib namespaces, in load order.
|
||||
;; Re-emitting these on Chez is the
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue