src/share/vm/services/diagnosticCommand.hpp

Print this page

        

*** 270,291 **** static int num_arguments(); virtual void execute(DCmdSource source, TRAPS); }; ! class ClassHierarchyDCmd : public DCmd { public: ! ClassHierarchyDCmd(outputStream* output, bool heap) : DCmd(output, heap) { } static const char* name() { return "VM.class_hierarchy"; } static const char* description() { ! return "Print a list of all loaded classes, indented to show the class hiearchy."; } static const char* impact() { return "Medium: Depends on number of loaded classes."; } virtual void execute(DCmdSource source, TRAPS); }; // See also: thread_dump in attachListener.cpp class ThreadDumpDCmd : public DCmdWithParser { --- 270,298 ---- static int num_arguments(); virtual void execute(DCmdSource source, TRAPS); }; ! class ClassHierarchyDCmd : public DCmdWithParser { ! protected: ! DCmdArgument<bool> _print_interfaces; // true if inherited interfaces should be printed. ! DCmdArgument<bool> _print_subclasses; // true subclasses of specified classname should be printed. ! DCmdArgument<char*> _classname; // Optional single class name whose hierarchy should be printed. public: ! ClassHierarchyDCmd(outputStream* output, bool heap); static const char* name() { return "VM.class_hierarchy"; } static const char* description() { ! return "Print a list of all loaded classes, indented to show the class hiearchy. " ! "The name of each class is followed by the Klass* of its ClassLoader, " ! "or \"null\" if loaded by the bootstrap class loader."; } static const char* impact() { return "Medium: Depends on number of loaded classes."; } + static int num_arguments(); virtual void execute(DCmdSource source, TRAPS); }; // See also: thread_dump in attachListener.cpp class ThreadDumpDCmd : public DCmdWithParser {