[kaffe] expect advice!

Dalibor Topic robilad@kaffe.org
Thu Nov 13 02:55:03 2003


Hi Xikun,

xk s wrote:
> hello:
> 
>       I am a master student of BHU (bei hang university) in china. I will preparing my master thesis about Java virtual machine and just-in-time compiler next year.
> 
>       In kaffe document, I know it is a simple JIT, it compile each method without advanced optimization the first time this method is invoked. What do you think about hot spot VM and sophisticated adaptive online feedback-directed optimization with muti-level compiler system?

I'd like to see something like it in kaffe ;)

There are two efforts in this area: Tim Stack has done some work on 
allowing re-jitting methods in JanosVM 1.0[1], a cool VM based on kaffe. 
He may be able to shed some light on that.

Citing from the release notes[2]:

    "* As a byproduct of the lazy loading work, support was added for
     recompiling methods.  Because methods with lazy lookups must go
     through the sub-optimal deferral process, recompilation makes it
     possible to eventually generate 'optimal' code.  As such, jitted
     code is now garbage collected and the finalizer thread has been
     tasked with doing the actual recompiling work."

There is also a feedback framework within kaffe, that may allow for 
feeding back information from the jitter to the VM core for rejitting [3].

The second effort is on another cool VM based on an earlier version of 
kaffe, LaTTe[4]. According to the website, it includes an adaptive 
compilation framework:

"As a research prototype for the study of run-time compilation 
techniques, LaTTe includes the following features:

     * Fast and effective JIT translation with:
           o efficient register mapping and allocation (i.e., 
consistently taking one or two seconds for SPECjvm98 which runs 40-70 
seconds with LaTTe)
           o traditional optimizations (e.g., common subexpression 
elimination and loop invariant code motion)
           o object oriented optimizations (e.g., customization and 
limited specialization)
     * A limited framework for adaptive compilation, which is currently 
based on method run counts.
     * A reasonably fast bytecode interpreter, intended to be used with 
the adaptive compilation framework.
     * Lightweight monitors.
     * On-demand translation of exception handlers.
     * A fast non-incremental garbage collector."

The LaTTe developers seem to be interested in bringing some of their 
improvements back into kaffe.

There was also an abandoned project to add the ability to integrate JIT 
and interpreter in kaffe instead of having to work with a single engine 
configured at compile time, based on a very old version of kaffe. The 
code is here:

http://www.flux.utah.edu/~tullmann/kaffe/jitintrp/index.html

>       And I think , there is no explicit transform form bytecode stack semantics to register operations as in many RISC machine. Would you think Sequence struct is a suitful IR for multi-level optimization and adptive optimization? 

Unfortuntaly, I can't comment on that, as I haven't hacked on the jitter 
myself (yet). I hope other, nor comepetent kaffe developers will chip in 
with some advice here.

>       Would you give some instruments and advices? I expected your advice earnestly.

hope this helped.

cheers,
dalibor topic

[1] http://www.cs.utah.edu/flux/janos/janosvm.html
[2] http://www.cs.utah.edu/flux/janos/janosvm-1.0/RELEASE-NOTES
[3] 
http://www.kaffe.org/cgi-bin/viewcvs.cgi/*checkout*/kaffe/FAQ/FAQ.feedback?rev=HEAD
[4] http://latte.snu.ac.kr/