One of the problems with these sort of discussions is the total lack of
hard facts. Words such as "could do this" or "doesn't do that" when
referring to HotSpot are very rarely backed up by actual benchmarks, or ASM
printouts. I would imagine that any serious attempt at an optimization
layer will be prefixed by lots of research into where the current compiler
fails, and what the proper enhancements should be.

Timothy


On Wed, Oct 9, 2013 at 6:29 AM, Mikhail Kryshen <mikh...@kryshen.net> wrote:

> Nicola Mometto <brobro...@gmail.com> writes:
>
> > I don't think that's what Mike was talking about.
> > Say we have (defn x ^long [] 1), clojure will use the IFn$L and emit an
> > "public long invokePrim()" method.
> >
> > When we do (defn y [] (let [a (x)] a) the compiler will call .invokePrim
> > instead of invoke.
> >
> > If we redefine (defn x [] "") then y won't work because the new version
> > of x doesn't implement IFn$L, we'd need to recompile y too.
>
> Actually I am talking about the same problem.  For virtual calls the JIT
> compiler can determine that only one implementation of the method is
> being used, inline the call and perform object explosion, effectively
> removing boxing of primitives.  When new implementation becomes
> available it dynamically recompiles affected bytecode.  I don't know if
> the current implementation does this for invokedynamic calls, but there
> is a potential.  It just does not feel right to invent a whole new
> complex optimization layer on the Clojure side until we fully use the
> optimization capabilities of the JVM.
>
> --
> Mikhail
>



-- 
“One of the main causes of the fall of the Roman Empire was that–lacking
zero–they had no way to indicate successful termination of their C
programs.”
(Robert Firth)

-- 
-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
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 clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to