Hotspot is *not* a traditional JIT compiler. While that was true in  
the early days of HotSpot (many years ago) today it does lots of  
advanced realtime prediction and analysis.  I would say that HotSpot  
is the most advanced general purpose VM today, and it's constantly  
being improved. Where I see real competition coming is special purpose  
VMs; like things that will optimize your code into a pixel shader, or  
that do crazy automatic parallelization, or that focus on energy  
consumption over everything else.

I think they just mention Java's VM because it's the one most people  
are familiar with. If the CLR was more commonly used they would have  
mentioned that instead. :)


On Aug 31, 2008, at 3:44 AM, sherod wrote:

>
> Java gets the (usual) dishonorable mention with Mozilla implying that
> their tracing JIT compiler is superior to the JIT solution in Java.
>
> Anybody with stronger experience than I with this stuff care to
> comment?
>
> *Start quote*
>
> Traditional just-in-time compilers (like Sun’s Hotspot VM) are in
> their design and structure very similar to static compilers (like
> GCC). They observe which methods get executed frequently, and
> translate the method into native machine code once a certaint
> threshold has been reached. While such methods often contain
> performance-critical parts (such as loops), they often also contain
> slow paths and non-loopy code, which barely if at all contributes to
> the runtime of the method. A whole-method compiler, however, has to
> always analyze and translate the entire method, even if parts of it
> are not particularly “compilation-worthy”.
>
> Trace-based compilation takes a very different approach. We monitor
> the interpretation of bytecode instruction by the virtual machine and
> scan for frequently taken backwards branches, which are an indicator
> for loops in the underlying program. Once we identify such a loop
> start point, we follow the interpreter as it executes the program and
> record the sequence of bytecode instructions that get executed along
> the way. Since we start at a loop header, the interpreter will
> eventually return to this entry point once it completed an iteration
> through the loop. The resulting linear sequence of instructions is
> what we call a trace.
>
> *end quote*
>
> Rest of the article here:
>
> http://www.infoq.com/news/2008/08/tracemonkey
> >


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "The 
Java Posse" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/javaposse?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to