-
you associate a bytecode inlining function with an existing var. the function takes the AST of the original invoke expression + symbolizers
-
the inlining fn returns typehinted bytecode to replace the default invoke bytecode. typehint specifies the expected type of that expression.
-
if the inlining function returns nil, the compiler backs out and emits invoke bytecode as usual, respecting clojure's :inline metadata
-
this allows for control of type flow and bytecode emission from outside the compiler. combined with macros this could be really powerful.