38 bool Abstract_VM_Version::_supports_atomic_getadd8 = false; |
38 bool Abstract_VM_Version::_supports_atomic_getadd8 = false; |
39 unsigned int Abstract_VM_Version::_logical_processors_per_package = 1U; |
39 unsigned int Abstract_VM_Version::_logical_processors_per_package = 1U; |
40 unsigned int Abstract_VM_Version::_L1_data_cache_line_size = 0; |
40 unsigned int Abstract_VM_Version::_L1_data_cache_line_size = 0; |
41 int Abstract_VM_Version::_reserve_for_allocation_prefetch = 0; |
41 int Abstract_VM_Version::_reserve_for_allocation_prefetch = 0; |
42 |
42 |
43 #ifndef HOTSPOT_RELEASE_VERSION |
43 #ifndef HOTSPOT_VERSION_STRING |
44 #error HOTSPOT_RELEASE_VERSION must be defined |
44 #error HOTSPOT_VERSION_STRING must be defined |
45 #endif |
45 #endif |
46 |
46 |
47 #ifndef JDK_MAJOR_VERSION |
47 #ifndef VERSION_MAJOR |
48 #error JDK_MAJOR_VERSION must be defined |
48 #error VERSION_MAJOR must be defined |
49 #endif |
49 #endif |
50 #ifndef JDK_MINOR_VERSION |
50 #ifndef VERSION_MINOR |
51 #error JDK_MINOR_VERSION must be defined |
51 #error VERSION_MINOR must be defined |
52 #endif |
52 #endif |
53 #ifndef JDK_MICRO_VERSION |
53 #ifndef VERSION_SECURITY |
54 #error JDK_MICRO_VERSION must be defined |
54 #error VERSION_SECURITY must be defined |
55 #endif |
55 #endif |
56 #ifndef JDK_BUILD_NUMBER |
56 #ifndef VERSION_PATCH |
57 #error JDK_BUILD_NUMBER must be defined |
57 #error VERSION_PATCH must be defined |
58 #endif |
58 #endif |
59 |
59 #ifndef VERSION_BUILD |
60 #ifndef JRE_RELEASE_VERSION |
60 #error VERSION_BUILD must be defined |
61 #error JRE_RELEASE_VERSION must be defined |
61 #endif |
|
62 |
|
63 #ifndef VERSION_STRING |
|
64 #error VERSION_STRING must be defined |
62 #endif |
65 #endif |
63 |
66 |
64 // NOTE: Builds within Visual Studio do not define the build target in |
67 // NOTE: Builds within Visual Studio do not define the build target in |
65 // HOTSPOT_RELEASE_VERSION, so it must be done here |
68 // HOTSPOT_VERSION_STRING, so it must be done here |
66 #if defined(VISUAL_STUDIO_BUILD) && !defined(PRODUCT) |
69 #if defined(VISUAL_STUDIO_BUILD) && !defined(PRODUCT) |
67 #ifndef HOTSPOT_BUILD_TARGET |
70 #ifndef HOTSPOT_BUILD_TARGET |
68 #error HOTSPOT_BUILD_TARGET must be defined |
71 #error HOTSPOT_BUILD_TARGET must be defined |
69 #endif |
72 #endif |
70 #define VM_RELEASE HOTSPOT_RELEASE_VERSION "-" HOTSPOT_BUILD_TARGET |
73 #define VM_RELEASE HOTSPOT_VERSION_STRING "-" HOTSPOT_BUILD_TARGET |
71 #else |
74 #else |
72 #define VM_RELEASE HOTSPOT_RELEASE_VERSION |
75 #define VM_RELEASE HOTSPOT_VERSION_STRING |
73 #endif |
76 #endif |
74 |
77 |
75 // HOTSPOT_RELEASE_VERSION follows the JDK release version naming convention |
78 // HOTSPOT_VERSION_STRING equals the JDK VERSION_STRING (unless overridden |
76 // <major_ver>.<minor_ver>.<micro_ver>[-<identifier>][-<debug_target>][-b<nn>] |
79 // in a standalone build). |
77 int Abstract_VM_Version::_vm_major_version = 0; |
80 int Abstract_VM_Version::_vm_major_version = VERSION_MAJOR; |
78 int Abstract_VM_Version::_vm_minor_version = 0; |
81 int Abstract_VM_Version::_vm_minor_version = VERSION_MINOR; |
79 int Abstract_VM_Version::_vm_micro_version = 0; |
82 int Abstract_VM_Version::_vm_security_version = VERSION_SECURITY; |
80 int Abstract_VM_Version::_vm_build_number = 0; |
83 int Abstract_VM_Version::_vm_patch_version = VERSION_PATCH; |
81 bool Abstract_VM_Version::_initialized = false; |
84 int Abstract_VM_Version::_vm_build_number = VERSION_BUILD; |
82 unsigned int Abstract_VM_Version::_parallel_worker_threads = 0; |
85 unsigned int Abstract_VM_Version::_parallel_worker_threads = 0; |
83 bool Abstract_VM_Version::_parallel_worker_threads_initialized = false; |
86 bool Abstract_VM_Version::_parallel_worker_threads_initialized = false; |
84 |
|
85 #ifdef ASSERT |
|
86 static void assert_digits(const char * s, const char * message) { |
|
87 for (int i = 0; s[i] != '\0'; i++) { |
|
88 assert(isdigit(s[i]), "%s", message); |
|
89 } |
|
90 } |
|
91 #endif |
|
92 |
|
93 static void set_version_field(int * version_field, const char * version_str, |
|
94 const char * const assert_msg) { |
|
95 if (version_str != NULL && *version_str != '\0') { |
|
96 DEBUG_ONLY(assert_digits(version_str, assert_msg)); |
|
97 *version_field = atoi(version_str); |
|
98 } |
|
99 } |
|
100 |
|
101 void Abstract_VM_Version::initialize() { |
|
102 if (_initialized) { |
|
103 return; |
|
104 } |
|
105 |
|
106 set_version_field(&_vm_major_version, JDK_MAJOR_VERSION, "bad major version"); |
|
107 set_version_field(&_vm_minor_version, JDK_MINOR_VERSION, "bad minor version"); |
|
108 set_version_field(&_vm_micro_version, JDK_MICRO_VERSION, "bad micro version"); |
|
109 int offset = (JDK_BUILD_NUMBER != NULL && JDK_BUILD_NUMBER[0] == 'b') ? 1 : 0; |
|
110 set_version_field(&_vm_build_number, &JDK_BUILD_NUMBER[offset], |
|
111 "bad build number"); |
|
112 |
|
113 _initialized = true; |
|
114 } |
|
115 |
87 |
116 #if defined(_LP64) |
88 #if defined(_LP64) |
117 #define VMLP "64-Bit " |
89 #define VMLP "64-Bit " |
118 #else |
90 #else |
119 #define VMLP "" |
91 #define VMLP "" |
260 #else |
233 #else |
261 #define FLOAT_ARCH_STR XSTR(FLOAT_ARCH) |
234 #define FLOAT_ARCH_STR XSTR(FLOAT_ARCH) |
262 #endif |
235 #endif |
263 |
236 |
264 return VMNAME " (" VM_RELEASE ") for " OS "-" CPU FLOAT_ARCH_STR |
237 return VMNAME " (" VM_RELEASE ") for " OS "-" CPU FLOAT_ARCH_STR |
265 " JRE (" JRE_RELEASE_VERSION "), built on " __DATE__ " " __TIME__ |
238 " JRE (" VERSION_STRING "), built on " __DATE__ " " __TIME__ |
266 " by " XSTR(HOTSPOT_BUILD_USER) " with " HOTSPOT_BUILD_COMPILER; |
239 " by " XSTR(HOTSPOT_BUILD_USER) " with " HOTSPOT_BUILD_COMPILER; |
267 } |
240 } |
268 |
241 |
269 const char *Abstract_VM_Version::vm_build_user() { |
242 const char *Abstract_VM_Version::vm_build_user() { |
270 return HOTSPOT_BUILD_USER; |
243 return HOTSPOT_BUILD_USER; |
271 } |
244 } |
272 |
245 |
273 unsigned int Abstract_VM_Version::jvm_version() { |
246 unsigned int Abstract_VM_Version::jvm_version() { |
274 return ((Abstract_VM_Version::vm_major_version() & 0xFF) << 24) | |
247 return ((Abstract_VM_Version::vm_major_version() & 0xFF) << 24) | |
275 ((Abstract_VM_Version::vm_minor_version() & 0xFF) << 16) | |
248 ((Abstract_VM_Version::vm_minor_version() & 0xFF) << 16) | |
276 ((Abstract_VM_Version::vm_micro_version() & 0xFF) << 8) | |
249 ((Abstract_VM_Version::vm_security_version() & 0xFF) << 8) | |
277 (Abstract_VM_Version::vm_build_number() & 0xFF); |
250 (Abstract_VM_Version::vm_build_number() & 0xFF); |
278 } |
251 } |
279 |
252 |
280 |
253 |
281 void VM_Version_init() { |
254 void VM_Version_init() { |