src/hotspot/share/runtime/thread.cpp
changeset 58842 6c255334120d
parent 58488 165b193b30dd
child 58853 4c036608ca8b
child 58901 2700c409ff10
equal deleted inserted replaced
58836:31ec3e55fa3d 58842:6c255334120d
  1088   return thread_oop();
  1088   return thread_oop();
  1089 }
  1089 }
  1090 
  1090 
  1091 char java_runtime_name[128] = "";
  1091 char java_runtime_name[128] = "";
  1092 char java_runtime_version[128] = "";
  1092 char java_runtime_version[128] = "";
       
  1093 char java_runtime_vendor_version[128] = "";
       
  1094 char java_runtime_vendor_vm_bug_url[128] = "";
  1093 
  1095 
  1094 // extract the JRE name from java.lang.VersionProps.java_runtime_name
  1096 // extract the JRE name from java.lang.VersionProps.java_runtime_name
  1095 static const char* get_java_runtime_name(TRAPS) {
  1097 static const char* get_java_runtime_name(TRAPS) {
  1096   Klass* k = SystemDictionary::find(vmSymbols::java_lang_VersionProps(),
  1098   Klass* k = SystemDictionary::find(vmSymbols::java_lang_VersionProps(),
  1097                                     Handle(), Handle(), CHECK_AND_CLEAR_NULL);
  1099                                     Handle(), Handle(), CHECK_AND_CLEAR_NULL);
  1127       return NULL;
  1129       return NULL;
  1128     }
  1130     }
  1129     const char* name = java_lang_String::as_utf8_string(name_oop,
  1131     const char* name = java_lang_String::as_utf8_string(name_oop,
  1130                                                         java_runtime_version,
  1132                                                         java_runtime_version,
  1131                                                         sizeof(java_runtime_version));
  1133                                                         sizeof(java_runtime_version));
       
  1134     return name;
       
  1135   } else {
       
  1136     return NULL;
       
  1137   }
       
  1138 }
       
  1139 
       
  1140 // extract the JRE vendor version from java.lang.VersionProps.VENDOR_VERSION
       
  1141 static const char* get_java_runtime_vendor_version(TRAPS) {
       
  1142   Klass* k = SystemDictionary::find(vmSymbols::java_lang_VersionProps(),
       
  1143                                     Handle(), Handle(), CHECK_AND_CLEAR_NULL);
       
  1144   fieldDescriptor fd;
       
  1145   bool found = k != NULL &&
       
  1146                InstanceKlass::cast(k)->find_local_field(vmSymbols::java_runtime_vendor_version_name(),
       
  1147                                                         vmSymbols::string_signature(), &fd);
       
  1148   if (found) {
       
  1149     oop name_oop = k->java_mirror()->obj_field(fd.offset());
       
  1150     if (name_oop == NULL) {
       
  1151       return NULL;
       
  1152     }
       
  1153     const char* name = java_lang_String::as_utf8_string(name_oop,
       
  1154                                                         java_runtime_vendor_version,
       
  1155                                                         sizeof(java_runtime_vendor_version));
       
  1156     return name;
       
  1157   } else {
       
  1158     return NULL;
       
  1159   }
       
  1160 }
       
  1161 
       
  1162 // extract the JRE vendor VM bug URL from java.lang.VersionProps.VENDOR_URL_VM_BUG
       
  1163 static const char* get_java_runtime_vendor_vm_bug_url(TRAPS) {
       
  1164   Klass* k = SystemDictionary::find(vmSymbols::java_lang_VersionProps(),
       
  1165                                     Handle(), Handle(), CHECK_AND_CLEAR_NULL);
       
  1166   fieldDescriptor fd;
       
  1167   bool found = k != NULL &&
       
  1168                InstanceKlass::cast(k)->find_local_field(vmSymbols::java_runtime_vendor_vm_bug_url_name(),
       
  1169                                                         vmSymbols::string_signature(), &fd);
       
  1170   if (found) {
       
  1171     oop name_oop = k->java_mirror()->obj_field(fd.offset());
       
  1172     if (name_oop == NULL) {
       
  1173       return NULL;
       
  1174     }
       
  1175     const char* name = java_lang_String::as_utf8_string(name_oop,
       
  1176                                                         java_runtime_vendor_vm_bug_url,
       
  1177                                                         sizeof(java_runtime_vendor_vm_bug_url));
  1132     return name;
  1178     return name;
  1133   } else {
  1179   } else {
  1134     return NULL;
  1180     return NULL;
  1135   }
  1181   }
  1136 }
  1182 }
  3654   initialize_class(vmSymbols::java_lang_ref_Finalizer(), CHECK);
  3700   initialize_class(vmSymbols::java_lang_ref_Finalizer(), CHECK);
  3655 
  3701 
  3656   // Phase 1 of the system initialization in the library, java.lang.System class initialization
  3702   // Phase 1 of the system initialization in the library, java.lang.System class initialization
  3657   call_initPhase1(CHECK);
  3703   call_initPhase1(CHECK);
  3658 
  3704 
  3659   // get the Java runtime name after java.lang.System is initialized
  3705   // get the Java runtime name, version, and vendor info after java.lang.System is initialized
  3660   JDK_Version::set_runtime_name(get_java_runtime_name(THREAD));
  3706   JDK_Version::set_runtime_name(get_java_runtime_name(THREAD));
  3661   JDK_Version::set_runtime_version(get_java_runtime_version(THREAD));
  3707   JDK_Version::set_runtime_version(get_java_runtime_version(THREAD));
       
  3708   JDK_Version::set_runtime_vendor_version(get_java_runtime_vendor_version(THREAD));
       
  3709   JDK_Version::set_runtime_vendor_vm_bug_url(get_java_runtime_vendor_vm_bug_url(THREAD));
  3662 
  3710 
  3663   // an instance of OutOfMemory exception has been allocated earlier
  3711   // an instance of OutOfMemory exception has been allocated earlier
  3664   initialize_class(vmSymbols::java_lang_OutOfMemoryError(), CHECK);
  3712   initialize_class(vmSymbols::java_lang_OutOfMemoryError(), CHECK);
  3665   initialize_class(vmSymbols::java_lang_NullPointerException(), CHECK);
  3713   initialize_class(vmSymbols::java_lang_NullPointerException(), CHECK);
  3666   initialize_class(vmSymbols::java_lang_ClassCastException(), CHECK);
  3714   initialize_class(vmSymbols::java_lang_ClassCastException(), CHECK);