< prev index next >

src/hotspot/share/classfile/classLoaderHierarchyDCmd.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

*** 147,158 **** int _num_classes; LoadedClassInfo* _anon_classes; int _num_anon_classes; ! LoadedClassInfo* _hidden_weak_classes; ! int _num_hidden_weak_classes; // In default view, similar tree nodes (same loader class, same name or no name) // are folded into each other to make the output more readable. // _num_folded contains the number of nodes which have been folded into this // one. --- 147,158 ---- int _num_classes; LoadedClassInfo* _anon_classes; int _num_anon_classes; ! LoadedClassInfo* _hidden_classes; ! int _num_hidden_classes; // In default view, similar tree nodes (same loader class, same name or no name) // are folded into each other to make the output more readable. // _num_folded contains the number of nodes which have been folded into this // one.
*** 222,232 **** } if (print_classes) { if (_classes != NULL) { for (LoadedClassInfo* lci = _classes; lci; lci = lci->_next) { ! // Weak-hidden and unsafe anonymous classes should not live in the primary CLD of their loaders. assert(lci->_cld == _cld, "must be"); branchtracker.print(st); if (lci == _classes) { // first iteration st->print("%*s ", indentation, "Classes:"); --- 222,232 ---- } if (print_classes) { if (_classes != NULL) { for (LoadedClassInfo* lci = _classes; lci; lci = lci->_next) { ! // non-strong hidden and unsafe anonymous classes should not live in the primary CLD of their loaders. assert(lci->_cld == _cld, "must be"); branchtracker.print(st); if (lci == _classes) { // first iteration st->print("%*s ", indentation, "Classes:");
*** 278,308 **** // Empty line branchtracker.print(st); st->cr(); } ! if (_hidden_weak_classes != NULL) { ! for (LoadedClassInfo* lci = _hidden_weak_classes; lci; lci = lci->_next) { branchtracker.print(st); ! if (lci == _hidden_weak_classes) { // first iteration ! st->print("%*s ", indentation, "Weak Hidden Classes:"); } else { st->print("%*s ", indentation, ""); } st->print("%s", lci->_klass->external_name()); ! // For weak hidden classes, also print CLD if verbose. Should be a // different one than the primary CLD. assert(lci->_cld != _cld, "must be"); if (verbose) { st->print(" (Loader Data: " PTR_FORMAT ")", p2i(lci->_cld)); } st->cr(); } branchtracker.print(st); st->print("%*s ", indentation, ""); ! st->print_cr("(%u weak hidden class%s)", _num_hidden_weak_classes, ! (_num_hidden_weak_classes == 1) ? "" : "es"); // Empty line branchtracker.print(st); st->cr(); } --- 278,308 ---- // Empty line branchtracker.print(st); st->cr(); } ! if (_hidden_classes != NULL) { ! for (LoadedClassInfo* lci = _hidden_classes; lci; lci = lci->_next) { branchtracker.print(st); ! if (lci == _hidden_classes) { // first iteration ! st->print("%*s ", indentation, "Hidden Classes:"); } else { st->print("%*s ", indentation, ""); } st->print("%s", lci->_klass->external_name()); ! // For non-strong hidden classes, also print CLD if verbose. Should be a // different one than the primary CLD. assert(lci->_cld != _cld, "must be"); if (verbose) { st->print(" (Loader Data: " PTR_FORMAT ")", p2i(lci->_cld)); } st->cr(); } branchtracker.print(st); st->print("%*s ", indentation, ""); ! st->print_cr("(%u hidden class%s)", _num_hidden_classes, ! (_num_hidden_classes == 1) ? "" : "es"); // Empty line branchtracker.print(st); st->cr(); }
*** 332,342 **** public: LoaderTreeNode(const oop loader_oop) : _loader_oop(loader_oop), _cld(NULL), _child(NULL), _next(NULL), _classes(NULL), _num_classes(0), _anon_classes(NULL), _num_anon_classes(0), ! _hidden_weak_classes(NULL), _num_hidden_weak_classes(0), _num_folded(0) {} void set_cld(const ClassLoaderData* cld) { _cld = cld; --- 332,342 ---- public: LoaderTreeNode(const oop loader_oop) : _loader_oop(loader_oop), _cld(NULL), _child(NULL), _next(NULL), _classes(NULL), _num_classes(0), _anon_classes(NULL), _num_anon_classes(0), ! _hidden_classes(NULL), _num_hidden_classes(0), _num_folded(0) {} void set_cld(const ClassLoaderData* cld) { _cld = cld;
*** 355,376 **** void add_classes(LoadedClassInfo* first_class, int num_classes, bool has_class_mirror_holder) { LoadedClassInfo** p_list_to_add_to; bool is_hidden = first_class->_klass->is_hidden(); if (has_class_mirror_holder) { ! p_list_to_add_to = is_hidden ? &_hidden_weak_classes : &_anon_classes; } else { p_list_to_add_to = &_classes; } // Search tail. while ((*p_list_to_add_to) != NULL) { p_list_to_add_to = &(*p_list_to_add_to)->_next; } *p_list_to_add_to = first_class; if (has_class_mirror_holder) { if (is_hidden) { ! _num_hidden_weak_classes += num_classes; } else { _num_anon_classes += num_classes; } } else { _num_classes += num_classes; --- 355,376 ---- void add_classes(LoadedClassInfo* first_class, int num_classes, bool has_class_mirror_holder) { LoadedClassInfo** p_list_to_add_to; bool is_hidden = first_class->_klass->is_hidden(); if (has_class_mirror_holder) { ! p_list_to_add_to = is_hidden ? &_hidden_classes : &_anon_classes; } else { p_list_to_add_to = &_classes; } // Search tail. while ((*p_list_to_add_to) != NULL) { p_list_to_add_to = &(*p_list_to_add_to)->_next; } *p_list_to_add_to = first_class; if (has_class_mirror_holder) { if (is_hidden) { ! _num_hidden_classes += num_classes; } else { _num_anon_classes += num_classes; } } else { _num_classes += num_classes;
< prev index next >