FWIW a third option to determine the exact method called is
jvm.tools.analyzer:
clojure.tools.analyzer=> (clojure.pprint/pprint (ast (+ 1 2)))
{:op :static-method,
:env
{:source "NO_SOURCE_FILE",
:column 29,
:line 1,
:locals {},
:ns {:name clojure.tools.analyzer}},
:class clojure.lang.Numbers,
:method-name "add",
:method
{:name add,
:return-type long,
:declaring-class clojure.lang.Numbers,
:parameter-types [long long],
:exception-types [],
:flags #{:static :public}},
:args
({:op :number,
:env {:locals {}, :ns {:name clojure.tools.analyzer}},
:val 1}
{:op :number,
:env {:locals {}, :ns {:name clojure.tools.analyzer}},
:val 2}),
:tag nil}
nil
Thanks,
Ambrose
On Sat, Jun 8, 2013 at 5:59 AM, Zach Tellman <[email protected]> wrote:
> What (+ x y) compiles down is highly dependent on the surrounding context,
> including but not limited to the local type-hints and the value of
> *unchecked-math*. Actually verifying that it's calling the primitive,
> unboxed, easily inlined clojure.lang.Numbers.add(long, long) requires
> either a profiler or a decompiler.
>
> For a lot of use cases, this doesn't matter. But where it does matter, it
> tends to turn into a mind-numbing cycle of adding type-hints, seeing
> whether that changed the compilation output, and then trying again. Since
> I've gone through this more times than I'd like to admit, I rolled my own:
> https://github.com/ztellman/primitive-math.
>
> This is not meant to be a replacement for Clojure's numeric tower, rather
> it's meant to supplement it when the range of possible inputs is
> intentionally narrow. I expect this should be immediately useful in a
> variety of applications and libraries.
>
> If anyone has questions, I'm happy to answer them.
>
> --
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to [email protected]
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> [email protected]
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>
--
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.