equal
deleted
inserted
replaced
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 |