changeset 22401:31e0737e2fce

added -XX:JVMCIServicesDir for specifying an alternative to <jre>/lib/jvmci/services
author Doug Simon <doug.simon@oracle.com>
date Wed, 05 Aug 2015 00:22:17 +0200
parents b876144b52f3
children 37ec3ff2f8e0
files src/share/vm/jvmci/jvmciGlobals.hpp src/share/vm/jvmci/jvmciRuntime.cpp
diffstat 2 files changed, 14 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/vm/jvmci/jvmciGlobals.hpp	Tue Aug 04 23:46:37 2015 +0200
+++ b/src/share/vm/jvmci/jvmciGlobals.hpp	Wed Aug 05 00:22:17 2015 +0200
@@ -52,6 +52,9 @@
   product(bool, UseJVMCIClassLoader, true,                                  \
           "Load JVMCI classes with separate class loader")                  \
                                                                             \
+  product(ccstr, JVMCIServicesDir, NULL,                                    \
+          "Alternate directory to use for JVMCI services")                  \
+                                                                            \
   COMPILERJVMCI_PRESENT(product(bool, BootstrapJVMCI, true,                 \
           "Bootstrap JVMCI before running Java main method"))               \
                                                                             \
@@ -67,7 +70,7 @@
   JVMCI_ONLY(product(bool, CodeInstallSafepointChecks, true,                \
           "Perform explicit safepoint checks while installing code"))       \
                                                                             \
-  NOT_COMPILER2(product_pd(intx, MaxVectorSize,                                \
+  NOT_COMPILER2(product_pd(intx, MaxVectorSize,                             \
           "Max vector size in bytes, "                                      \
           "actual size could be less depending on elements type"))          \
                                                                             \
--- a/src/share/vm/jvmci/jvmciRuntime.cpp	Tue Aug 04 23:46:37 2015 +0200
+++ b/src/share/vm/jvmci/jvmciRuntime.cpp	Wed Aug 05 00:22:17 2015 +0200
@@ -975,10 +975,17 @@
 objArrayHandle JVMCIRuntime::get_service_impls(KlassHandle serviceKlass, TRAPS) {
   const char* home = Arguments::get_java_home();
   const char* serviceName = serviceKlass->external_name();
-  size_t path_len = strlen(home) + strlen("/lib/jvmci/services/") + strlen(serviceName) + 1;
-  char* path = NEW_RESOURCE_ARRAY_IN_THREAD(THREAD, char, path_len);
+  char* path;
   char sep = os::file_separator()[0];
-  sprintf(path, "%s%clib%cjvmci%cservices%c%s", home, sep, sep, sep, sep, serviceName);
+  if (JVMCIServicesDir == NULL) {
+    size_t path_len = strlen(home) + strlen("/lib/jvmci/services/") + strlen(serviceName) + 1;
+    path = NEW_RESOURCE_ARRAY_IN_THREAD(THREAD, char, path_len);
+    sprintf(path, "%s%clib%cjvmci%cservices%c%s", home, sep, sep, sep, sep, serviceName);
+  } else {
+    size_t path_len = strlen(JVMCIServicesDir) + strlen(serviceName) + 1;
+    path = NEW_RESOURCE_ARRAY_IN_THREAD(THREAD, char, path_len);
+    sprintf(path, "%s%c%s", JVMCIServicesDir, sep, serviceName);
+  }
   ServiceParseClosure closure;
   parse_lines(path, &closure, false);