8138677: IllegalAccessException Class sun.usagetracker.UsageTrackerClient$4 (module java.base) can not access a member of class java.lang.management.ManagementFactory (module java.management)
Reviewed-by: alanb, mchung, dholmes, erikj, ihse
--- a/hotspot/make/share/makefiles/mapfile-vers Thu Dec 17 08:23:51 2015 +0100
+++ b/hotspot/make/share/makefiles/mapfile-vers Tue Nov 24 16:07:40 2015 +0100
@@ -111,6 +111,7 @@
JVM_GetSystemPackages;
JVM_GetTemporaryDirectory;
JVM_GetVersionInfo;
+ JVM_GetVmArguments;
JVM_Halt;
JVM_HoldsLock;
JVM_IHashCode;
--- a/hotspot/src/share/vm/prims/jvm.cpp Thu Dec 17 08:23:51 2015 +0100
+++ b/hotspot/src/share/vm/prims/jvm.cpp Tue Nov 24 16:07:40 2015 +0100
@@ -3723,6 +3723,35 @@
}
JVM_END
+// Returns an array of java.lang.String objects containing the input arguments to the VM.
+JVM_ENTRY(jobjectArray, JVM_GetVmArguments(JNIEnv *env))
+ ResourceMark rm(THREAD);
+
+ if (Arguments::num_jvm_args() == 0 && Arguments::num_jvm_flags() == 0) {
+ return NULL;
+ }
+
+ char** vm_flags = Arguments::jvm_flags_array();
+ char** vm_args = Arguments::jvm_args_array();
+ int num_flags = Arguments::num_jvm_flags();
+ int num_args = Arguments::num_jvm_args();
+
+ instanceKlassHandle ik (THREAD, SystemDictionary::String_klass());
+ objArrayOop r = oopFactory::new_objArray(ik(), num_args + num_flags, CHECK_NULL);
+ objArrayHandle result_h(THREAD, r);
+
+ int index = 0;
+ for (int j = 0; j < num_flags; j++, index++) {
+ Handle h = java_lang_String::create_from_platform_dependent_str(vm_flags[j], CHECK_NULL);
+ result_h->obj_at_put(index, h());
+ }
+ for (int i = 0; i < num_args; i++, index++) {
+ Handle h = java_lang_String::create_from_platform_dependent_str(vm_args[i], CHECK_NULL);
+ result_h->obj_at_put(index, h());
+ }
+ return (jobjectArray) JNIHandles::make_local(env, result_h());
+JVM_END
+
JVM_ENTRY_NO_ENV(jint, JVM_FindSignal(const char *name))
return os::get_signal_number(name);
JVM_END
--- a/hotspot/src/share/vm/prims/jvm.h Thu Dec 17 08:23:51 2015 +0100
+++ b/hotspot/src/share/vm/prims/jvm.h Tue Nov 24 16:07:40 2015 +0100
@@ -141,6 +141,10 @@
JNIEXPORT jobject JNICALL
JVM_InitProperties(JNIEnv *env, jobject p);
+/*
+ * java.lang.Runtime
+ */
+
JNIEXPORT void JNICALL
JVM_Halt(jint code);
@@ -188,6 +192,9 @@
JNIEXPORT jboolean JNICALL
JVM_IsSupportedJNIVersion(jint version);
+JNIEXPORT jobjectArray JNICALL
+JVM_GetVmArguments(JNIEnv *env);
+
/*
* java.lang.Throwable
*/
--- a/hotspot/src/share/vm/services/jmm.h Thu Dec 17 08:23:51 2015 +0100
+++ b/hotspot/src/share/vm/services/jmm.h Tue Nov 24 16:07:40 2015 +0100
@@ -227,16 +227,10 @@
jint (JNICALL *GetOptionalSupport) (JNIEnv *env,
jmmOptionalSupport* support_ptr);
- /* This is used by JDK 6 and earlier.
- * For JDK 7 and after, use GetInputArgumentArray.
- */
- jobject (JNICALL *GetInputArguments) (JNIEnv *env);
-
jint (JNICALL *GetThreadInfo) (JNIEnv *env,
jlongArray ids,
jint maxDepth,
jobjectArray infoArray);
- jobjectArray (JNICALL *GetInputArgumentArray) (JNIEnv *env);
jobjectArray (JNICALL *GetMemoryPools) (JNIEnv* env, jobject mgr);
--- a/hotspot/src/share/vm/services/management.cpp Thu Dec 17 08:23:51 2015 +0100
+++ b/hotspot/src/share/vm/services/management.cpp Tue Nov 24 16:07:40 2015 +0100
@@ -473,90 +473,6 @@
return 0;
JVM_END
-// Returns a java.lang.String object containing the input arguments to the VM.
-JVM_ENTRY(jobject, jmm_GetInputArguments(JNIEnv *env))
- ResourceMark rm(THREAD);
-
- if (Arguments::num_jvm_args() == 0 && Arguments::num_jvm_flags() == 0) {
- return NULL;
- }
-
- char** vm_flags = Arguments::jvm_flags_array();
- char** vm_args = Arguments::jvm_args_array();
- int num_flags = Arguments::num_jvm_flags();
- int num_args = Arguments::num_jvm_args();
-
- size_t length = 1; // null terminator
- int i;
- for (i = 0; i < num_flags; i++) {
- length += strlen(vm_flags[i]);
- }
- for (i = 0; i < num_args; i++) {
- length += strlen(vm_args[i]);
- }
- // add a space between each argument
- length += num_flags + num_args - 1;
-
- // Return the list of input arguments passed to the VM
- // and preserve the order that the VM processes.
- char* args = NEW_RESOURCE_ARRAY(char, length);
- args[0] = '\0';
- // concatenate all jvm_flags
- if (num_flags > 0) {
- strcat(args, vm_flags[0]);
- for (i = 1; i < num_flags; i++) {
- strcat(args, " ");
- strcat(args, vm_flags[i]);
- }
- }
-
- if (num_args > 0 && num_flags > 0) {
- // append a space if args already contains one or more jvm_flags
- strcat(args, " ");
- }
-
- // concatenate all jvm_args
- if (num_args > 0) {
- strcat(args, vm_args[0]);
- for (i = 1; i < num_args; i++) {
- strcat(args, " ");
- strcat(args, vm_args[i]);
- }
- }
-
- Handle hargs = java_lang_String::create_from_platform_dependent_str(args, CHECK_NULL);
- return JNIHandles::make_local(env, hargs());
-JVM_END
-
-// Returns an array of java.lang.String object containing the input arguments to the VM.
-JVM_ENTRY(jobjectArray, jmm_GetInputArgumentArray(JNIEnv *env))
- ResourceMark rm(THREAD);
-
- if (Arguments::num_jvm_args() == 0 && Arguments::num_jvm_flags() == 0) {
- return NULL;
- }
-
- char** vm_flags = Arguments::jvm_flags_array();
- char** vm_args = Arguments::jvm_args_array();
- int num_flags = Arguments::num_jvm_flags();
- int num_args = Arguments::num_jvm_args();
-
- instanceKlassHandle ik (THREAD, SystemDictionary::String_klass());
- objArrayOop r = oopFactory::new_objArray(ik(), num_args + num_flags, CHECK_NULL);
- objArrayHandle result_h(THREAD, r);
-
- int index = 0;
- for (int j = 0; j < num_flags; j++, index++) {
- Handle h = java_lang_String::create_from_platform_dependent_str(vm_flags[j], CHECK_NULL);
- result_h->obj_at_put(index, h());
- }
- for (int i = 0; i < num_args; i++, index++) {
- Handle h = java_lang_String::create_from_platform_dependent_str(vm_args[i], CHECK_NULL);
- result_h->obj_at_put(index, h());
- }
- return (jobjectArray) JNIHandles::make_local(env, result_h());
-JVM_END
-
// Returns an array of java/lang/management/MemoryPoolMXBean object
// one for each memory pool if obj == null; otherwise returns
// an array of memory pools for a given memory manager if
@@ -2291,9 +2207,7 @@
NULL,
jmm_GetVersion,
jmm_GetOptionalSupport,
- jmm_GetInputArguments,
jmm_GetThreadInfo,
- jmm_GetInputArgumentArray,
jmm_GetMemoryPools,
jmm_GetMemoryManagers,
jmm_GetMemoryPoolUsage,