53 int Abstract_VM_Version::_reserve_for_allocation_prefetch = 0; |
53 int Abstract_VM_Version::_reserve_for_allocation_prefetch = 0; |
54 |
54 |
55 #ifndef HOTSPOT_RELEASE_VERSION |
55 #ifndef HOTSPOT_RELEASE_VERSION |
56 #error HOTSPOT_RELEASE_VERSION must be defined |
56 #error HOTSPOT_RELEASE_VERSION must be defined |
57 #endif |
57 #endif |
|
58 |
|
59 #ifndef JDK_MAJOR_VERSION |
|
60 #error JDK_MAJOR_VERSION must be defined |
|
61 #endif |
|
62 #ifndef JDK_MINOR_VERSION |
|
63 #error JDK_MINOR_VERSION must be defined |
|
64 #endif |
|
65 #ifndef JDK_MICRO_VERSION |
|
66 #error JDK_MICRO_VERSION must be defined |
|
67 #endif |
|
68 #ifndef JDK_BUILD_NUMBER |
|
69 #error JDK_BUILD_NUMBER must be defined |
|
70 #endif |
|
71 |
58 #ifndef JRE_RELEASE_VERSION |
72 #ifndef JRE_RELEASE_VERSION |
59 #error JRE_RELEASE_VERSION must be defined |
73 #error JRE_RELEASE_VERSION must be defined |
60 #endif |
74 #endif |
61 #ifndef HOTSPOT_BUILD_TARGET |
75 #ifndef HOTSPOT_BUILD_TARGET |
62 #error HOTSPOT_BUILD_TARGET must be defined |
76 #error HOTSPOT_BUILD_TARGET must be defined |
66 #define VM_RELEASE HOTSPOT_RELEASE_VERSION |
80 #define VM_RELEASE HOTSPOT_RELEASE_VERSION |
67 #else |
81 #else |
68 #define VM_RELEASE HOTSPOT_RELEASE_VERSION "-" HOTSPOT_BUILD_TARGET |
82 #define VM_RELEASE HOTSPOT_RELEASE_VERSION "-" HOTSPOT_BUILD_TARGET |
69 #endif |
83 #endif |
70 |
84 |
71 // HOTSPOT_RELEASE_VERSION must follow the release version naming convention |
85 // HOTSPOT_RELEASE_VERSION follows the JDK release version naming convention |
72 // <major_ver>.<minor_ver>-b<nn>[-<identifier>][-<debug_target>] |
86 // <major_ver>.<minor_ver>.<micro_ver>[-<identifier>][-<debug_target>][-b<nn>] |
73 int Abstract_VM_Version::_vm_major_version = 0; |
87 int Abstract_VM_Version::_vm_major_version = 0; |
74 int Abstract_VM_Version::_vm_minor_version = 0; |
88 int Abstract_VM_Version::_vm_minor_version = 0; |
|
89 int Abstract_VM_Version::_vm_micro_version = 0; |
75 int Abstract_VM_Version::_vm_build_number = 0; |
90 int Abstract_VM_Version::_vm_build_number = 0; |
76 bool Abstract_VM_Version::_initialized = false; |
91 bool Abstract_VM_Version::_initialized = false; |
77 int Abstract_VM_Version::_parallel_worker_threads = 0; |
92 int Abstract_VM_Version::_parallel_worker_threads = 0; |
78 bool Abstract_VM_Version::_parallel_worker_threads_initialized = false; |
93 bool Abstract_VM_Version::_parallel_worker_threads_initialized = false; |
79 |
94 |
|
95 #ifdef ASSERT |
|
96 static void assert_digits(const char * s, const char * message) { |
|
97 for (int i = 0; s[i] != '\0'; i++) { |
|
98 assert(isdigit(s[i]), message); |
|
99 } |
|
100 } |
|
101 #endif |
|
102 |
|
103 static void set_version_field(int * version_field, const char * version_str, |
|
104 const char * const assert_msg) { |
|
105 if (version_str != NULL && *version_str != '\0') { |
|
106 DEBUG_ONLY(assert_digits(version_str, assert_msg)); |
|
107 *version_field = atoi(version_str); |
|
108 } |
|
109 } |
|
110 |
80 void Abstract_VM_Version::initialize() { |
111 void Abstract_VM_Version::initialize() { |
81 if (_initialized) { |
112 if (_initialized) { |
82 return; |
113 return; |
83 } |
114 } |
84 char* vm_version = os::strdup(HOTSPOT_RELEASE_VERSION); |
115 |
85 |
116 set_version_field(&_vm_major_version, JDK_MAJOR_VERSION, "bad major version"); |
86 // Expecting the next vm_version format: |
117 set_version_field(&_vm_minor_version, JDK_MINOR_VERSION, "bad minor version"); |
87 // <major_ver>.<minor_ver>-b<nn>[-<identifier>] |
118 set_version_field(&_vm_micro_version, JDK_MICRO_VERSION, "bad micro version"); |
88 char* vm_major_ver = vm_version; |
119 int offset = (JDK_BUILD_NUMBER != NULL && JDK_BUILD_NUMBER[0] == 'b') ? 1 : 0; |
89 assert(isdigit(vm_major_ver[0]),"wrong vm major version number"); |
120 set_version_field(&_vm_build_number, JDK_BUILD_NUMBER + offset, |
90 char* vm_minor_ver = strchr(vm_major_ver, '.'); |
121 "bad build number"); |
91 assert(vm_minor_ver != NULL && isdigit(vm_minor_ver[1]),"wrong vm minor version number"); |
122 |
92 vm_minor_ver[0] = '\0'; // terminate vm_major_ver |
|
93 vm_minor_ver += 1; |
|
94 char* vm_build_num = strchr(vm_minor_ver, '-'); |
|
95 assert(vm_build_num != NULL && vm_build_num[1] == 'b' && isdigit(vm_build_num[2]),"wrong vm build number"); |
|
96 vm_build_num[0] = '\0'; // terminate vm_minor_ver |
|
97 vm_build_num += 2; |
|
98 |
|
99 _vm_major_version = atoi(vm_major_ver); |
|
100 _vm_minor_version = atoi(vm_minor_ver); |
|
101 _vm_build_number = atoi(vm_build_num); |
|
102 |
|
103 os::free(vm_version); |
|
104 _initialized = true; |
123 _initialized = true; |
105 } |
124 } |
106 |
125 |
107 #if defined(_LP64) |
126 #if defined(_LP64) |
108 #define VMLP "64-Bit " |
127 #define VMLP "64-Bit " |