src/share/vm/runtime/thread.cpp

changeset 4232
a1b8cf9cf970
parent 4193
716c64bda5ba
child 4250
c284cf4781f0
child 4261
6cb0d32b828b
equal deleted inserted replaced
4231:845129b692f6 4232:a1b8cf9cf970
1040 JavaCalls::call_static(&result, klass, vmSymbols::initializeSystemClass_name(), 1040 JavaCalls::call_static(&result, klass, vmSymbols::initializeSystemClass_name(),
1041 vmSymbols::void_method_signature(), CHECK); 1041 vmSymbols::void_method_signature(), CHECK);
1042 } 1042 }
1043 1043
1044 char java_runtime_name[128] = ""; 1044 char java_runtime_name[128] = "";
1045 char java_runtime_version[128] = "";
1045 1046
1046 // extract the JRE name from sun.misc.Version.java_runtime_name 1047 // extract the JRE name from sun.misc.Version.java_runtime_name
1047 static const char* get_java_runtime_name(TRAPS) { 1048 static const char* get_java_runtime_name(TRAPS) {
1048 Klass* k = SystemDictionary::find(vmSymbols::sun_misc_Version(), 1049 Klass* k = SystemDictionary::find(vmSymbols::sun_misc_Version(),
1049 Handle(), Handle(), CHECK_AND_CLEAR_NULL); 1050 Handle(), Handle(), CHECK_AND_CLEAR_NULL);
1056 if (name_oop == NULL) 1057 if (name_oop == NULL)
1057 return NULL; 1058 return NULL;
1058 const char* name = java_lang_String::as_utf8_string(name_oop, 1059 const char* name = java_lang_String::as_utf8_string(name_oop,
1059 java_runtime_name, 1060 java_runtime_name,
1060 sizeof(java_runtime_name)); 1061 sizeof(java_runtime_name));
1062 return name;
1063 } else {
1064 return NULL;
1065 }
1066 }
1067
1068 // extract the JRE version from sun.misc.Version.java_runtime_version
1069 static const char* get_java_runtime_version(TRAPS) {
1070 Klass* k = SystemDictionary::find(vmSymbols::sun_misc_Version(),
1071 Handle(), Handle(), CHECK_AND_CLEAR_NULL);
1072 fieldDescriptor fd;
1073 bool found = k != NULL &&
1074 InstanceKlass::cast(k)->find_local_field(vmSymbols::java_runtime_version_name(),
1075 vmSymbols::string_signature(), &fd);
1076 if (found) {
1077 oop name_oop = k->java_mirror()->obj_field(fd.offset());
1078 if (name_oop == NULL)
1079 return NULL;
1080 const char* name = java_lang_String::as_utf8_string(name_oop,
1081 java_runtime_version,
1082 sizeof(java_runtime_version));
1061 return name; 1083 return name;
1062 } else { 1084 } else {
1063 return NULL; 1085 return NULL;
1064 } 1086 }
1065 } 1087 }
3471 initialize_class(vmSymbols::java_lang_Class(), CHECK_0); 3493 initialize_class(vmSymbols::java_lang_Class(), CHECK_0);
3472 call_initializeSystemClass(CHECK_0); 3494 call_initializeSystemClass(CHECK_0);
3473 3495
3474 // get the Java runtime name after java.lang.System is initialized 3496 // get the Java runtime name after java.lang.System is initialized
3475 JDK_Version::set_runtime_name(get_java_runtime_name(THREAD)); 3497 JDK_Version::set_runtime_name(get_java_runtime_name(THREAD));
3498 JDK_Version::set_runtime_version(get_java_runtime_version(THREAD));
3476 } else { 3499 } else {
3477 warning("java.lang.System not initialized"); 3500 warning("java.lang.System not initialized");
3478 } 3501 }
3479 3502
3480 // an instance of OutOfMemory exception has been allocated earlier 3503 // an instance of OutOfMemory exception has been allocated earlier

mercurial