Skip to content

Commit

Permalink
Wrap log-expr in a conditional to assist DCE
Browse files Browse the repository at this point in the history
Fixes #26. This allows code from macros like trace, debug, etc. to be
removed by GCC when the user has the compiler constant
goog.debug.LOGGING_ENABLED set to false.
  • Loading branch information
rome-user committed Mar 22, 2023
1 parent 7c85abd commit 60fa47c
Showing 1 changed file with 8 additions and 7 deletions.
15 changes: 8 additions & 7 deletions src/lambdaisland/glogi.clj
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,14 @@
(defn- log-expr [form level keyvals]
(let [keyvals-map (apply array-map keyvals)
formatter (::formatter keyvals-map 'identity)]
`(log ~(::logger keyvals-map (str *ns*))
~level
(~formatter
~(-> keyvals-map
(dissoc ::logger)
(assoc :line (:line (meta form)))))
~(:exception keyvals-map))))
`(when ~(with-meta 'goog.debug.LOGGING_ENABLED {:tag 'boolean})
(log ~(::logger keyvals-map (str *ns*))
~level
(~formatter
~(-> keyvals-map
(dissoc ::logger)
(assoc :line (:line (meta form)))))
~(:exception keyvals-map)))))

(defmacro shout [& keyvals]
(log-expr &form :shout keyvals))
Expand Down

0 comments on commit 60fa47c

Please sign in to comment.