src/hotspot/share/jfr/recorder/checkpoint/types/traceid/jfrTraceId.inline.hpp
branchJEP-349-branch
changeset 57983 a57907813a83
parent 57902 f6502e486572
child 57988 6fa0074508ef
equal deleted inserted replaced
57971:aa7b1ea52413 57983:a57907813a83
    59 }
    59 }
    60 
    60 
    61 inline traceid JfrTraceId::use(const Klass* klass) {
    61 inline traceid JfrTraceId::use(const Klass* klass) {
    62   assert(klass != NULL, "invariant");
    62   assert(klass != NULL, "invariant");
    63   if (SHOULD_TAG(klass)) {
    63   if (SHOULD_TAG(klass)) {
    64     JfrTraceIdEpoch::set_klass_tagged_in_epoch();
    64     JfrTraceIdEpoch::set_changed_tag_state();
    65     return set_used_and_get(klass);
    65     return set_used_and_get(klass);
    66   }
    66   }
    67   assert(USED_THIS_EPOCH(klass), "invariant");
    67   assert(USED_THIS_EPOCH(klass), "invariant");
    68   return TRACE_ID(klass);
    68   return TRACE_ID(klass);
    69 }
    69 }
    74 }
    74 }
    75 
    75 
    76 inline traceid JfrTraceId::use(const Klass* klass, const Method* method) {
    76 inline traceid JfrTraceId::use(const Klass* klass, const Method* method) {
    77   assert(klass != NULL, "invariant");
    77   assert(klass != NULL, "invariant");
    78   assert(method != NULL, "invariant");
    78   assert(method != NULL, "invariant");
    79   SET_METHOD_FLAG_USED_THIS_EPOCH(method);
    79   bool changed_tag_state = false;
    80   if (SHOULD_TAG_KLASS_METHOD(klass)) {
    80   if (SHOULD_TAG_KLASS_METHOD(klass)) {
    81     JfrTraceIdEpoch::set_klass_tagged_in_epoch();
       
    82     SET_METHOD_AND_CLASS_USED_THIS_EPOCH(klass);
    81     SET_METHOD_AND_CLASS_USED_THIS_EPOCH(klass);
       
    82     changed_tag_state = true;
    83   }
    83   }
    84   assert(METHOD_AND_CLASS_USED_THIS_EPOCH(klass), "invariant");
    84   assert(METHOD_AND_CLASS_USED_THIS_EPOCH(klass), "invariant");
       
    85   if (METHOD_FLAG_NOT_USED_THIS_EPOCH(method)) {
       
    86     SET_METHOD_FLAG_USED_THIS_EPOCH(method);
       
    87     changed_tag_state = true;
       
    88   }
       
    89   assert(METHOD_FLAG_USED_THIS_EPOCH(method), "invariant");
       
    90   if (changed_tag_state) {
       
    91     JfrTraceIdEpoch::set_changed_tag_state();
       
    92   }
    85   return (METHOD_ID(klass, method));
    93   return (METHOD_ID(klass, method));
    86 }
    94 }
    87 
    95 
    88 inline traceid JfrTraceId::use(const ModuleEntry* module) {
    96 inline traceid JfrTraceId::use(const ModuleEntry* module) {
    89   assert(module != NULL, "invariant");
    97   assert(module != NULL, "invariant");
    96 }
   104 }
    97 
   105 
    98 inline traceid JfrTraceId::use(const ClassLoaderData* cld) {
   106 inline traceid JfrTraceId::use(const ClassLoaderData* cld) {
    99   assert(cld != NULL, "invariant");
   107   assert(cld != NULL, "invariant");
   100   return cld->is_unsafe_anonymous() ? 0 : set_used_and_get(cld);
   108   return cld->is_unsafe_anonymous() ? 0 : set_used_and_get(cld);
       
   109 }
       
   110 
       
   111 inline void JfrTraceId::set_leakp(const Klass* klass, const Method* method) {
       
   112   assert(METHOD_AND_CLASS_USED_THIS_EPOCH(klass), "invariant");
       
   113   assert(METHOD_FLAG_USED_THIS_EPOCH(method), "invariant");
       
   114   SET_LEAKP(klass);
       
   115   SET_METHOD_LEAKP(method);
   101 }
   116 }
   102 
   117 
   103 inline bool JfrTraceId::in_visible_set(const Klass* klass) {
   118 inline bool JfrTraceId::in_visible_set(const Klass* klass) {
   104   assert(klass != NULL, "invariant");
   119   assert(klass != NULL, "invariant");
   105   assert(((JavaThread*)Thread::current())->thread_state() == _thread_in_vm, "invariant");
   120   assert(((JavaThread*)Thread::current())->thread_state() == _thread_in_vm, "invariant");