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: |