equal
deleted
inserted
replaced
25 #ifndef SHARE_JFR_RECORDER_CHECKPOINT_TYPES_TRACEID_JFRTRACEIDEPOCH_HPP |
25 #ifndef SHARE_JFR_RECORDER_CHECKPOINT_TYPES_TRACEID_JFRTRACEIDEPOCH_HPP |
26 #define SHARE_JFR_RECORDER_CHECKPOINT_TYPES_TRACEID_JFRTRACEIDEPOCH_HPP |
26 #define SHARE_JFR_RECORDER_CHECKPOINT_TYPES_TRACEID_JFRTRACEIDEPOCH_HPP |
27 |
27 |
28 #include "jfr/utilities/jfrTypes.hpp" |
28 #include "jfr/utilities/jfrTypes.hpp" |
29 #include "memory/allocation.hpp" |
29 #include "memory/allocation.hpp" |
30 #include "runtime/orderAccess.hpp" |
30 #include "runtime/atomic.hpp" |
31 |
31 |
32 #define USED_BIT 1 |
32 #define USED_BIT 1 |
33 #define METHOD_USED_BIT (USED_BIT << 2) |
33 #define METHOD_USED_BIT (USED_BIT << 2) |
34 #define EPOCH_1_SHIFT 0 |
34 #define EPOCH_1_SHIFT 0 |
35 #define EPOCH_2_SHIFT 1 |
35 #define EPOCH_2_SHIFT 1 |
89 static traceid method_and_class_in_use_prev_epoch_bits() { |
89 static traceid method_and_class_in_use_prev_epoch_bits() { |
90 return _epoch_state ? METHOD_AND_CLASS_IN_USE_EPOCH_1_BITS : METHOD_AND_CLASS_IN_USE_EPOCH_2_BITS; |
90 return _epoch_state ? METHOD_AND_CLASS_IN_USE_EPOCH_1_BITS : METHOD_AND_CLASS_IN_USE_EPOCH_2_BITS; |
91 } |
91 } |
92 |
92 |
93 static bool has_changed_tag_state() { |
93 static bool has_changed_tag_state() { |
94 if (OrderAccess::load_acquire(&_tag_state)) { |
94 if (Atomic::load_acquire(&_tag_state)) { |
95 OrderAccess::release_store(&_tag_state, false); |
95 Atomic::release_store(&_tag_state, false); |
96 return true; |
96 return true; |
97 } |
97 } |
98 return false; |
98 return false; |
99 } |
99 } |
100 |
100 |
101 static void set_changed_tag_state() { |
101 static void set_changed_tag_state() { |
102 if (!OrderAccess::load_acquire(&_tag_state)) { |
102 if (!Atomic::load_acquire(&_tag_state)) { |
103 OrderAccess::release_store(&_tag_state, true); |
103 Atomic::release_store(&_tag_state, true); |
104 } |
104 } |
105 } |
105 } |
106 }; |
106 }; |
107 |
107 |
108 #endif // SHARE_JFR_RECORDER_CHECKPOINT_TYPES_TRACEID_JFRTRACEIDEPOCH_HPP |
108 #endif // SHARE_JFR_RECORDER_CHECKPOINT_TYPES_TRACEID_JFRTRACEIDEPOCH_HPP |