Steve Shih-wei Liao wrote:
Do we need an interpreter or a fast code generating, zero optimizing JIT? I
can think of advantages to each approach. Assuming a C/C++ implementation, a
traditional interpreter is easy to port to a new architecture and we can
populate Execution Engines (EE) for different platforms rather easily. On
the other hand, a fast code-generating JIT can call runtime helpers and
native methods without additional glue code whereas an interpreter has to
have special glue code to make it work in a JIT environment. Needless to
say, if a method is called more than once, the one time cost of JITing
without optimization may be lower than the cost of running the interpreter
loop.
Our experience is that a fast, zero optimizing JIT can yield low-enough
response time. So, I think at least Harmony has the option of having a
decent system without an interpreter. Thoughts?
Steve Liao, Intel Managed Runtime Division
No doubt, but portability is also a concern and writing a portable JIT
seems more difficult.
Although it is compiler dependent (gcc) have you looked at the Sable
approach:
http://www.sable.mcgill.ca/publications/thesis/phd-gagnon/sable-thesis-2002-phd-gagnon.pdf
which kind of combines the two? It is possible that this alleviates
your concern with the tradeoff of compiler dependence (though it would
be nice if we could do this on Intel compiler so that we can run faster
on Itanium).
-Andy