41 #define REMOVE_ID(k) JfrTraceId::remove(k); |
41 #define REMOVE_ID(k) JfrTraceId::remove(k); |
42 #define RESTORE_ID(k) JfrTraceId::restore(k); |
42 #define RESTORE_ID(k) JfrTraceId::restore(k); |
43 |
43 |
44 class JfrTraceFlag { |
44 class JfrTraceFlag { |
45 private: |
45 private: |
46 mutable jbyte _flags; |
46 mutable jshort _flags; |
47 public: |
47 public: |
48 JfrTraceFlag() : _flags(0) {} |
48 JfrTraceFlag() : _flags(0) {} |
49 explicit JfrTraceFlag(jbyte flags) : _flags(flags) {} |
49 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; |
50 return (_flags & flag) != 0; |
59 } |
51 } |
60 jbyte* const flags_addr() const { |
52 |
61 return &_flags; |
53 jshort flags() const { |
|
54 return _flags; |
|
55 } |
|
56 |
|
57 void set_flags(jshort flags) const { |
|
58 _flags = flags; |
|
59 } |
|
60 |
|
61 jbyte* flags_addr() const { |
|
62 return (jbyte*)&_flags; |
|
63 } |
|
64 jbyte* meta_addr() const { |
|
65 return ((jbyte*)&_flags) + 1; |
62 } |
66 } |
63 }; |
67 }; |
64 |
68 |
65 #define DEFINE_TRACE_FLAG mutable JfrTraceFlag _trace_flags |
69 #define DEFINE_TRACE_FLAG mutable JfrTraceFlag _trace_flags |
66 |
70 |
67 #define DEFINE_TRACE_FLAG_ACCESSOR \ |
71 #define DEFINE_TRACE_FLAG_ACCESSOR \ |
68 void set_trace_flag(jbyte flag) const { \ |
72 bool is_trace_flag_set(jshort flag) const { \ |
69 _trace_flags.set_flag(flag); \ |
73 return _trace_flags.is_set(flag); \ |
70 } \ |
74 } \ |
71 jbyte trace_flags() const { \ |
75 jshort trace_flags() const { \ |
72 return _trace_flags.flags(); \ |
76 return _trace_flags.flags(); \ |
73 } \ |
77 } \ |
74 bool is_trace_flag_set(jbyte flag) const { \ |
78 void set_trace_flags(jshort flags) const { \ |
75 return _trace_flags.is_set(flag); \ |
79 _trace_flags.set_flags(flags); \ |
76 } \ |
80 } \ |
77 jbyte* const trace_flags_addr() const { \ |
81 jbyte* trace_flags_addr() const { \ |
78 return _trace_flags.flags_addr(); \ |
82 return _trace_flags.flags_addr(); \ |
|
83 } \ |
|
84 jbyte* trace_meta_addr() const { \ |
|
85 return _trace_flags.meta_addr(); \ |
79 } |
86 } |
80 |
87 |
81 #endif // SHARE_JFR_SUPPORT_JFRTRACEIDEXTENSION_HPP |
88 #endif // SHARE_JFR_SUPPORT_JFRTRACEIDEXTENSION_HPP |