< prev index next >

src/hotspot/share/classfile/classLoaderHierarchyDCmd.cpp

Print this page
rev 50538 : [mq]: 8203343-VM.metaspace-show-reflection-invocation-targets

*** 28,37 **** --- 28,38 ---- #include "classfile/classLoaderData.inline.hpp" #include "classfile/classLoaderHierarchyDCmd.hpp" #include "memory/allocation.hpp" #include "memory/resourceArea.hpp" #include "runtime/safepoint.hpp" + #include "oops/reflectionAccessorImplKlassHelper.hpp" #include "utilities/globalDefinitions.hpp" #include "utilities/ostream.hpp" ClassLoaderHierarchyDCmd::ClassLoaderHierarchyDCmd(outputStream* output, bool heap)
*** 200,222 **** branchtracker.print(st); st->cr(); } if (print_classes) { - if (_classes != NULL) { for (LoadedClassInfo* lci = _classes; lci; lci = lci->_next) { branchtracker.print(st); if (lci == _classes) { // first iteration st->print("%*s ", indentation, "Classes:"); } else { st->print("%*s ", indentation, ""); } st->print("%s", lci->_klass->external_name()); st->cr(); - // Non-anonymous classes should live in the primary CLD of its loader - assert(lci->_cld == _cld, "must be"); } branchtracker.print(st); st->print("%*s ", indentation, ""); st->print_cr("(%u class%s)", _num_classes, (_num_classes == 1) ? "" : "es"); --- 201,231 ---- branchtracker.print(st); st->cr(); } if (print_classes) { if (_classes != NULL) { for (LoadedClassInfo* lci = _classes; lci; lci = lci->_next) { + // Non-anonymous classes should live in the primary CLD of its loader + assert(lci->_cld == _cld, "must be"); + branchtracker.print(st); if (lci == _classes) { // first iteration st->print("%*s ", indentation, "Classes:"); } else { st->print("%*s ", indentation, ""); } st->print("%s", lci->_klass->external_name()); + + // Special treatment for generated core reflection accessor classes: print invocation target. + if (ReflectionAccessorImplKlassHelper::is_generated_accessor(lci->_klass)) { + st->print(" (invokes: "); + ReflectionAccessorImplKlassHelper::print_invocation_target(st, lci->_klass); + st->print(")"); + } + st->cr(); } branchtracker.print(st); st->print("%*s ", indentation, ""); st->print_cr("(%u class%s)", _num_classes, (_num_classes == 1) ? "" : "es");
< prev index next >