< prev index next >

src/hotspot/share/services/diagnosticCommand.cpp

Print this page

  79   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<VersionDCmd>(full_export, true, false));
  80   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<CommandLineDCmd>(full_export, true, false));
  81   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<PrintSystemPropertiesDCmd>(full_export, true, false));
  82   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<PrintVMFlagsDCmd>(full_export, true, false));
  83   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<SetVMFlagDCmd>(full_export, true, false));
  84   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<VMDynamicLibrariesDCmd>(full_export, true, false));
  85   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<VMUptimeDCmd>(full_export, true, false));
  86   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<VMInfoDCmd>(full_export, true, false));
  87   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<SystemGCDCmd>(full_export, true, false));
  88   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<RunFinalizationDCmd>(full_export, true, false));
  89   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<HeapInfoDCmd>(full_export, true, false));
  90   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<FinalizerInfoDCmd>(full_export, true, false));
  91 #if INCLUDE_SERVICES
  92   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<HeapDumpDCmd>(DCmd_Source_Internal | DCmd_Source_AttachAPI, true, false));
  93   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<ClassHistogramDCmd>(full_export, true, false));
  94   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<SystemDictionaryDCmd>(full_export, true, false));
  95   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<ClassHierarchyDCmd>(full_export, true, false));
  96   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<SymboltableDCmd>(full_export, true, false));
  97   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<StringtableDCmd>(full_export, true, false));
  98   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<metaspace::MetaspaceDCmd>(full_export, true, false));

  99   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<EventLogDCmd>(full_export, true, false));
 100 #if INCLUDE_JVMTI // Both JVMTI and SERVICES have to be enabled to have this dcmd
 101   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<JVMTIAgentLoadDCmd>(full_export, true, false));
 102 #endif // INCLUDE_JVMTI
 103 #endif // INCLUDE_SERVICES
 104 #if INCLUDE_JVMTI
 105   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<JVMTIDataDumpDCmd>(full_export, true, false));
 106 #endif // INCLUDE_JVMTI
 107   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<ThreadDumpDCmd>(full_export, true, false));
 108   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<ClassLoaderStatsDCmd>(full_export, true, false));
 109   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<ClassLoaderHierarchyDCmd>(full_export, true, false));
 110   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<CompileQueueDCmd>(full_export, true, false));
 111   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<CodeListDCmd>(full_export, true, false));
 112   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<CodeCacheDCmd>(full_export, true, false));
 113   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<TouchedMethodsDCmd>(full_export, true, false));
 114   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<CodeHeapAnalyticsDCmd>(full_export, true, false));
 115 
 116   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<CompilerDirectivesPrintDCmd>(full_export, true, false));
 117   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<CompilerDirectivesAddDCmd>(full_export, true, false));
 118   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<CompilerDirectivesRemoveDCmd>(full_export, true, false));
 119   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<CompilerDirectivesClearDCmd>(full_export, true, false));
 120 
 121   // Enhanced JMX Agent Support
 122   // These commands won't be exported via the DiagnosticCommandMBean until an
 123   // appropriate permission is created for them
 124   uint32_t jmx_agent_export_flags = DCmd_Source_Internal | DCmd_Source_AttachAPI;
 125   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<JMXStartRemoteDCmd>(jmx_agent_export_flags, true,false));
 126   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<JMXStartLocalDCmd>(jmx_agent_export_flags, true,false));
 127   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<JMXStopRemoteDCmd>(jmx_agent_export_flags, true,false));
 128   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<JMXStatusDCmd>(jmx_agent_export_flags, true,false));
 129 
 130   // Debug on cmd (only makes sense with JVMTI since the agentlib needs it).
 131 #if INCLUDE_JVMTI
 132   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<DebugOnCmdStartDCmd>(full_export, true, true));
 133 #endif // INCLUDE_JVMTI
 134 
 135 }
 136 
 137 #ifndef HAVE_EXTRA_DCMD
 138 void DCmdRegistrant::register_dcmds_ext(){
 139    // Do nothing here
 140 }
 141 #endif
 142 
 143 
 144 HelpDCmd::HelpDCmd(outputStream* output, bool heap) : DCmdWithParser(output, heap),
 145   _all("-all", "Show help for all commands", "BOOLEAN", false, "false"),
 146   _cmd("command name", "The name of the command for which we want help",
 147         "STRING", false) {
 148   _dcmdparser.add_dcmd_option(&_all);
 149   _dcmdparser.add_dcmd_argument(&_cmd);

1012 
1013 void ClassHierarchyDCmd::execute(DCmdSource source, TRAPS) {
1014   VM_PrintClassHierarchy printClassHierarchyOp(output(), _print_interfaces.value(),
1015                                                _print_subclasses.value(), _classname.value());
1016   VMThread::execute(&printClassHierarchyOp);
1017 }
1018 
1019 int ClassHierarchyDCmd::num_arguments() {
1020   ResourceMark rm;
1021   ClassHierarchyDCmd* dcmd = new ClassHierarchyDCmd(NULL, false);
1022   if (dcmd != NULL) {
1023     DCmdMark mark(dcmd);
1024     return dcmd->_dcmdparser.num_arguments();
1025   } else {
1026     return 0;
1027   }
1028 }
1029 
1030 #endif
1031 























1032 class VM_DumpTouchedMethods : public VM_Operation {
1033 private:
1034   outputStream* _out;
1035 public:
1036   VM_DumpTouchedMethods(outputStream* out) {
1037     _out = out;
1038   }
1039 
1040   virtual VMOp_Type type() const { return VMOp_DumpTouchedMethods; }
1041 
1042   virtual void doit() {
1043     Method::print_touched_methods(_out);
1044   }
1045 };
1046 
1047 TouchedMethodsDCmd::TouchedMethodsDCmd(outputStream* output, bool heap) :
1048                                        DCmdWithParser(output, heap)
1049 {}
1050 
1051 void TouchedMethodsDCmd::execute(DCmdSource source, TRAPS) {

  79   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<VersionDCmd>(full_export, true, false));
  80   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<CommandLineDCmd>(full_export, true, false));
  81   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<PrintSystemPropertiesDCmd>(full_export, true, false));
  82   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<PrintVMFlagsDCmd>(full_export, true, false));
  83   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<SetVMFlagDCmd>(full_export, true, false));
  84   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<VMDynamicLibrariesDCmd>(full_export, true, false));
  85   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<VMUptimeDCmd>(full_export, true, false));
  86   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<VMInfoDCmd>(full_export, true, false));
  87   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<SystemGCDCmd>(full_export, true, false));
  88   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<RunFinalizationDCmd>(full_export, true, false));
  89   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<HeapInfoDCmd>(full_export, true, false));
  90   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<FinalizerInfoDCmd>(full_export, true, false));
  91 #if INCLUDE_SERVICES
  92   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<HeapDumpDCmd>(DCmd_Source_Internal | DCmd_Source_AttachAPI, true, false));
  93   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<ClassHistogramDCmd>(full_export, true, false));
  94   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<SystemDictionaryDCmd>(full_export, true, false));
  95   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<ClassHierarchyDCmd>(full_export, true, false));
  96   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<SymboltableDCmd>(full_export, true, false));
  97   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<StringtableDCmd>(full_export, true, false));
  98   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<metaspace::MetaspaceDCmd>(full_export, true, false));
  99   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<PrintClassLayoutDCmd>(full_export, true, false));
 100   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<EventLogDCmd>(full_export, true, false));
 101 #if INCLUDE_JVMTI // Both JVMTI and SERVICES have to be enabled to have this dcmd
 102   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<JVMTIAgentLoadDCmd>(full_export, true, false));
 103 #endif // INCLUDE_JVMTI
 104 #endif // INCLUDE_SERVICES
 105 #if INCLUDE_JVMTI
 106   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<JVMTIDataDumpDCmd>(full_export, true, false));
 107 #endif // INCLUDE_JVMTI
 108   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<ThreadDumpDCmd>(full_export, true, false));
 109   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<ClassLoaderStatsDCmd>(full_export, true, false));
 110   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<ClassLoaderHierarchyDCmd>(full_export, true, false));
 111   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<CompileQueueDCmd>(full_export, true, false));
 112   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<CodeListDCmd>(full_export, true, false));
 113   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<CodeCacheDCmd>(full_export, true, false));
 114   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<TouchedMethodsDCmd>(full_export, true, false));
 115   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<CodeHeapAnalyticsDCmd>(full_export, true, false));
 116 
 117   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<CompilerDirectivesPrintDCmd>(full_export, true, false));
 118   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<CompilerDirectivesAddDCmd>(full_export, true, false));
 119   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<CompilerDirectivesRemoveDCmd>(full_export, true, false));
 120   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<CompilerDirectivesClearDCmd>(full_export, true, false));
 121 
 122   // Enhanced JMX Agent Support
 123   // These commands won't be exported via the DiagnosticCommandMBean until an
 124   // appropriate permission is created for them
 125   uint32_t jmx_agent_export_flags = DCmd_Source_Internal | DCmd_Source_AttachAPI;
 126   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<JMXStartRemoteDCmd>(jmx_agent_export_flags, true,false));
 127   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<JMXStartLocalDCmd>(jmx_agent_export_flags, true,false));
 128   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<JMXStopRemoteDCmd>(jmx_agent_export_flags, true,false));
 129   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<JMXStatusDCmd>(jmx_agent_export_flags, true,false));

 130   // Debug on cmd (only makes sense with JVMTI since the agentlib needs it).
 131 #if INCLUDE_JVMTI
 132   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<DebugOnCmdStartDCmd>(full_export, true, true));
 133 #endif // INCLUDE_JVMTI
 134 
 135 }
 136 
 137 #ifndef HAVE_EXTRA_DCMD
 138 void DCmdRegistrant::register_dcmds_ext(){
 139    // Do nothing here
 140 }
 141 #endif
 142 
 143 
 144 HelpDCmd::HelpDCmd(outputStream* output, bool heap) : DCmdWithParser(output, heap),
 145   _all("-all", "Show help for all commands", "BOOLEAN", false, "false"),
 146   _cmd("command name", "The name of the command for which we want help",
 147         "STRING", false) {
 148   _dcmdparser.add_dcmd_option(&_all);
 149   _dcmdparser.add_dcmd_argument(&_cmd);

1012 
1013 void ClassHierarchyDCmd::execute(DCmdSource source, TRAPS) {
1014   VM_PrintClassHierarchy printClassHierarchyOp(output(), _print_interfaces.value(),
1015                                                _print_subclasses.value(), _classname.value());
1016   VMThread::execute(&printClassHierarchyOp);
1017 }
1018 
1019 int ClassHierarchyDCmd::num_arguments() {
1020   ResourceMark rm;
1021   ClassHierarchyDCmd* dcmd = new ClassHierarchyDCmd(NULL, false);
1022   if (dcmd != NULL) {
1023     DCmdMark mark(dcmd);
1024     return dcmd->_dcmdparser.num_arguments();
1025   } else {
1026     return 0;
1027   }
1028 }
1029 
1030 #endif
1031 
1032 PrintClassLayoutDCmd::PrintClassLayoutDCmd(outputStream* output, bool heap) :
1033                                        DCmdWithParser(output, heap),
1034   _classname("classname", "Name of class whose layout should be printed. ",
1035              "STRING", true) {
1036   _dcmdparser.add_dcmd_argument(&_classname);
1037 }
1038 
1039 void PrintClassLayoutDCmd::execute(DCmdSource source, TRAPS) {
1040   VM_PrintClassLayout printClassLayoutOp(output(), _classname.value());
1041   VMThread::execute(&printClassLayoutOp);
1042 }
1043 
1044 int PrintClassLayoutDCmd::num_arguments() {
1045   ResourceMark rm;
1046   PrintClassLayoutDCmd* dcmd = new PrintClassLayoutDCmd(NULL, false);
1047   if (dcmd != NULL) {
1048     DCmdMark mark(dcmd);
1049     return dcmd->_dcmdparser.num_arguments();
1050   } else {
1051     return 0;
1052   }
1053 }
1054 
1055 class VM_DumpTouchedMethods : public VM_Operation {
1056 private:
1057   outputStream* _out;
1058 public:
1059   VM_DumpTouchedMethods(outputStream* out) {
1060     _out = out;
1061   }
1062 
1063   virtual VMOp_Type type() const { return VMOp_DumpTouchedMethods; }
1064 
1065   virtual void doit() {
1066     Method::print_touched_methods(_out);
1067   }
1068 };
1069 
1070 TouchedMethodsDCmd::TouchedMethodsDCmd(outputStream* output, bool heap) :
1071                                        DCmdWithParser(output, heap)
1072 {}
1073 
1074 void TouchedMethodsDCmd::execute(DCmdSource source, TRAPS) {
< prev index next >