src/hotspot/share/jfr/support/jfrTraceIdExtension.hpp
branchdatagramsocketimpl-branch
changeset 58678 9cf78a70fa4f
parent 53244 9807daeb47c4
child 58679 9c3209ff7550
equal deleted inserted replaced
58677:13588c901957 58678:9cf78a70fa4f
    24 
    24 
    25 #ifndef SHARE_JFR_SUPPORT_JFRTRACEIDEXTENSION_HPP
    25 #ifndef SHARE_JFR_SUPPORT_JFRTRACEIDEXTENSION_HPP
    26 #define SHARE_JFR_SUPPORT_JFRTRACEIDEXTENSION_HPP
    26 #define SHARE_JFR_SUPPORT_JFRTRACEIDEXTENSION_HPP
    27 
    27 
    28 #include "jfr/recorder/checkpoint/types/traceid/jfrTraceId.hpp"
    28 #include "jfr/recorder/checkpoint/types/traceid/jfrTraceId.hpp"
       
    29 #include "utilities/macros.hpp"
    29 
    30 
    30 #define DEFINE_TRACE_ID_FIELD mutable traceid _trace_id
    31 #define DEFINE_TRACE_ID_FIELD mutable traceid _trace_id
    31 
    32 
    32 #define DEFINE_TRACE_ID_METHODS \
    33 #define DEFINE_TRACE_ID_METHODS \
    33   traceid trace_id() const { return _trace_id; } \
    34   traceid trace_id() const { return _trace_id; } \
    41 #define REMOVE_ID(k) JfrTraceId::remove(k);
    42 #define REMOVE_ID(k) JfrTraceId::remove(k);
    42 #define RESTORE_ID(k) JfrTraceId::restore(k);
    43 #define RESTORE_ID(k) JfrTraceId::restore(k);
    43 
    44 
    44 class JfrTraceFlag {
    45 class JfrTraceFlag {
    45  private:
    46  private:
    46   mutable jbyte _flags;
    47   mutable jshort _flags;
    47  public:
    48  public:
    48   JfrTraceFlag() : _flags(0) {}
    49   JfrTraceFlag() : _flags(0) {}
    49   explicit JfrTraceFlag(jbyte flags) : _flags(flags) {}
    50   bool is_set(jshort flag) const {
    50   void set_flag(jbyte flag) const {
       
    51     _flags |= flag;
       
    52   }
       
    53   void clear_flag(jbyte flag) const {
       
    54     _flags &= (~flag);
       
    55   }
       
    56   jbyte flags() const { return _flags; }
       
    57   bool is_set(jbyte flag) const {
       
    58     return (_flags & flag) != 0;
    51     return (_flags & flag) != 0;
    59   }
    52   }
    60   jbyte* const flags_addr() const {
    53 
    61     return &_flags;
    54   jshort flags() const {
       
    55     return _flags;
       
    56   }
       
    57 
       
    58   void set_flags(jshort flags) const {
       
    59     _flags = flags;
       
    60   }
       
    61 
       
    62   jbyte* flags_addr() const {
       
    63 #ifdef VM_LITTLE_ENDIAN
       
    64     return (jbyte*)&_flags;
       
    65 #else
       
    66     return ((jbyte*)&_flags) + 1;
       
    67 #endif
       
    68   }
       
    69 
       
    70   jbyte* meta_addr() const {
       
    71 #ifdef VM_LITTLE_ENDIAN
       
    72     return (jbyte*)(&_flags) + 1;
       
    73 #else
       
    74     return (jbyte*)&_flags;
       
    75 #endif
    62   }
    76   }
    63 };
    77 };
    64 
    78 
    65 #define DEFINE_TRACE_FLAG mutable JfrTraceFlag _trace_flags
    79 #define DEFINE_TRACE_FLAG mutable JfrTraceFlag _trace_flags
    66 
    80 
    67 #define DEFINE_TRACE_FLAG_ACCESSOR                 \
    81 #define DEFINE_TRACE_FLAG_ACCESSOR                 \
    68   void set_trace_flag(jbyte flag) const {          \
    82   bool is_trace_flag_set(jshort flag) const {      \
    69     _trace_flags.set_flag(flag);                   \
    83     return _trace_flags.is_set(flag);              \
    70   }                                                \
    84   }                                                \
    71   jbyte trace_flags() const {                      \
    85   jshort trace_flags() const {                     \
    72     return _trace_flags.flags();                   \
    86     return _trace_flags.flags();                   \
    73   }                                                \
    87   }                                                \
    74   bool is_trace_flag_set(jbyte flag) const {       \
    88   void set_trace_flags(jshort flags) const {       \
    75     return _trace_flags.is_set(flag);              \
    89     _trace_flags.set_flags(flags);                 \
    76   }                                                \
    90   }                                                \
    77   jbyte* const trace_flags_addr() const {          \
    91   jbyte* trace_flags_addr() const {                \
    78     return _trace_flags.flags_addr();              \
    92     return _trace_flags.flags_addr();              \
       
    93   }                                                \
       
    94   jbyte* trace_meta_addr() const {                 \
       
    95     return _trace_flags.meta_addr();               \
    79   }
    96   }
    80 
    97 
    81 #endif // SHARE_JFR_SUPPORT_JFRTRACEIDEXTENSION_HPP
    98 #endif // SHARE_JFR_SUPPORT_JFRTRACEIDEXTENSION_HPP