Ulrich Kunitz wrote:

Having read your MMTk papers, it appears to me that the required
JAVA extensions look a little bit like parts of P/Invoke* of
Microsoft's Common Language Runtime.

Ugh. Those papers perhaps are not as clear as they could be. I've written a separate email saying a little more about how vmmagic works.

Maybe it would be possible to extend the boot image approach to
some kind of cached images of Java classes and packages, This
would require some ELF-like format for compiled Java code. Such a
feature might reduce the startup times of applications like
Eclipse a lot.

I don't know what the performance impact is of mmaping a monolithic boot image versus incrementally loading it. Demand loading could lead to a much smaller memory footprint though. There are quite a lot of different ways of doing it, some of which would depend on the code being relocatable. I think this is an interesting space to explore, particularly if we want to try to cover the gamut from embedded devices to servers.

I assume you It would not be terribly hard to do a lot of precompilation (think building .so's), and then to lazily bring precompiled methods into the VM. There are a number of issues though

IMHO a self-hosting VM has the advantage, that performance is
under your own control. Code in C will always depend on the
optimizations provided by the C compiler being used. Additionally
all the debugging/profiling/management code can be written in Java
and can use the large Java class library.

I agree.

But it might still be that C-implemented modules (particularly the
GC) are faster than their Java-implemented counterparts, because
they ignore array-index-checking, don't need write barriers and
interface calls, etc...

Possibly, but that is not our experience. In MMTk we carefully avoid array bounds checks interface calls and write barriers. When we rework the performance critical elements (barriers, allocation, etc), we carefully measure the performance and typically examine the compiled instruction sequence. If it looks like it needs improvement we either adjust our implementation or improve the compiler ;-)

--Steve

Reply via email to