< prev index next >
src/hotspot/share/classfile/classLoaderHierarchyDCmd.cpp
Print this page
*** 144,156 ****
LoaderTreeNode* _next;
LoadedClassInfo* _classes;
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.
--- 144,153 ----
*** 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:");
--- 219,230 ----
}
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:");
*** 251,287 ****
// Empty line
branchtracker.print(st);
st->cr();
}
- if (_anon_classes != NULL) {
- for (LoadedClassInfo* lci = _anon_classes; lci; lci = lci->_next) {
- branchtracker.print(st);
- if (lci == _anon_classes) { // first iteration
- st->print("%*s ", indentation, "Unsafe Anonymous Classes:");
- } else {
- st->print("%*s ", indentation, "");
- }
- st->print("%s", lci->_klass->external_name());
- // For unsafe anonymous 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 unsafe anonymous class%s)", _num_anon_classes,
- (_num_anon_classes == 1) ? "" : "es");
-
- // 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:");
--- 249,258 ----
*** 331,343 ****
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;
}
--- 302,313 ----
public:
LoaderTreeNode(const oop loader_oop)
: _loader_oop(loader_oop), _cld(NULL), _child(NULL), _next(NULL),
! _classes(NULL), _num_classes(0), _hidden_classes(NULL),
! _num_hidden_classes(0), _num_folded(0)
{}
void set_cld(const ClassLoaderData* cld) {
_cld = cld;
}
*** 355,380 ****
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;
}
}
const ClassLoaderData* cld() const {
--- 325,346 ----
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 = &_hidden_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) {
_num_hidden_classes += num_classes;
} else {
_num_classes += num_classes;
}
}
const ClassLoaderData* cld() const {
< prev index next >