src/hotspot/share/jfr/recorder/checkpoint/types/traceid/jfrTraceId.cpp
changeset 52334 a181612f0715
parent 51444 3e5d28e6de32
child 54847 59ea39bb2809
equal deleted inserted replaced
52333:c401c536cea1 52334:a181612f0715
    74 static traceid next_class_loader_data_id() {
    74 static traceid next_class_loader_data_id() {
    75   static volatile traceid cld_id_counter = 1;
    75   static volatile traceid cld_id_counter = 1;
    76   return atomic_inc(&cld_id_counter) << TRACE_ID_SHIFT;
    76   return atomic_inc(&cld_id_counter) << TRACE_ID_SHIFT;
    77 }
    77 }
    78 
    78 
       
    79 static bool found_jdk_internal_event_klass = false;
    79 static bool found_jdk_jfr_event_klass = false;
    80 static bool found_jdk_jfr_event_klass = false;
    80 
    81 
    81 static void check_klass(const Klass* klass) {
    82 static void check_klass(const Klass* klass) {
    82   assert(klass != NULL, "invariant");
    83   assert(klass != NULL, "invariant");
    83   if (found_jdk_jfr_event_klass) {
    84   if (found_jdk_internal_event_klass && found_jdk_jfr_event_klass) {
    84     return;
    85     return;
    85   }
    86   }
       
    87   static const Symbol* jdk_internal_event_sym = NULL;
       
    88   if (jdk_internal_event_sym == NULL) {
       
    89     // setup when loading the first TypeArrayKlass (Universe::genesis) hence single threaded invariant
       
    90     jdk_internal_event_sym = SymbolTable::new_permanent_symbol("jdk/internal/event/Event", Thread::current());
       
    91   }
       
    92   assert(jdk_internal_event_sym != NULL, "invariant");
       
    93 
    86   static const Symbol* jdk_jfr_event_sym = NULL;
    94   static const Symbol* jdk_jfr_event_sym = NULL;
    87   if (jdk_jfr_event_sym == NULL) {
    95   if (jdk_jfr_event_sym == NULL) {
    88     // setup when loading the first TypeArrayKlass (Universe::genesis) hence single threaded invariant
    96     // setup when loading the first TypeArrayKlass (Universe::genesis) hence single threaded invariant
    89     jdk_jfr_event_sym = SymbolTable::new_permanent_symbol("jdk/jfr/Event", Thread::current());
    97     jdk_jfr_event_sym = SymbolTable::new_permanent_symbol("jdk/jfr/Event", Thread::current());
    90   }
    98   }
    91   assert(jdk_jfr_event_sym != NULL, "invariant");
    99   assert(jdk_jfr_event_sym != NULL, "invariant");
    92   if (jdk_jfr_event_sym == klass->name() && klass->class_loader() == NULL) {
   100   const Symbol* const klass_name = klass->name();
    93     found_jdk_jfr_event_klass = true;
   101 
    94     JfrTraceId::tag_as_jdk_jfr_event(klass);
   102   if (!found_jdk_internal_event_klass) {
       
   103     if (jdk_internal_event_sym == klass_name && klass->class_loader() == NULL) {
       
   104       found_jdk_internal_event_klass = true;
       
   105       JfrTraceId::tag_as_jdk_jfr_event(klass);
       
   106       return;
       
   107     }
       
   108   }
       
   109 
       
   110   if (!found_jdk_jfr_event_klass) {
       
   111     if (jdk_jfr_event_sym == klass_name && klass->class_loader() == NULL) {
       
   112       found_jdk_jfr_event_klass = true;
       
   113       JfrTraceId::tag_as_jdk_jfr_event(klass);
       
   114       return;
       
   115     }
    95   }
   116   }
    96 }
   117 }
    97 
   118 
    98 void JfrTraceId::assign(const Klass* klass) {
   119 void JfrTraceId::assign(const Klass* klass) {
    99   assert(klass != NULL, "invariant");
   120   assert(klass != NULL, "invariant");