27
28 #include "memory/allocation.hpp"
29 #include "utilities/ostream.hpp"
30
31 // VM_Version provides information about the VM.
32
33 class Abstract_VM_Version: AllStatic {
34 protected:
35 friend class VMStructs;
36 static const char* _s_vm_release;
37 static const char* _s_internal_vm_info_string;
38 // These are set by machine-dependent initializations
39 static bool _supports_cx8;
40 static bool _supports_atomic_getset4;
41 static bool _supports_atomic_getset8;
42 static bool _supports_atomic_getadd4;
43 static bool _supports_atomic_getadd8;
44 static unsigned int _logical_processors_per_package;
45 static int _vm_major_version;
46 static int _vm_minor_version;
47 static int _vm_build_number;
48 static bool _initialized;
49 static int _parallel_worker_threads;
50 static bool _parallel_worker_threads_initialized;
51 static int _reserve_for_allocation_prefetch;
52
53 static unsigned int nof_parallel_worker_threads(unsigned int num,
54 unsigned int dem,
55 unsigned int switch_pt);
56 public:
57 static void initialize();
58
59 // Name
60 static const char* vm_name();
61 // Vendor
62 static const char* vm_vendor();
63 // VM version information string printed by launcher (java -version)
64 static const char* vm_info_string();
65 static const char* vm_release();
66 static const char* vm_platform_string();
67 static const char* vm_build_user();
68
69 static int vm_major_version() { assert(_initialized, "not initialized"); return _vm_major_version; }
70 static int vm_minor_version() { assert(_initialized, "not initialized"); return _vm_minor_version; }
71 static int vm_build_number() { assert(_initialized, "not initialized"); return _vm_build_number; }
72
73 // Gets the jvm_version_info.jvm_version defined in jvm.h
74 static unsigned int jvm_version();
75
76 // Internal version providing additional build information
77 static const char* internal_vm_info_string();
78 static const char* jre_release_version();
79
80 // does HW support an 8-byte compare-exchange operation?
81 static bool supports_cx8() {
82 #ifdef SUPPORTS_NATIVE_CX8
83 return true;
84 #else
85 return _supports_cx8;
86 #endif
87 }
88 // does HW support atomic get-and-set or atomic get-and-add? Used
89 // to guide intrinsification decisions for Unsafe atomic ops
90 static bool supports_atomic_getset4() {return _supports_atomic_getset4;}
|
27
28 #include "memory/allocation.hpp"
29 #include "utilities/ostream.hpp"
30
31 // VM_Version provides information about the VM.
32
33 class Abstract_VM_Version: AllStatic {
34 protected:
35 friend class VMStructs;
36 static const char* _s_vm_release;
37 static const char* _s_internal_vm_info_string;
38 // These are set by machine-dependent initializations
39 static bool _supports_cx8;
40 static bool _supports_atomic_getset4;
41 static bool _supports_atomic_getset8;
42 static bool _supports_atomic_getadd4;
43 static bool _supports_atomic_getadd8;
44 static unsigned int _logical_processors_per_package;
45 static int _vm_major_version;
46 static int _vm_minor_version;
47 static int _vm_micro_version;
48 static int _vm_build_number;
49 static bool _initialized;
50 static int _parallel_worker_threads;
51 static bool _parallel_worker_threads_initialized;
52 static int _reserve_for_allocation_prefetch;
53
54 static unsigned int nof_parallel_worker_threads(unsigned int num,
55 unsigned int dem,
56 unsigned int switch_pt);
57 public:
58 static void initialize();
59
60 // Name
61 static const char* vm_name();
62 // Vendor
63 static const char* vm_vendor();
64 // VM version information string printed by launcher (java -version)
65 static const char* vm_info_string();
66 static const char* vm_release();
67 static const char* vm_platform_string();
68 static const char* vm_build_user();
69
70 static int vm_major_version() { assert(_initialized, "not initialized"); return _vm_major_version; }
71 static int vm_minor_version() { assert(_initialized, "not initialized"); return _vm_minor_version; }
72 static int vm_micro_version() { assert(_initialized, "not initialized"); return _vm_micro_version; }
73 static int vm_build_number() { assert(_initialized, "not initialized"); return _vm_build_number; }
74
75 // Gets the jvm_version_info.jvm_version defined in jvm.h
76 static unsigned int jvm_version();
77
78 // Internal version providing additional build information
79 static const char* internal_vm_info_string();
80 static const char* jre_release_version();
81
82 // does HW support an 8-byte compare-exchange operation?
83 static bool supports_cx8() {
84 #ifdef SUPPORTS_NATIVE_CX8
85 return true;
86 #else
87 return _supports_cx8;
88 #endif
89 }
90 // does HW support atomic get-and-set or atomic get-and-add? Used
91 // to guide intrinsification decisions for Unsafe atomic ops
92 static bool supports_atomic_getset4() {return _supports_atomic_getset4;}
|