Java-level JVM compiler interface [JEP-243]
The JEP-243 was to create a Java-based JVM Compiler Interface (JVMCI). The JVMCI enables a Java compiler (which must have been written in Java) to be used as a dynamic compiler by the JVM.
The reasoning behind the desire for the JVMCI is that it would be a highly optimized compiler that does not require low-level language features. Some JVM subsystems require low-level functionality, such as with garbage collection and bytemode interpretation. So, the JVMCI was written in Java instead of C or C++. This provides the collateral benefit of some of Java's greatest features, such as the following ones:
- Exception handling
- IDEs that are both free and robust
- Memory management
- Runtime extensibility
- Synchronization
- Unit testing support
As JVMCI was written in Java, it will arguably be easier to maintain.
There are three primary components of the JVMCI API:
- Virtual machine data structure access
- Installing compiled code with its metadata
- Using the JVM's compilation system...