68 #error HOTSPOT_BUILD_TARGET must be defined
69 #endif
70 #define VM_RELEASE HOTSPOT_RELEASE_VERSION "-" HOTSPOT_BUILD_TARGET
71 #else
72 #define VM_RELEASE HOTSPOT_RELEASE_VERSION
73 #endif
74
75 // HOTSPOT_RELEASE_VERSION follows the JDK release version naming convention
76 // <major_ver>.<minor_ver>.<micro_ver>[-<identifier>][-<debug_target>][-b<nn>]
77 int Abstract_VM_Version::_vm_major_version = 0;
78 int Abstract_VM_Version::_vm_minor_version = 0;
79 int Abstract_VM_Version::_vm_micro_version = 0;
80 int Abstract_VM_Version::_vm_build_number = 0;
81 bool Abstract_VM_Version::_initialized = false;
82 unsigned int Abstract_VM_Version::_parallel_worker_threads = 0;
83 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]), 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");
136 #endif // TIERED
137 #endif
138
139 #ifndef HOTSPOT_VM_DISTRO
140 #error HOTSPOT_VM_DISTRO must be defined
141 #endif
142 #define VMNAME HOTSPOT_VM_DISTRO " " VMLP EMBEDDED_ONLY("Embedded ") VMTYPE " VM"
143
144 const char* Abstract_VM_Version::vm_name() {
145 return VMNAME;
146 }
147
148
149 const char* Abstract_VM_Version::vm_vendor() {
150 #ifdef VENDOR
151 return XSTR(VENDOR);
152 #else
153 return "Oracle Corporation";
154 #endif
155 }
156
157
158 const char* Abstract_VM_Version::vm_info_string() {
159 if (CodeCacheExtensions::use_pregenerated_interpreter()) {
160 return "interpreted mode, pregenerated";
161 }
162 switch (Arguments::mode()) {
163 case Arguments::_int:
164 return UseSharedSpaces ? "interpreted mode, sharing" : "interpreted mode";
165 case Arguments::_mixed:
166 return UseSharedSpaces ? "mixed mode, sharing" : "mixed mode";
167 case Arguments::_comp:
168 return UseSharedSpaces ? "compiled mode, sharing" : "compiled mode";
169 };
170 ShouldNotReachHere();
171 return "";
172 }
173
174 // NOTE: do *not* use stringStream. this function is called by
175 // fatal error handler. if the crash is in native thread,
176 // stringStream cannot get resource allocated and will SEGV.
|
68 #error HOTSPOT_BUILD_TARGET must be defined
69 #endif
70 #define VM_RELEASE HOTSPOT_RELEASE_VERSION "-" HOTSPOT_BUILD_TARGET
71 #else
72 #define VM_RELEASE HOTSPOT_RELEASE_VERSION
73 #endif
74
75 // HOTSPOT_RELEASE_VERSION follows the JDK release version naming convention
76 // <major_ver>.<minor_ver>.<micro_ver>[-<identifier>][-<debug_target>][-b<nn>]
77 int Abstract_VM_Version::_vm_major_version = 0;
78 int Abstract_VM_Version::_vm_minor_version = 0;
79 int Abstract_VM_Version::_vm_micro_version = 0;
80 int Abstract_VM_Version::_vm_build_number = 0;
81 bool Abstract_VM_Version::_initialized = false;
82 unsigned int Abstract_VM_Version::_parallel_worker_threads = 0;
83 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");
136 #endif // TIERED
137 #endif
138
139 #ifndef HOTSPOT_VM_DISTRO
140 #error HOTSPOT_VM_DISTRO must be defined
141 #endif
142 #define VMNAME HOTSPOT_VM_DISTRO " " VMLP EMBEDDED_ONLY("Embedded ") VMTYPE " VM"
143
144 const char* Abstract_VM_Version::vm_name() {
145 return VMNAME;
146 }
147
148
149 const char* Abstract_VM_Version::vm_vendor() {
150 #ifdef VENDOR
151 return XSTR(VENDOR);
152 #else
153 return "Oracle Corporation";
154 #endif
155 }
156
157 const char* Abstract_VM_Version::vm_info_string() {
158 if (CodeCacheExtensions::use_pregenerated_interpreter()) {
159 return "interpreted mode, pregenerated";
160 }
161 switch (Arguments::mode()) {
162 case Arguments::_int:
163 return UseSharedSpaces ? "interpreted mode, sharing" : "interpreted mode";
164 case Arguments::_mixed:
165 return UseSharedSpaces ? "mixed mode, sharing" : "mixed mode";
166 case Arguments::_comp:
167 return UseSharedSpaces ? "compiled mode, sharing" : "compiled mode";
168 };
169 ShouldNotReachHere();
170 return "";
171 }
172
173 // NOTE: do *not* use stringStream. this function is called by
174 // fatal error handler. if the crash is in native thread,
175 // stringStream cannot get resource allocated and will SEGV.
|