64 #error VERSION_BUILD must be defined
65 #endif
66
67 #ifndef VERSION_STRING
68 #error VERSION_STRING must be defined
69 #endif
70
71 #ifndef DEBUG_LEVEL
72 #error DEBUG_LEVEL must be defined
73 #endif
74
75 #define VM_RELEASE HOTSPOT_VERSION_STRING
76
77 // HOTSPOT_VERSION_STRING equals the JDK VERSION_STRING (unless overridden
78 // in a standalone build).
79 int Abstract_VM_Version::_vm_major_version = VERSION_FEATURE;
80 int Abstract_VM_Version::_vm_minor_version = VERSION_INTERIM;
81 int Abstract_VM_Version::_vm_security_version = VERSION_UPDATE;
82 int Abstract_VM_Version::_vm_patch_version = VERSION_PATCH;
83 int Abstract_VM_Version::_vm_build_number = VERSION_BUILD;
84 unsigned int Abstract_VM_Version::_parallel_worker_threads = 0;
85 bool Abstract_VM_Version::_parallel_worker_threads_initialized = false;
86
87 #if defined(_LP64)
88 #define VMLP "64-Bit "
89 #else
90 #define VMLP ""
91 #endif
92
93 #ifndef VMTYPE
94 #ifdef TIERED
95 #define VMTYPE "Server"
96 #else // TIERED
97 #ifdef ZERO
98 #define VMTYPE "Zero"
99 #else // ZERO
100 #define VMTYPE COMPILER1_PRESENT("Client") \
101 COMPILER2_PRESENT("Server")
102 #endif // ZERO
103 #endif // TIERED
104 #endif
105
294 return strcmp(DEBUG_LEVEL, "release") == 0 ? "" : DEBUG_LEVEL " ";
295 }
296
297 unsigned int Abstract_VM_Version::jvm_version() {
298 return ((Abstract_VM_Version::vm_major_version() & 0xFF) << 24) |
299 ((Abstract_VM_Version::vm_minor_version() & 0xFF) << 16) |
300 ((Abstract_VM_Version::vm_security_version() & 0xFF) << 8) |
301 (Abstract_VM_Version::vm_build_number() & 0xFF);
302 }
303
304
305 void VM_Version_init() {
306 VM_Version::initialize();
307
308 if (log_is_enabled(Info, os, cpu)) {
309 char buf[1024];
310 ResourceMark rm;
311 LogStream ls(Log(os, cpu)::info());
312 os::print_cpu_info(&ls, buf, sizeof(buf));
313 }
314 }
315
316 unsigned int Abstract_VM_Version::nof_parallel_worker_threads(
317 unsigned int num,
318 unsigned int den,
319 unsigned int switch_pt) {
320 if (FLAG_IS_DEFAULT(ParallelGCThreads)) {
321 assert(ParallelGCThreads == 0, "Default ParallelGCThreads is not 0");
322 unsigned int threads;
323 // For very large machines, there are diminishing returns
324 // for large numbers of worker threads. Instead of
325 // hogging the whole system, use a fraction of the workers for every
326 // processor after the first 8. For example, on a 72 cpu machine
327 // and a chosen fraction of 5/8
328 // use 8 + (72 - 8) * (5/8) == 48 worker threads.
329 unsigned int ncpus = (unsigned int) os::initial_active_processor_count();
330 threads = (ncpus <= switch_pt) ?
331 ncpus :
332 (switch_pt + ((ncpus - switch_pt) * num) / den);
333 #ifndef _LP64
334 // On 32-bit binaries the virtual address space available to the JVM
335 // is usually limited to 2-3 GB (depends on the platform).
336 // Do not use up address space with too many threads (stacks and per-thread
337 // data). Note that x86 apps running on Win64 have 2 stacks per thread.
338 // GC may more generally scale down threads by max heap size (etc), but the
339 // consequences of over-provisioning threads are higher on 32-bit JVMS,
340 // so add hard limit here:
341 threads = MIN2(threads, (2*switch_pt));
342 #endif
343 return threads;
344 } else {
345 return ParallelGCThreads;
346 }
347 }
348
349 unsigned int Abstract_VM_Version::calc_parallel_worker_threads() {
350 return nof_parallel_worker_threads(5, 8, 8);
351 }
352
353
354 // Does not set the _initialized flag since it is
355 // a global flag.
356 unsigned int Abstract_VM_Version::parallel_worker_threads() {
357 if (!_parallel_worker_threads_initialized) {
358 if (FLAG_IS_DEFAULT(ParallelGCThreads)) {
359 _parallel_worker_threads = VM_Version::calc_parallel_worker_threads();
360 } else {
361 _parallel_worker_threads = ParallelGCThreads;
362 }
363 _parallel_worker_threads_initialized = true;
364 }
365 return _parallel_worker_threads;
366 }
|
64 #error VERSION_BUILD must be defined
65 #endif
66
67 #ifndef VERSION_STRING
68 #error VERSION_STRING must be defined
69 #endif
70
71 #ifndef DEBUG_LEVEL
72 #error DEBUG_LEVEL must be defined
73 #endif
74
75 #define VM_RELEASE HOTSPOT_VERSION_STRING
76
77 // HOTSPOT_VERSION_STRING equals the JDK VERSION_STRING (unless overridden
78 // in a standalone build).
79 int Abstract_VM_Version::_vm_major_version = VERSION_FEATURE;
80 int Abstract_VM_Version::_vm_minor_version = VERSION_INTERIM;
81 int Abstract_VM_Version::_vm_security_version = VERSION_UPDATE;
82 int Abstract_VM_Version::_vm_patch_version = VERSION_PATCH;
83 int Abstract_VM_Version::_vm_build_number = VERSION_BUILD;
84
85 #if defined(_LP64)
86 #define VMLP "64-Bit "
87 #else
88 #define VMLP ""
89 #endif
90
91 #ifndef VMTYPE
92 #ifdef TIERED
93 #define VMTYPE "Server"
94 #else // TIERED
95 #ifdef ZERO
96 #define VMTYPE "Zero"
97 #else // ZERO
98 #define VMTYPE COMPILER1_PRESENT("Client") \
99 COMPILER2_PRESENT("Server")
100 #endif // ZERO
101 #endif // TIERED
102 #endif
103
292 return strcmp(DEBUG_LEVEL, "release") == 0 ? "" : DEBUG_LEVEL " ";
293 }
294
295 unsigned int Abstract_VM_Version::jvm_version() {
296 return ((Abstract_VM_Version::vm_major_version() & 0xFF) << 24) |
297 ((Abstract_VM_Version::vm_minor_version() & 0xFF) << 16) |
298 ((Abstract_VM_Version::vm_security_version() & 0xFF) << 8) |
299 (Abstract_VM_Version::vm_build_number() & 0xFF);
300 }
301
302
303 void VM_Version_init() {
304 VM_Version::initialize();
305
306 if (log_is_enabled(Info, os, cpu)) {
307 char buf[1024];
308 ResourceMark rm;
309 LogStream ls(Log(os, cpu)::info());
310 os::print_cpu_info(&ls, buf, sizeof(buf));
311 }
312 }
|