50
51 // Helper macro to test and set VM flag and corresponding cpu feature
52 #define CHECK_CPU_FEATURE(vmflag, feature_id, predicate, warning_msg) \
53 if (predicate) { \
54 if (FLAG_IS_DEFAULT(vmflag)) { \
55 FLAG_SET_DEFAULT(vmflag, true); \
56 } else if (!vmflag) { \
57 clear_feature(CPU_##feature_id); \
58 } \
59 } else if (vmflag) { \
60 if (!FLAG_IS_DEFAULT(vmflag)) { \
61 warning(warning_msg); \
62 } \
63 FLAG_SET_DEFAULT(vmflag, false); \
64 }
65
66 // Abstract_VM_Version provides information about the VM.
67
68 class Abstract_VM_Version: AllStatic {
69 friend class VMStructs;
70 friend class JVMCIVMStructs;
71
72 protected:
73 static const char* _s_vm_release;
74 static const char* _s_internal_vm_info_string;
75
76 // CPU feature flags, can be affected by VM settings.
77 static uint64_t _features;
78
79 static const char* _features_string;
80
81 static const char* _cpu_info_string;
82
83 // Original CPU feature flags, not affected by VM settings.
84 static uint64_t _cpu_features;
85
86 // These are set by machine-dependent initializations
87 #ifndef SUPPORTS_NATIVE_CX8
88 static bool _supports_cx8;
89 #endif
90 static bool _supports_atomic_getset4;
|
50
51 // Helper macro to test and set VM flag and corresponding cpu feature
52 #define CHECK_CPU_FEATURE(vmflag, feature_id, predicate, warning_msg) \
53 if (predicate) { \
54 if (FLAG_IS_DEFAULT(vmflag)) { \
55 FLAG_SET_DEFAULT(vmflag, true); \
56 } else if (!vmflag) { \
57 clear_feature(CPU_##feature_id); \
58 } \
59 } else if (vmflag) { \
60 if (!FLAG_IS_DEFAULT(vmflag)) { \
61 warning(warning_msg); \
62 } \
63 FLAG_SET_DEFAULT(vmflag, false); \
64 }
65
66 // Abstract_VM_Version provides information about the VM.
67
68 class Abstract_VM_Version: AllStatic {
69 friend class VMStructs;
70
71 protected:
72 static const char* _s_vm_release;
73 static const char* _s_internal_vm_info_string;
74
75 // CPU feature flags, can be affected by VM settings.
76 static uint64_t _features;
77
78 static const char* _features_string;
79
80 static const char* _cpu_info_string;
81
82 // Original CPU feature flags, not affected by VM settings.
83 static uint64_t _cpu_features;
84
85 // These are set by machine-dependent initializations
86 #ifndef SUPPORTS_NATIVE_CX8
87 static bool _supports_cx8;
88 #endif
89 static bool _supports_atomic_getset4;
|