Skip to content

Commit 296f2bc

Browse files
committed
simplify how we lazy load transit. cljs.analyzer/write-analysis-cache now supports
writing out transit if available. cljs.closure/aot-cache-core attempts to write out transit analysis cache for core. tweak .gitignore now for new cache file.
1 parent 8e88387 commit 296f2bc

File tree

3 files changed

+25
-25
lines changed

3 files changed

+25
-25
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,4 @@ nashorn_code_cache
2828
src/main/cljs/cljs/core.aot.js
2929
src/main/cljs/cljs/core.aot.js.map
3030
src/main/cljs/cljs/core.cljs.cache.aot.edn
31+
src/main/cljs/cljs/core.cljs.cache.aot.json

src/main/clojure/cljs/analyzer.cljc

Lines changed: 20 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
[cljs.tools.reader :as reader]
3333
[cljs.tools.reader.reader-types :as readers]
3434
[cljs.reader :as edn]))
35-
#?(:clj (:import [java.io File Reader PushbackReader]
35+
#?(:clj (:import [java.io File Reader PushbackReader FileOutputStream]
3636
[java.net URL]
3737
[java.lang Throwable]
3838
[clojure.lang Namespace Var LazySeq ArityException]
@@ -2818,39 +2818,36 @@
28182818
(and version (not= version version'))))))))))
28192819

28202820
#?(:clj
2821-
(def transit-writer
2821+
(def transit
28222822
(delay
28232823
(try
28242824
(require '[cognitect.transit])
2825-
(some->
2826-
(find-ns 'cognitect.transit)
2827-
(ns-resolve 'writer)
2828-
deref)
2829-
(catch Throwable t
2830-
nil)))))
2831-
2832-
#?(:clj
2833-
(def transit-reader
2834-
(delay
2835-
(try
2836-
(require '[cognitect.transit])
2837-
(some->
2838-
(find-ns 'cognitect.transit)
2839-
(ns-resolve 'reader)
2840-
deref)
2825+
(let [ns (find-ns 'cognitect.transit)]
2826+
(when ns
2827+
{:writer @(ns-resolve ns 'writer)
2828+
:reader @(ns-resolve ns 'reader)
2829+
:write @(ns-resolve ns 'write)
2830+
:read @(ns-resolve ns 'read)}))
28412831
(catch Throwable t
28422832
nil)))))
28432833

28442834
#?(:clj
28452835
(defn write-analysis-cache
28462836
([ns cache-file]
28472837
(write-analysis-cache ns cache-file nil))
2848-
([ns cache-file src]
2838+
([ns ^File cache-file src]
28492839
(util/mkdirs cache-file)
2850-
(spit cache-file
2851-
(str ";; Analyzed by ClojureScript " (util/clojurescript-version) "\n"
2852-
(pr-str
2853-
(dissoc (get-in @env/*compiler* [::namespaces ns]) :macros))))
2840+
(let [ext (util/ext cache-file)
2841+
analysis (dissoc (get-in @env/*compiler* [::namespaces ns]) :macros)]
2842+
(case ext
2843+
"edn" (spit cache-file
2844+
(str (when
2845+
(str ";; Analyzed by ClojureScript " (util/clojurescript-version) "\n"))
2846+
(pr-str analysis)))
2847+
"json" (when-let [{:keys [writer write]} @transit]
2848+
(write
2849+
(writer (FileOutputStream. cache-file) :json)
2850+
analysis))))
28542851
(when src
28552852
(.setLastModified ^File cache-file (util/last-modified src))))))
28562853

src/main/clojure/cljs/closure.clj

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2133,14 +2133,16 @@
21332133
(let [base-path (io/file "src" "main" "cljs" "cljs")
21342134
src (io/file base-path "core.cljs")
21352135
dest (io/file base-path "core.aot.js")
2136-
cache (io/file base-path "core.cljs.cache.aot.edn")]
2136+
cache (io/file base-path "core.cljs.cache.aot.edn")
2137+
tcache (io/file base-path "core.cljs.cache.aot.json")]
21372138
(util/mkdirs dest)
21382139
(env/with-compiler-env (env/default-compiler-env)
21392140
(comp/compile-file src dest
21402141
{:source-map true
21412142
:source-map-url "core.js.map"
21422143
:output-dir (str "src" File/separator "main" File/separator "cljs")})
2143-
(ana/write-analysis-cache 'cljs.core cache src))))
2144+
(ana/write-analysis-cache 'cljs.core cache src)
2145+
(ana/write-analysis-cache 'cljs.core tcache src))))
21442146

21452147
(comment
21462148
(time

0 commit comments

Comments
 (0)