hotspot/src/share/vm/runtime/thread.cpp
changeset 13106 cecfb99d6cff
parent 12373 09835f62dc29
child 13196 6b399731153b
equal deleted inserted replaced
13105:68f3bf10f08e 13106:cecfb99d6cff
   994   JavaValue result(T_VOID);
   994   JavaValue result(T_VOID);
   995   JavaCalls::call_static(&result, klass, vmSymbols::initializeSystemClass_name(),
   995   JavaCalls::call_static(&result, klass, vmSymbols::initializeSystemClass_name(),
   996                                          vmSymbols::void_method_signature(), CHECK);
   996                                          vmSymbols::void_method_signature(), CHECK);
   997 }
   997 }
   998 
   998 
       
   999 char java_runtime_name[128] = "";
       
  1000 
       
  1001 // extract the JRE name from sun.misc.Version.java_runtime_name
       
  1002 static const char* get_java_runtime_name(TRAPS) {
       
  1003   klassOop k = SystemDictionary::find(vmSymbols::sun_misc_Version(),
       
  1004                                       Handle(), Handle(), CHECK_AND_CLEAR_NULL);
       
  1005   fieldDescriptor fd;
       
  1006   bool found = k != NULL &&
       
  1007                instanceKlass::cast(k)->find_local_field(vmSymbols::java_runtime_name_name(),
       
  1008                                                         vmSymbols::string_signature(), &fd);
       
  1009   if (found) {
       
  1010     oop name_oop = k->java_mirror()->obj_field(fd.offset());
       
  1011     if (name_oop == NULL)
       
  1012       return NULL;
       
  1013     const char* name = java_lang_String::as_utf8_string(name_oop,
       
  1014                                                         java_runtime_name,
       
  1015                                                         sizeof(java_runtime_name));
       
  1016     return name;
       
  1017   } else {
       
  1018     return NULL;
       
  1019   }
       
  1020 }
       
  1021 
   999 // General purpose hook into Java code, run once when the VM is initialized.
  1022 // General purpose hook into Java code, run once when the VM is initialized.
  1000 // The Java library method itself may be changed independently from the VM.
  1023 // The Java library method itself may be changed independently from the VM.
  1001 static void call_postVMInitHook(TRAPS) {
  1024 static void call_postVMInitHook(TRAPS) {
  1002   klassOop k = SystemDictionary::PostVMInitHook_klass();
  1025   klassOop k = SystemDictionary::PostVMInitHook_klass();
  1003   instanceKlassHandle klass (THREAD, k);
  1026   instanceKlassHandle klass (THREAD, k);
  3350       initialize_class(vmSymbols::java_lang_reflect_Method(), CHECK_0);
  3373       initialize_class(vmSymbols::java_lang_reflect_Method(), CHECK_0);
  3351       initialize_class(vmSymbols::java_lang_ref_Finalizer(),  CHECK_0);
  3374       initialize_class(vmSymbols::java_lang_ref_Finalizer(),  CHECK_0);
  3352       // The VM creates & returns objects of this class. Make sure it's initialized.
  3375       // The VM creates & returns objects of this class. Make sure it's initialized.
  3353       initialize_class(vmSymbols::java_lang_Class(), CHECK_0);
  3376       initialize_class(vmSymbols::java_lang_Class(), CHECK_0);
  3354       call_initializeSystemClass(CHECK_0);
  3377       call_initializeSystemClass(CHECK_0);
       
  3378 
       
  3379       // get the Java runtime name after java.lang.System is initialized
       
  3380       JDK_Version::set_runtime_name(get_java_runtime_name(THREAD));
  3355     } else {
  3381     } else {
  3356       warning("java.lang.System not initialized");
  3382       warning("java.lang.System not initialized");
  3357     }
  3383     }
  3358 
  3384 
  3359     // an instance of OutOfMemory exception has been allocated earlier
  3385     // an instance of OutOfMemory exception has been allocated earlier