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