< prev index next >
src/hotspot/share/services/diagnosticCommand.cpp
Print this page
*** 94,103 ****
--- 94,104 ----
DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<SystemDictionaryDCmd>(full_export, true, false));
DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<ClassHierarchyDCmd>(full_export, true, false));
DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<SymboltableDCmd>(full_export, true, false));
DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<StringtableDCmd>(full_export, true, false));
DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<metaspace::MetaspaceDCmd>(full_export, true, false));
+ DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<PrintClassLayoutDCmd>(full_export, true, false));
DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<EventLogDCmd>(full_export, true, false));
#if INCLUDE_JVMTI // Both JVMTI and SERVICES have to be enabled to have this dcmd
DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<JVMTIAgentLoadDCmd>(full_export, true, false));
#endif // INCLUDE_JVMTI
#endif // INCLUDE_SERVICES
*** 1075,1084 ****
--- 1076,1108 ----
}
}
#endif
+ PrintClassLayoutDCmd::PrintClassLayoutDCmd(outputStream* output, bool heap) :
+ DCmdWithParser(output, heap),
+ _classname("classname", "Name of class whose layout should be printed. ",
+ "STRING", true) {
+ _dcmdparser.add_dcmd_argument(&_classname);
+ }
+
+ void PrintClassLayoutDCmd::execute(DCmdSource source, TRAPS) {
+ VM_PrintClassLayout printClassLayoutOp(output(), _classname.value());
+ VMThread::execute(&printClassLayoutOp);
+ }
+
+ int PrintClassLayoutDCmd::num_arguments() {
+ ResourceMark rm;
+ PrintClassLayoutDCmd* dcmd = new PrintClassLayoutDCmd(NULL, false);
+ if (dcmd != NULL) {
+ DCmdMark mark(dcmd);
+ return dcmd->_dcmdparser.num_arguments();
+ } else {
+ return 0;
+ }
+ }
+
class VM_DumpTouchedMethods : public VM_Operation {
private:
outputStream* _out;
public:
VM_DumpTouchedMethods(outputStream* out) {
< prev index next >