diff src/share/vm/jvmci/jvmciRuntime.cpp @ 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 4f6caa445b92
children 8abc6030cf1c
line wrap: on
line diff
--- 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);