You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Feb 3, 2019. It is now read-only.
Constants wrapped in a var are still behind a volatile Object and thus cause a pointer chase on all accesses. For constant defs, we can simply syntactically inline the constant. That or some Oxcart emitter could provide a module level constant pool which would allow for JIT optimization of large def'd constants.
The text was updated successfully, but these errors were encountered:
@halgari is of the oppinion that constant inlining is not likely to be a valuable transformation. If constant inlining is to take place, it's probably worth doing it right and annotating the clojure core library as well as special forms with function purity metadata. This would allow a trivial is-expr-pure or is-form-idempotent analysis which could then be used to prove inlining of forms sound.
I contend that inlining is potentially valuable not because it offers an opportunity to precompute expressions but because for some forms such as (partial) and (comp) being able to reduce cases like ((comp f) x y) to (f x y) would allow Oxcart to escape emitting f as a Var wrapped IFn and instead emit a method call.
Constants wrapped in a var are still behind a
volatile Object
and thus cause a pointer chase on all accesses. For constant defs, we can simply syntactically inline the constant. That or some Oxcart emitter could provide a module level constant pool which would allow for JIT optimization of large def'd constants.The text was updated successfully, but these errors were encountered: