Substrate VM Questions

Christian Wimmer christian.wimmer at oracle.com
Tue Feb 6 22:07:52 UTC 2018


Hi Tom,

On 02/06/2018 08:14 AM, Tom Shull wrote:
> Hi,
> 
>      I am interested in using Substrate VM for a project in which I plan 
> to make some changes to the internal JVM object layout. I would like to 
> use a metacircular VM, as I feel they are much more amenable to these 
> types of changes as compared to HotSpot.  Looking at its GitHub page, 
> there currently seems to be very little  documentation relating to 
> Substrate VM. I have appreciated the many publications/talks covering 
> both Truffle and Graal, but there does not yet seem to be any for 
> Substrate VM. Do you plan to include more documentation and/or publish 
> papers in the near future?

We plan to add more documentation, but it will take us some time to ramp 
it up. In the meantime, feel free to ask questions here on the mailing list.

> Also, from what I can tell, it appears that unless Substrate VM is used 
> with Truffle, it does not JIT-compile code. Is this correct? Do you plan 
> to change this in the near future, by either adding JIT support to 
> Substrate VM or including a Java/JVM implementation in Truffle? Would I 
> be better off using Maxine VM instead? Ideally I would like JIT 
> capabilities so that I can also add some profile-guided speculative 
> optimizations.

You are correct that Substrate VM does not JIT compile Java code. This 
is part of the overall design and the main differentiator of Substrate 
VM compared to Maxine VM or HotSpot VM. So dynamic class loading and JIT 
compilation (which would only be useful with dynamic class loading) are 
not coming to Substrate VM.

There is an academic prototype of a Truffle based Java implementation. 
This is independent of Substrate VM, i.e., you can run Truffle/Java on 
the HotSpot VM of course too. I do not think there are plans to make 
Truffle/Java public anytime soon, and it would probably be too limited 
right now anyway to base research on it.

Maxine VM is a good choice if you want to experiment with a full Java 
VM. It has JIT compilation, and already some profile-guided speculative 
optimizations.

So the decision Substrate VM vs. Maxine VM depends on the direction of 
the research you want to do. Both have their advantages and disadvantages:
* The closed-world assumption and static analysis of Substrate VM allows 
you to do global optimizations and global transformations. You do not 
need speculation because you have complete static knowledge.
* The open-world assumption of Maxine VM allows you to implement 
speculative feedback-directed optimizations. You need speculation 
because you do not have any static knowledge.

-Christian


More information about the graal-dev mailing list