Hi Max,

On 9/09/2016 3:40 AM, Max Schulze wrote:
Hello,

I am trying to implement my own virtual machine and making use of the
rt.jar .

Difficult, because rt.jar is not a stand-alone implementation that can be mixed-and-matched with arbitrary VMs. The initialization sequence is very intricate and delicate and tightly coupled between the VM and the core classes involved. The Java classes know about specific VM entry points, and the VM knows about specific Java classes and methods 9and exactly what they do).

I am following the language and vm specification and currently have not
come across formalities that require implementation/prefill of
java.lang.System*props.


When the IntegerCache is being initialized, it calls getSavedProperty
which doesn't like savedProps.isEmpty() at all
(jdk/src/share/classes/sun/misc/VM.java:255) and throws the exception
java.lang.IllegalStateException.


1) What are the minimal properties that have to be initialized for the
runtime to be functioning? I found sun.misc.Version.init(), but is there
any specification of what the bare minimum would be?

All of the properties specified as standard properties in the System.getProperties() method are supposed to be pre-filled to comply with the platform specification.

2) There is a function initializeSystemClass()
(jdk/src/share/classes/java/lang/System.java:1152) that calls
initProperties(props).  This will be called by the JVM at

hotspot/src/share/vm/runtime/thread.cpp:1048:
JavaCalls::call_static(&result, klass,
vmSymbols::initializeSystemClass_name(),

Shouldn't it be part of the JVM Specification to call this
initializeSystemClass on thread setup then, if at all it wants to be
able to run the rt.jar?

No because this is just an implementation artifact of The OpenJDK implementation of the Java platform specifications.

The initialization dance between the VM and library code is even more intricate in JDK 9 with the new module system.

David
-----


Thanks,

Max

PS : talking about 1.8.0_91


(On a side-note, there is activity around moving sun.misc.VM to
jdk.internal.misc for JEP 260/JDK9, but which doesn't change above
mentioned problems)

[1]
http://mail.openjdk.java.net/pipermail/core-libs-dev/2016-January/037853.html

Reply via email to