Libgraal is compiled ahead of time and should not need any JVMCI Java code to 
be dynamically loaded at runtime. Prior to this PR, this is not the case due to:

* Code to copy system properties from the HotSpot heap into the libgraal heap. 
This is in `jdk.vm.ci.services.Services.initializeSavedProperties(byte[])` and 
`jdk.vm.ci.services.Services.serializeSavedProperties()`. This code should be 
moved to `java.base/jdk.internal.vm.VMSupport`.
* Code to translate exceptions from the HotSpot heap into the libgraal heap and 
vice versa. This code should be moved from 
`jdk.internal.vm.ci//jdk.vm.ci.hotspot.TranslatedException` to 
`java.base/jdk.internal.vm.VMSupport`.

This PR makes the above changes. As a result, it's possible to build a JDK 
image that includes (and uses) libgraal but does not include 
`jdk.internal.vm.ci` or `jdk.internal.vm.compiler`. This both reduces footprint 
and better isolates the JAVMCI and the Graal compiler as accessing these 
components from Java code is now impossible.

-------------

Commit messages:
 - move JVMCI exception translation support into VMSupport
 - move JVMCITraceMark blocks within scope of C2V_BLOCK (GR-40773)
 - move JVMCI system properties support into VMSupport
 - only resolve jdk.internal.vm.ci if it is present on the file system

Changes: https://git.openjdk.org/jdk/pull/11513/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=11513&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8298099
  Stats: 1414 lines in 20 files changed: 607 ins; 706 del; 101 mod
  Patch: https://git.openjdk.org/jdk/pull/11513.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/11513/head:pull/11513

PR: https://git.openjdk.org/jdk/pull/11513

Reply via email to