|
24 | 24 | (prn (zipmap (keys @stats)
|
25 | 25 | (map #(/ (double %) 1000000.0) (vals @stats)))))
|
26 | 26 |
|
27 |
| -#_(defn eval-form-stats [ctx form] |
28 |
| - (if (seq? form) |
29 |
| - (if (= 'do (first form)) |
30 |
| - (loop [exprs (rest form) |
31 |
| - ret nil] |
32 |
| - (if (seq exprs) |
33 |
| - (recur |
34 |
| - (rest exprs) |
35 |
| - (eval-form-stats ctx (first exprs))) |
36 |
| - ret)) |
37 |
| - (when (or (not (:uberscript ctx)) |
38 |
| - (= 'ns (first form)) |
39 |
| - (= 'require (first form))) |
40 |
| - (let [#?@(:clj [a0 (System/nanoTime)]) |
41 |
| - analyzed (ana/analyze ctx form true) |
42 |
| - #?@(:clj [a1 (System/nanoTime) |
43 |
| - _ (update-stats ctx :analysis (- a1 a0))]) |
44 |
| - ret (if (instance? sci.impl.types.EvalForm analyzed) |
45 |
| - (eval-form-stats ctx (t/getVal analyzed)) |
46 |
| - (let [#?@(:clj [e0 (System/nanoTime)]) |
47 |
| - ret (eval/eval ctx analyzed) |
48 |
| - #?@(:clj [e1 (System/nanoTime) |
49 |
| - _ (update-stats ctx :eval (- e1 e0))])] |
50 |
| - ret))] |
51 |
| - ret))) |
52 |
| - (let [#?@(:clj [t0 (System/nanoTime)]) |
53 |
| - analyzed (ana/analyze ctx form) |
54 |
| - #?@(:clj [t1 (System/nanoTime) |
55 |
| - _ (update-stats ctx :analysis (- t1 t0))]) |
56 |
| - #?@(:clj [t0 (System/nanoTime)]) |
57 |
| - ret (eval/eval ctx analyzed) |
58 |
| - #?@(:clj [t1 (System/nanoTime) |
59 |
| - _ (update-stats ctx :eval (- t1 t0))])] |
60 |
| - ret))) |
61 |
| - |
62 | 27 | (defn eval-form [ctx form]
|
63 | 28 | (if (seq? form)
|
64 | 29 | (if (= 'do (first form))
|
|
74 | 39 | (= 'require (first form)))
|
75 | 40 | (let [analyzed (ana/analyze ctx form true)
|
76 | 41 | bindings (:bindings ctx)
|
77 |
| - ret (if (instance? sci.impl.types.EvalForm analyzed) |
| 42 | + ret (if (instance? #?(:clj sci.impl.types.EvalForm |
| 43 | + :cljs sci.impl.types/EvalForm) analyzed) |
78 | 44 | (eval-form ctx (t/getVal analyzed))
|
79 | 45 | (eval/eval ctx bindings analyzed))]
|
80 | 46 | ret)))
|
|
83 | 49 | ret (eval/eval ctx bindings analyzed)]
|
84 | 50 | ret)))
|
85 | 51 |
|
86 |
| -;; #?(:clj |
87 |
| -;; (when (System/getenv "SCI_STATS") |
88 |
| -;; (alter-var-root #'eval-form (constantly eval-form-stats)))) |
89 |
| - |
90 | 52 | (vreset! utils/eval-form-state eval-form)
|
91 | 53 |
|
92 |
| -;; with stats |
93 |
| -(defn eval-string-stats [ctx s] |
94 |
| - (let [ctx (assoc ctx :id (or (:id ctx) (gensym)))] |
95 |
| - (vars/with-bindings {vars/current-ns @vars/current-ns} |
96 |
| - (let [reader (r/indexing-push-back-reader (r/string-push-back-reader s))] |
97 |
| - (loop [ret nil] |
98 |
| - (let [#?@(:clj [t0 (System/nanoTime)]) |
99 |
| - expr (p/parse-next ctx reader) |
100 |
| - #?@(:clj [t1 (System/nanoTime) |
101 |
| - _ (update-stats ctx :parse (- t1 t0))])] |
102 |
| - (if (utils/kw-identical? p/eof expr) |
103 |
| - (do |
104 |
| - (print-stats) |
105 |
| - ret) |
106 |
| - (let [ret (eval-form ctx expr)] |
107 |
| - (recur ret))))))))) |
108 |
| - |
109 | 54 | (defn eval-string* [ctx s]
|
110 |
| - (let [ctx (assoc ctx :id (or (:id ctx) (gensym)))] |
111 |
| - (vars/with-bindings {vars/current-ns @vars/current-ns} |
112 |
| - (let [reader (r/indexing-push-back-reader (r/string-push-back-reader s))] |
113 |
| - (loop [ret nil] |
114 |
| - (let [expr (p/parse-next ctx reader)] |
115 |
| - (if (utils/kw-identical? p/eof expr) |
116 |
| - ret |
117 |
| - (let [ret (eval-form ctx expr)] |
118 |
| - (recur ret))))))))) |
119 |
| - |
120 |
| -#?(:clj |
121 |
| - (when (System/getenv "SCI_STATS") |
122 |
| - (alter-var-root #'eval-string* (constantly eval-string-stats)))) |
| 55 | + (vars/with-bindings {vars/current-ns @vars/current-ns} |
| 56 | + (let [reader (r/indexing-push-back-reader (r/string-push-back-reader s))] |
| 57 | + (loop [ret nil] |
| 58 | + (let [expr (p/parse-next ctx reader)] |
| 59 | + (if (utils/kw-identical? p/eof expr) |
| 60 | + ret |
| 61 | + (let [ret (eval-form ctx expr)] |
| 62 | + (recur ret)))))))) |
123 | 63 |
|
124 | 64 | (vreset! utils/eval-string* eval-string*)
|
125 | 65 |
|
|
0 commit comments