src/hotspot/share/jfr/recorder/checkpoint/types/traceid/jfrTraceIdEpoch.hpp
changeset 59247 56bf71d64d51
parent 58863 c16ac7a2eba4
equal deleted inserted replaced
59246:fcad92f425c5 59247:56bf71d64d51
    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