What don't you emerge it?  :)

geir

On Oct 2, 2005, at 7:17 PM, Steve Shih-wei Liao wrote:

Good email thread! Lots of different opinions have been expressed. It seems there are valid reasons to support both JIT and interpreter in Harmony VM. Looking into the future, it seems the Harmony modular framework needs to
allow both JIT and interpreter modules to be plugged in.
Designing a VM modular framework to accommodate JIT as well as interpreter brings up entirely new design topics. Perhaps a new thread on these issues
will emerge.
 Steve Liao, Intel Managed Runtime Division
 On 9/23/05, Graeme Johnson <[EMAIL PROTECTED]> wrote:


"Geir Magnusson Jr." <[EMAIL PROTECTED]> wrote on 09/22/2005 06:34:44 AM:


[SNIP]

Geir> Basic thought is yes, I always figured we'd have this
pluggable, with
Geir> an interpreter for ease of porting, and then platform-
specific JIT.

It seems to me that there's a design question here. For instance, if you want to eventually take interpreted code and compile it (when it is "hot"), for full pluggability your JIT(s) and your interpreter need
to agree on some set of bookkeeping details in order to make this
possible. OTOH, you could make other decisions that make this problem
go away, for instance having a single choice of execution engine up
front; so the "fast JIT" and the "optimizing JIT" are just part of the same code base and only need to talk to each other, and can be built
in an ad hoc way.


Personally I'd be just as happy if we only had a JIT. There are
already plenty of interpreters out there.


But I would think that we'd want both, right? An interpreter that
builds on anything to ensure wide platform portability, with the the
ability to augment with a JIT for those platforms for which people
are interested in creating a JIT...


Our experience with the J9 virtual machine has shown that supporting both interpreter and JIT solutions provides a valuable degree of flexibility.

Bytecode interpreters have several advantages:

- Portability: Support for rapid bootstrapping of new platforms by virtue
of being easier to port.

- Size: Very compact interpreters (<100K) can be constructed for memory
constrained environments.

- Flexibility: A well-written interpreter is easy to modify for research
or experimental purposes and can trivially support runtime-pluggable
features like debug and instrumentation.

Admittedly, supporting combined interpreter/JIT modes does require careful

attention to stack frame design and associated stack walking code. And yes, the transition between interpreted and native code (either JIT'ed or JNI) requires some special handling. However, good stack frame design is critical to efficiently supporting several other critical areas of the JVM

including exception throw, GC, and debug support.

IMO the relatively small amount of extra code to maintain the interpreter
and extra stack walk support is well worth the effort.

Graeme Johnson
J9 VM Team, IBM Canada.



--
Geir Magnusson Jr                                  +1-203-665-6437
[EMAIL PROTECTED]


Reply via email to