hotspot/src/share/vm/services/diagnosticCommand.cpp
changeset 37267 ad8c0e8de29f
parent 36795 bfd8c074c8ec
parent 37248 11a660dbbb8e
child 39401 318e93828de1
equal deleted inserted replaced
36848:33688f44fb2a 37267:ad8c0e8de29f
    26 #include "classfile/classLoaderStats.hpp"
    26 #include "classfile/classLoaderStats.hpp"
    27 #include "classfile/compactHashtable.hpp"
    27 #include "classfile/compactHashtable.hpp"
    28 #include "compiler/compileBroker.hpp"
    28 #include "compiler/compileBroker.hpp"
    29 #include "compiler/directivesParser.hpp"
    29 #include "compiler/directivesParser.hpp"
    30 #include "gc/shared/vmGCOperations.hpp"
    30 #include "gc/shared/vmGCOperations.hpp"
       
    31 #include "memory/resourceArea.hpp"
    31 #include "oops/oop.inline.hpp"
    32 #include "oops/oop.inline.hpp"
    32 #include "runtime/globals.hpp"
    33 #include "runtime/globals.hpp"
    33 #include "runtime/javaCalls.hpp"
    34 #include "runtime/javaCalls.hpp"
    34 #include "runtime/os.hpp"
    35 #include "runtime/os.hpp"
    35 #include "services/diagnosticArgument.hpp"
    36 #include "services/diagnosticArgument.hpp"
    59   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<VMInfoDCmd>(full_export, true, false));
    60   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<VMInfoDCmd>(full_export, true, false));
    60   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<SystemGCDCmd>(full_export, true, false));
    61   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<SystemGCDCmd>(full_export, true, false));
    61   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<RunFinalizationDCmd>(full_export, true, false));
    62   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<RunFinalizationDCmd>(full_export, true, false));
    62   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<HeapInfoDCmd>(full_export, true, false));
    63   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<HeapInfoDCmd>(full_export, true, false));
    63   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<FinalizerInfoDCmd>(full_export, true, false));
    64   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<FinalizerInfoDCmd>(full_export, true, false));
    64 #if INCLUDE_SERVICES // Heap dumping/inspection supported
    65 #if INCLUDE_SERVICES
    65   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<HeapDumpDCmd>(DCmd_Source_Internal | DCmd_Source_AttachAPI, true, false));
    66   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<HeapDumpDCmd>(DCmd_Source_Internal | DCmd_Source_AttachAPI, true, false));
    66   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<ClassHistogramDCmd>(full_export, true, false));
    67   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<ClassHistogramDCmd>(full_export, true, false));
    67   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<ClassStatsDCmd>(full_export, true, false));
    68   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<ClassStatsDCmd>(full_export, true, false));
    68   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<ClassHierarchyDCmd>(full_export, true, false));
    69   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<ClassHierarchyDCmd>(full_export, true, false));
    69   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<SymboltableDCmd>(full_export, true, false));
    70   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<SymboltableDCmd>(full_export, true, false));
    70   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<StringtableDCmd>(full_export, true, false));
    71   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<StringtableDCmd>(full_export, true, false));
       
    72 #if INCLUDE_JVMTI // Both JVMTI and SERVICES have to be enabled to have this dcmd
       
    73   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<JVMTIAgentLoadDCmd>(full_export, true, false));
       
    74 #endif // INCLUDE_JVMTI
    71 #endif // INCLUDE_SERVICES
    75 #endif // INCLUDE_SERVICES
    72 #if INCLUDE_JVMTI
    76 #if INCLUDE_JVMTI
    73   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<JVMTIDataDumpDCmd>(full_export, true, false));
    77   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<JVMTIDataDumpDCmd>(full_export, true, false));
    74   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<JVMTIAgentLoadDCmd>(full_export, true, false));
       
    75 #endif // INCLUDE_JVMTI
    78 #endif // INCLUDE_JVMTI
    76   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<ThreadDumpDCmd>(full_export, true, false));
    79   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<ThreadDumpDCmd>(full_export, true, false));
    77   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<ClassLoaderStatsDCmd>(full_export, true, false));
    80   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<ClassLoaderStatsDCmd>(full_export, true, false));
    78   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<CompileQueueDCmd>(full_export, true, false));
    81   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<CompileQueueDCmd>(full_export, true, false));
    79   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<CodeListDCmd>(full_export, true, false));
    82   DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<CodeListDCmd>(full_export, true, false));
   253   if (JvmtiExport::should_post_data_dump()) {
   256   if (JvmtiExport::should_post_data_dump()) {
   254     JvmtiExport::post_data_dump();
   257     JvmtiExport::post_data_dump();
   255   }
   258   }
   256 }
   259 }
   257 
   260 
       
   261 #if INCLUDE_SERVICES
   258 JVMTIAgentLoadDCmd::JVMTIAgentLoadDCmd(outputStream* output, bool heap) :
   262 JVMTIAgentLoadDCmd::JVMTIAgentLoadDCmd(outputStream* output, bool heap) :
   259                                        DCmdWithParser(output, heap),
   263                                        DCmdWithParser(output, heap),
   260   _libpath("library path", "Absolute path of the JVMTI agent to load.",
   264   _libpath("library path", "Absolute path of the JVMTI agent to load.",
   261            "STRING", true),
   265            "STRING", true),
   262   _option("agent option", "Option string to pass the agent.", "STRING", false) {
   266   _option("agent option", "Option string to pass the agent.", "STRING", false) {
   312     return dcmd->_dcmdparser.num_arguments();
   316     return dcmd->_dcmdparser.num_arguments();
   313   } else {
   317   } else {
   314     return 0;
   318     return 0;
   315   }
   319   }
   316 }
   320 }
       
   321 #endif // INCLUDE_SERVICES
   317 
   322 
   318 void PrintSystemPropertiesDCmd::execute(DCmdSource source, TRAPS) {
   323 void PrintSystemPropertiesDCmd::execute(DCmdSource source, TRAPS) {
   319   // load VMSupport
   324   // load VMSupport
   320   Symbol* klass = vmSymbols::jdk_internal_vm_VMSupport();
   325   Symbol* klass = vmSymbols::jdk_internal_vm_VMSupport();
   321   Klass* k = SystemDictionary::resolve_or_fail(klass, true, CHECK);
   326   Klass* k = SystemDictionary::resolve_or_fail(klass, true, CHECK);