8177845: Need a mechanism to load Graal
Reviewed-by: kvn, mchung
This commit is contained in:
parent
7f3d5dc40b
commit
3a3040f1c9
@ -25,9 +25,25 @@
|
|||||||
|
|
||||||
include LauncherCommon.gmk
|
include LauncherCommon.gmk
|
||||||
|
|
||||||
|
# The JVMCI exports are needed since JVMCI is normally dynamically exported
|
||||||
|
# (see jdk.vm.ci.services.internal.ReflectionAccessJDK::openJVMCITo).
|
||||||
|
|
||||||
$(eval $(call SetupBuildLauncher, jaotc, \
|
$(eval $(call SetupBuildLauncher, jaotc, \
|
||||||
MAIN_CLASS := jdk.tools.jaotc.Main, \
|
MAIN_CLASS := jdk.tools.jaotc.Main, \
|
||||||
JAVA_ARGS := -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI \
|
JAVA_ARGS := -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI \
|
||||||
|
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.aarch64=$(call CommaList, jdk.internal.vm.compiler jdk.aot) \
|
||||||
|
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.amd64=$(call CommaList, jdk.internal.vm.compiler jdk.aot) \
|
||||||
|
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.code=$(call CommaList, jdk.internal.vm.compiler jdk.aot) \
|
||||||
|
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.code.site=$(call CommaList, jdk.internal.vm.compiler jdk.aot) \
|
||||||
|
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.code.stack=$(call CommaList, jdk.internal.vm.compiler jdk.aot) \
|
||||||
|
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.common=$(call CommaList, jdk.internal.vm.compiler jdk.aot) \
|
||||||
|
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot=$(call CommaList, jdk.internal.vm.compiler jdk.aot) \
|
||||||
|
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.aarch64=$(call CommaList, jdk.internal.vm.compiler jdk.aot) \
|
||||||
|
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.amd64=$(call CommaList, jdk.internal.vm.compiler jdk.aot) \
|
||||||
|
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.sparc=$(call CommaList, jdk.internal.vm.compiler jdk.aot) \
|
||||||
|
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.meta=$(call CommaList, jdk.internal.vm.compiler jdk.aot) \
|
||||||
|
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.runtime=$(call CommaList, jdk.internal.vm.compiler jdk.aot) \
|
||||||
|
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.sparc=$(call CommaList, jdk.internal.vm.compiler jdk.aot) \
|
||||||
-XX:+UseAOT \
|
-XX:+UseAOT \
|
||||||
-Djvmci.UseProfilingInformation=false \
|
-Djvmci.UseProfilingInformation=false \
|
||||||
-Dgraal.UseExceptionProbability=false \
|
-Dgraal.UseExceptionProbability=false \
|
||||||
|
@ -26,7 +26,10 @@
|
|||||||
package jdk.internal.misc;
|
package jdk.internal.misc;
|
||||||
|
|
||||||
import static java.lang.Thread.State.*;
|
import static java.lang.Thread.State.*;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
public class VM {
|
public class VM {
|
||||||
|
|
||||||
@ -132,25 +135,33 @@ public class VM {
|
|||||||
* Returns the system property of the specified key saved at
|
* Returns the system property of the specified key saved at
|
||||||
* system initialization time. This method should only be used
|
* system initialization time. This method should only be used
|
||||||
* for the system properties that are not changed during runtime.
|
* for the system properties that are not changed during runtime.
|
||||||
* It accesses a private copy of the system properties so
|
|
||||||
* that user's locking of the system properties object will not
|
|
||||||
* cause the library to deadlock.
|
|
||||||
*
|
*
|
||||||
* Note that the saved system properties do not include
|
* Note that the saved system properties do not include
|
||||||
* the ones set by sun.misc.Version.init().
|
* the ones set by java.lang.VersionProps.init().
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
public static String getSavedProperty(String key) {
|
public static String getSavedProperty(String key) {
|
||||||
if (savedProps.isEmpty())
|
if (savedProps == null)
|
||||||
throw new IllegalStateException("Should be non-empty if initialized");
|
throw new IllegalStateException("Not yet initialized");
|
||||||
|
|
||||||
return savedProps.getProperty(key);
|
return savedProps.get(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: the Property Management needs to be refactored and
|
/**
|
||||||
// the appropriate prop keys need to be accessible to the
|
* Gets an unmodifiable view of the system properties saved at system
|
||||||
// calling classes to avoid duplication of keys.
|
* initialization time. This method should only be used
|
||||||
private static final Properties savedProps = new Properties();
|
* for the system properties that are not changed during runtime.
|
||||||
|
*
|
||||||
|
* Note that the saved system properties do not include
|
||||||
|
* the ones set by java.lang.VersionProps.init().
|
||||||
|
*/
|
||||||
|
public static Map<String, String> getSavedProperties() {
|
||||||
|
if (savedProps == null)
|
||||||
|
throw new IllegalStateException("Not yet initialized");
|
||||||
|
|
||||||
|
return savedProps;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Map<String, String> savedProps;
|
||||||
|
|
||||||
// Save a private copy of the system properties and remove
|
// Save a private copy of the system properties and remove
|
||||||
// the system properties that are not intended for public access.
|
// the system properties that are not intended for public access.
|
||||||
@ -160,7 +171,12 @@ public class VM {
|
|||||||
if (initLevel() != 0)
|
if (initLevel() != 0)
|
||||||
throw new IllegalStateException("Wrong init level");
|
throw new IllegalStateException("Wrong init level");
|
||||||
|
|
||||||
savedProps.putAll(props);
|
@SuppressWarnings({"rawtypes", "unchecked"})
|
||||||
|
Map<String, String> sp =
|
||||||
|
Map.ofEntries(props.entrySet().toArray(new Map.Entry[0]));
|
||||||
|
// only main thread is running at this time, so savedProps and
|
||||||
|
// its content will be correctly published to threads started later
|
||||||
|
savedProps = sp;
|
||||||
|
|
||||||
// Set the maximum amount of direct memory. This value is controlled
|
// Set the maximum amount of direct memory. This value is controlled
|
||||||
// by the vm option -XX:MaxDirectMemorySize=<size>.
|
// by the vm option -XX:MaxDirectMemorySize=<size>.
|
||||||
|
@ -23,14 +23,5 @@
|
|||||||
* questions.
|
* questions.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// jdk.internal.vm.compiler uses Unsafe and VM classes from jdk.internal.misc
|
|
||||||
exports jdk.internal.misc to jdk.internal.vm.compiler;
|
|
||||||
opens jdk.internal.misc to jdk.internal.vm.compiler;
|
|
||||||
|
|
||||||
// jdk.internal.vm.compiler uses com.sun.crypto.provider to generate crypto intrinsics
|
|
||||||
opens com.sun.crypto.provider to jdk.internal.vm.compiler;
|
|
||||||
|
|
||||||
exports jdk.internal.module to jdk.internal.vm.compiler;
|
|
||||||
|
|
||||||
// AOT uses jdk.internal.misc.Unsafe
|
// AOT uses jdk.internal.misc.Unsafe
|
||||||
exports jdk.internal.misc to jdk.aot;
|
exports jdk.internal.misc to jdk.aot;
|
||||||
|
@ -195,15 +195,19 @@ public class VerifyJimage {
|
|||||||
.replaceAll("\\.class$", "").replace('/', '.');
|
.replaceAll("\\.class$", "").replace('/', '.');
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Set<String> DEPLOY_MODULES =
|
private static Set<String> EXCLUDED_MODULES =
|
||||||
Set.of("javafx.deploy", "jdk.deploy", "jdk.plugin", "jdk.javaws");
|
Set.of("javafx.deploy", "jdk.deploy", "jdk.plugin", "jdk.javaws",
|
||||||
|
// All JVMCI packages other than jdk.vm.ci.services are dynamically
|
||||||
|
// exported to jdk.internal.vm.compiler and jdk.aot
|
||||||
|
"jdk.internal.vm.compiler", "jdk.aot"
|
||||||
|
);
|
||||||
|
|
||||||
private boolean accept(String entry) {
|
private boolean accept(String entry) {
|
||||||
int index = entry.indexOf('/', 1);
|
int index = entry.indexOf('/', 1);
|
||||||
String mn = index > 1 ? entry.substring(1, index) : "";
|
String mn = index > 1 ? entry.substring(1, index) : "";
|
||||||
// filter deployment modules
|
// filter deployment modules
|
||||||
|
|
||||||
if (mn.isEmpty() || DEPLOY_MODULES.contains(mn)) {
|
if (mn.isEmpty() || EXCLUDED_MODULES.contains(mn)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return entry.endsWith(".class") && !entry.endsWith(MODULE_INFO);
|
return entry.endsWith(".class") && !entry.endsWith(MODULE_INFO);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user