639 } |
639 } |
640 static int num_arguments() { return 0; } |
640 static int num_arguments() { return 0; } |
641 virtual void execute(DCmdSource source, TRAPS); |
641 virtual void execute(DCmdSource source, TRAPS); |
642 }; |
642 }; |
643 |
643 |
|
644 //---< BEGIN >--- CodeHeap State Analytics. |
|
645 class CodeHeapAnalyticsDCmd : public DCmdWithParser { |
|
646 protected: |
|
647 DCmdArgument<char*> _function; |
|
648 DCmdArgument<char*> _granularity; |
|
649 public: |
|
650 CodeHeapAnalyticsDCmd(outputStream* output, bool heap); |
|
651 static const char* name() { |
|
652 return "Compiler.CodeHeap_Analytics"; |
|
653 } |
|
654 static const char* description() { |
|
655 return "Print CodeHeap analytics"; |
|
656 } |
|
657 static const char* impact() { |
|
658 return "Low: Depends on code heap size and content. " |
|
659 "Holds CodeCache_lock during analysis step, usually sub-second duration."; |
|
660 } |
|
661 static const JavaPermission permission() { |
|
662 JavaPermission p = {"java.lang.management.ManagementPermission", |
|
663 "monitor", NULL}; |
|
664 return p; |
|
665 } |
|
666 static int num_arguments(); |
|
667 virtual void execute(DCmdSource source, TRAPS); |
|
668 }; |
|
669 //---< END >--- CodeHeap State Analytics. |
|
670 |
644 class CompilerDirectivesPrintDCmd : public DCmd { |
671 class CompilerDirectivesPrintDCmd : public DCmd { |
645 public: |
672 public: |
646 CompilerDirectivesPrintDCmd(outputStream* output, bool heap) : DCmd(output, heap) {} |
673 CompilerDirectivesPrintDCmd(outputStream* output, bool heap) : DCmd(output, heap) {} |
647 static const char* name() { |
674 static const char* name() { |
648 return "Compiler.directives_print"; |
675 return "Compiler.directives_print"; |