677 678 void vm_exit_during_initialization(const char* error, const char* message) { 679 vm_notify_during_shutdown(error, message); 680 681 // Failure during initialization, we don't want to dump core 682 vm_abort(false); 683 } 684 685 void vm_shutdown_during_initialization(const char* error, const char* message) { 686 vm_notify_during_shutdown(error, message); 687 vm_shutdown(); 688 } 689 690 JDK_Version JDK_Version::_current; 691 const char* JDK_Version::_runtime_name; 692 const char* JDK_Version::_runtime_version; 693 const char* JDK_Version::_runtime_vendor_version; 694 const char* JDK_Version::_runtime_vendor_vm_bug_url; 695 696 void JDK_Version::initialize() { 697 jdk_version_info info; 698 assert(!_current.is_valid(), "Don't initialize twice"); 699 700 void *lib_handle = os::native_java_library(); 701 jdk_version_info_fn_t func = CAST_TO_FN_PTR(jdk_version_info_fn_t, 702 os::dll_lookup(lib_handle, "JDK_GetVersionInfo0")); 703 704 assert(func != NULL, "Support for JDK 1.5 or older has been removed after JEP-223"); 705 706 (*func)(&info, sizeof(info)); 707 708 int major = JDK_VERSION_MAJOR(info.jdk_version); 709 int minor = JDK_VERSION_MINOR(info.jdk_version); 710 int security = JDK_VERSION_SECURITY(info.jdk_version); 711 int build = JDK_VERSION_BUILD(info.jdk_version); 712 713 _current = JDK_Version(major, minor, security, info.patch_version, build); 714 } 715 716 void JDK_Version_init() { 717 JDK_Version::initialize(); 718 } 719 720 static int64_t encode_jdk_version(const JDK_Version& v) { 721 return 722 ((int64_t)v.major_version() << (BitsPerByte * 4)) | 723 ((int64_t)v.minor_version() << (BitsPerByte * 3)) | 724 ((int64_t)v.security_version() << (BitsPerByte * 2)) | 725 ((int64_t)v.patch_version() << (BitsPerByte * 1)) | 726 ((int64_t)v.build_number() << (BitsPerByte * 0)); 727 } 728 729 int JDK_Version::compare(const JDK_Version& other) const { 730 assert(is_valid() && other.is_valid(), "Invalid version (uninitialized?)"); 731 uint64_t e = encode_jdk_version(*this); 732 uint64_t o = encode_jdk_version(other); 733 return (e > o) ? 1 : ((e == o) ? 0 : -1); | 677 678 void vm_exit_during_initialization(const char* error, const char* message) { 679 vm_notify_during_shutdown(error, message); 680 681 // Failure during initialization, we don't want to dump core 682 vm_abort(false); 683 } 684 685 void vm_shutdown_during_initialization(const char* error, const char* message) { 686 vm_notify_during_shutdown(error, message); 687 vm_shutdown(); 688 } 689 690 JDK_Version JDK_Version::_current; 691 const char* JDK_Version::_runtime_name; 692 const char* JDK_Version::_runtime_version; 693 const char* JDK_Version::_runtime_vendor_version; 694 const char* JDK_Version::_runtime_vendor_vm_bug_url; 695 696 void JDK_Version::initialize() { 697 assert(!_current.is_valid(), "Don't initialize twice"); 698 699 int major = VM_Version::vm_major_version(); 700 int minor = VM_Version::vm_minor_version(); 701 int security = VM_Version::vm_security_version(); 702 int build = VM_Version::vm_build_number(); 703 int patch = VM_Version::vm_patch_version(); 704 _current = JDK_Version(major, minor, security, patch, build); 705 } 706 707 void JDK_Version_init() { 708 JDK_Version::initialize(); 709 } 710 711 static int64_t encode_jdk_version(const JDK_Version& v) { 712 return 713 ((int64_t)v.major_version() << (BitsPerByte * 4)) | 714 ((int64_t)v.minor_version() << (BitsPerByte * 3)) | 715 ((int64_t)v.security_version() << (BitsPerByte * 2)) | 716 ((int64_t)v.patch_version() << (BitsPerByte * 1)) | 717 ((int64_t)v.build_number() << (BitsPerByte * 0)); 718 } 719 720 int JDK_Version::compare(const JDK_Version& other) const { 721 assert(is_valid() && other.is_valid(), "Invalid version (uninitialized?)"); 722 uint64_t e = encode_jdk_version(*this); 723 uint64_t o = encode_jdk_version(other); 724 return (e > o) ? 1 : ((e == o) ? 0 : -1); |