< prev index next >

src/hotspot/share/memory/metaspace/printCLDMetaspaceInfoClosure.cpp

Print this page
rev 58565 : 8238358: Implementation of JEP 371: Hidden Classes
Reviewed-by: duke
Contributed-by: mandy.chung@oracle.com, lois.foltan@oracle.com, david.holmes@oracle.com, harold.seigel@oracle.com, serguei.spitsyn@oracle.com, alex.buckley@oracle.com, jamsheed.c.m@oracle.com
rev 58568 : [mq]: hidden-class-4


  87   _stats_total.add(this_cld_stat);
  88   _num_loaders ++;
  89   _stats_by_spacetype[msp->space_type()].add(this_cld_stat);
  90   _num_loaders_by_spacetype[msp->space_type()] ++;
  91 
  92   // Count classes loaded by this CLD.
  93   CountKlassClosure ckc;
  94   cld->classes_do(&ckc);
  95   // accumulate.
  96   _num_classes += ckc._num_classes;
  97   _num_classes_by_spacetype[msp->space_type()] += ckc._num_classes;
  98   _num_classes_shared += ckc._num_classes_shared;
  99   _num_classes_shared_by_spacetype[msp->space_type()] += ckc._num_classes_shared;
 100 
 101   // Optionally, print
 102   if (_do_print) {
 103 
 104     _out->print(UINTX_FORMAT_W(4) ": ", _num_loaders);
 105 
 106     // Print "CLD for [<loader name>,] instance of <loader class name>"
 107     // or    "CLD for <weak hidden or anonymous class>, loaded by [<loader name>,] instance of <loader class name>"
 108 
 109     ResourceMark rm;
 110     const char* name = NULL;
 111     const char* class_name = NULL;
 112 
 113     // Note: this should also work if unloading:
 114     Klass* k = cld->class_loader_klass();
 115     if (k != NULL) {
 116       class_name = k->external_name();
 117       Symbol* s = cld->name();
 118       if (s != NULL) {
 119         name = s->as_C_string();
 120       }
 121     } else {
 122       name = "<bootstrap>";
 123     }
 124 
 125     // Print
 126     _out->print("CLD " PTR_FORMAT, p2i(cld));
 127     if (cld->is_unloading()) {
 128       _out->print(" (unloading)");
 129     }
 130     _out->print(":");
 131     if (cld->has_class_mirror_holder()) {
 132       _out->print(" <weak hidden or anonymous class>, loaded by");
 133     }
 134     if (name != NULL) {
 135       _out->print(" \"%s\"", name);
 136     }
 137     if (class_name != NULL) {
 138       _out->print(" instance of %s", class_name);
 139     }
 140 
 141     if (_do_print_classes) {
 142       // Print a detailed description of all loaded classes.
 143       streamIndentor sti(_out, 6);
 144       _out->cr_indent();
 145       _out->print("Loaded classes");
 146       if (ckc._num_classes_shared > 0) {
 147         _out->print("('s' = shared)");
 148       }
 149       _out->print(":");
 150       PrintMetaspaceInfoKlassClosure pkic(_out, true);
 151       cld->classes_do(&pkic);
 152       _out->cr_indent();


  87   _stats_total.add(this_cld_stat);
  88   _num_loaders ++;
  89   _stats_by_spacetype[msp->space_type()].add(this_cld_stat);
  90   _num_loaders_by_spacetype[msp->space_type()] ++;
  91 
  92   // Count classes loaded by this CLD.
  93   CountKlassClosure ckc;
  94   cld->classes_do(&ckc);
  95   // accumulate.
  96   _num_classes += ckc._num_classes;
  97   _num_classes_by_spacetype[msp->space_type()] += ckc._num_classes;
  98   _num_classes_shared += ckc._num_classes_shared;
  99   _num_classes_shared_by_spacetype[msp->space_type()] += ckc._num_classes_shared;
 100 
 101   // Optionally, print
 102   if (_do_print) {
 103 
 104     _out->print(UINTX_FORMAT_W(4) ": ", _num_loaders);
 105 
 106     // Print "CLD for [<loader name>,] instance of <loader class name>"
 107     // or    "CLD for <hidden or anonymous class>, loaded by [<loader name>,] instance of <loader class name>"
 108 
 109     ResourceMark rm;
 110     const char* name = NULL;
 111     const char* class_name = NULL;
 112 
 113     // Note: this should also work if unloading:
 114     Klass* k = cld->class_loader_klass();
 115     if (k != NULL) {
 116       class_name = k->external_name();
 117       Symbol* s = cld->name();
 118       if (s != NULL) {
 119         name = s->as_C_string();
 120       }
 121     } else {
 122       name = "<bootstrap>";
 123     }
 124 
 125     // Print
 126     _out->print("CLD " PTR_FORMAT, p2i(cld));
 127     if (cld->is_unloading()) {
 128       _out->print(" (unloading)");
 129     }
 130     _out->print(":");
 131     if (cld->has_class_mirror_holder()) {
 132       _out->print(" <hidden or anonymous class>, loaded by");
 133     }
 134     if (name != NULL) {
 135       _out->print(" \"%s\"", name);
 136     }
 137     if (class_name != NULL) {
 138       _out->print(" instance of %s", class_name);
 139     }
 140 
 141     if (_do_print_classes) {
 142       // Print a detailed description of all loaded classes.
 143       streamIndentor sti(_out, 6);
 144       _out->cr_indent();
 145       _out->print("Loaded classes");
 146       if (ckc._num_classes_shared > 0) {
 147         _out->print("('s' = shared)");
 148       }
 149       _out->print(":");
 150       PrintMetaspaceInfoKlassClosure pkic(_out, true);
 151       cld->classes_do(&pkic);
 152       _out->cr_indent();
< prev index next >