hotspot/src/share/vm/services/diagnosticFramework.hpp
changeset 11441 a89f443814cd
parent 11209 110525ac80b0
child 11598 db8931f2a56d
equal deleted inserted replaced
11422:fcd6a1948f57 11441:a89f443814cd
   239   static const char* disabled_message() { return "Diagnostic command currently disabled"; }
   239   static const char* disabled_message() { return "Diagnostic command currently disabled"; }
   240   static const char* impact() { return "Low: No impact"; }
   240   static const char* impact() { return "Low: No impact"; }
   241   static int num_arguments() { return 0; }
   241   static int num_arguments() { return 0; }
   242   outputStream* output() { return _output; }
   242   outputStream* output() { return _output; }
   243   bool is_heap_allocated()  { return _is_heap_allocated; }
   243   bool is_heap_allocated()  { return _is_heap_allocated; }
   244   virtual void print_help(outputStream* out) { };
   244   virtual void print_help(const char* name) {
   245   virtual void parse(CmdLine* line, char delim, TRAPS) { }
   245     output()->print_cr("Syntax: %s", name);
       
   246   }
       
   247   virtual void parse(CmdLine* line, char delim, TRAPS) {
       
   248     DCmdArgIter iter(line->args_addr(), line->args_len(), delim);
       
   249     bool has_arg = iter.next(CHECK);
       
   250     if (has_arg) {
       
   251       THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
       
   252                 "Unknown argument in diagnostic command");
       
   253     }
       
   254   }
   246   virtual void execute(TRAPS) { }
   255   virtual void execute(TRAPS) { }
   247   virtual void reset(TRAPS) { }
   256   virtual void reset(TRAPS) { }
   248   virtual void cleanup() { }
   257   virtual void cleanup() { }
   249 
   258 
   250   // support for the JMX interface
   259   // support for the JMX interface
   258   }
   267   }
   259 
   268 
   260   // main method to invoke the framework
   269   // main method to invoke the framework
   261   static void parse_and_execute(outputStream* out, const char* cmdline,
   270   static void parse_and_execute(outputStream* out, const char* cmdline,
   262                                 char delim, TRAPS);
   271                                 char delim, TRAPS);
       
   272 };
       
   273 
       
   274 class DCmdWithParser : public DCmd {
       
   275 protected:
       
   276   DCmdParser _dcmdparser;
       
   277 public:
       
   278   DCmdWithParser (outputStream *output, bool heap=false) : DCmd(output, heap) { }
       
   279   static const char* name() { return "No Name";}
       
   280   static const char* description() { return "No Help";}
       
   281   static const char* disabled_message() { return "Diagnostic command currently disabled"; }
       
   282   static const char* impact() { return "Low: No impact"; }
       
   283   static int num_arguments() { return 0; }
       
   284   virtual void parse(CmdLine *line, char delim, TRAPS);
       
   285   virtual void execute(TRAPS) { }
       
   286   virtual void reset(TRAPS);
       
   287   virtual void cleanup();
       
   288   virtual void print_help(const char* name);
       
   289   virtual GrowableArray<const char*>* argument_name_array();
       
   290   virtual GrowableArray<DCmdArgumentInfo*>* argument_info_array();
   263 };
   291 };
   264 
   292 
   265 class DCmdMark : public StackObj {
   293 class DCmdMark : public StackObj {
   266   DCmd* _ref;
   294   DCmd* _ref;
   267 public:
   295 public: