# HG changeset patch # User Doug Simon # Date 1438726937 -7200 # Node ID 31e0737e2fcec24b6f1aa01ffbf0e683c0ef4044 # Parent b876144b52f3b81a54d231461a024a56ad3b85cc added -XX:JVMCIServicesDir for specifying an alternative to /lib/jvmci/services diff -r b876144b52f3 -r 31e0737e2fce src/share/vm/jvmci/jvmciGlobals.hpp --- 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")) \ \ diff -r b876144b52f3 -r 31e0737e2fce src/share/vm/jvmci/jvmciRuntime.cpp --- 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);