Thank you Vim,

I will use it. I have also found "Trace-based compilation in execution environments without interpreters" that seems kind of relevant.
http://www.ics.uci.edu/~mbebenit/pubs/pppj-2010.pdf

Regards,
Mike

On Wed, Jul 4, 2012 at 9:29 AM, <wlavrijsen@lbl.gov> wrote:
Hi Michael,


I am in the process of writing a paper that will target some AI conference,
and I would like to ask if there are any relevant publications of yours or
in general that showcase the possible advantages of trace-based JIT
compilation over method-based JIT compilation or static compilation.

this publication has a nice listing of benefits over static compilation:

   http://www.hpl.hp.com/techreports/1999/HPL-1999-78.html

Some of it is outdated, as I find in particular that compiled traces are
very nice on contemporary speculative, out-of-order executing, branch
predicting, hyper-threading CPUs in ways that made no difference on deep
pipeline CPUs of old. It's a great read nonetheless.

Method-based JIT compilation does not play as well with modern CPUs, as
the greatest benefits are had from the inlining of functions and removal
of branches.

Even for C++, vtable indirection and the trampolines for calls across
shared libraries are tough on modern CPUs. Inlining and finalizing calls
helps, but with static profiling you only have one choice of organizing
the code, on one "representative" data set.

Best regards,
           Wim
--
WLavrijsen@lbl.gov    --    +1 (510) 486 6411    --    www.lavrijsen.net