hotspot/src/share/vm/runtime/thread.cpp
changeset 14289 aec758622b4b
parent 14120 7d298141c258
child 14390 bd0d881cf1c5
child 14471 f3a6b82e25cf
equal deleted inserted replaced
14288:a171bf7d0c99 14289:aec758622b4b
  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