src/share/vm/runtime/thread.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
7176856 Cdiff src/share/vm/runtime/thread.cpp
src/share/vm/runtime/thread.cpp
Print this page
*** 994,1003 ****
--- 994,1026 ----
JavaValue result(T_VOID);
JavaCalls::call_static(&result, klass, vmSymbols::initializeSystemClass_name(),
vmSymbols::void_method_signature(), CHECK);
}
+ char java_runtime_name[128] = "";
+
+ // extract the JRE name from sun.misc.Version.java_runtime_name
+ static const char* get_java_runtime_name(TRAPS) {
+ klassOop k = SystemDictionary::find(vmSymbols::sun_misc_Version(),
+ Handle(), Handle(), CHECK_AND_CLEAR_NULL);
+ fieldDescriptor fd;
+ bool found = k != NULL &&
+ instanceKlass::cast(k)->find_local_field(vmSymbols::java_runtime_name_name(),
+ vmSymbols::string_signature(), &fd);
+ if (found) {
+ oop name_oop = k->java_mirror()->obj_field(fd.offset());
+ if (name_oop == NULL)
+ return NULL;
+ const char* name = java_lang_String::as_utf8_string(name_oop,
+ java_runtime_name,
+ sizeof(java_runtime_name));
+ return name;
+ } else {
+ return NULL;
+ }
+ }
+
// General purpose hook into Java code, run once when the VM is initialized.
// The Java library method itself may be changed independently from the VM.
static void call_postVMInitHook(TRAPS) {
klassOop k = SystemDictionary::PostVMInitHook_klass();
instanceKlassHandle klass (THREAD, k);
*** 3350,3359 ****
--- 3373,3385 ----
initialize_class(vmSymbols::java_lang_reflect_Method(), CHECK_0);
initialize_class(vmSymbols::java_lang_ref_Finalizer(), CHECK_0);
// The VM creates & returns objects of this class. Make sure it's initialized.
initialize_class(vmSymbols::java_lang_Class(), CHECK_0);
call_initializeSystemClass(CHECK_0);
+
+ // get the Java runtime name after java.lang.System is initialized
+ JDK_Version::set_runtime_name(get_java_runtime_name(THREAD));
} else {
warning("java.lang.System not initialized");
}
// an instance of OutOfMemory exception has been allocated earlier
src/share/vm/runtime/thread.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File