src/share/vm/services/diagnosticArgument.hpp

Print this page
rev 3087 : 7141252: Diagnostic Framework Default parser fixes

*** 29,63 **** --- 29,109 ---- #include "memory/allocation.hpp" #include "runtime/os.hpp" #include "runtime/thread.hpp" #include "utilities/exceptions.hpp" + class StringArrayArgument : public CHeapObj { + private: + GrowableArray<char*>* _array; + public: + StringArrayArgument() { + _array = new(ResourceObj::C_HEAP)GrowableArray<char *>(32, true); + assert(_array != NULL, "Sanity check"); + } + void add(const char* str, size_t len) { + if (str != NULL) { + char* ptr = NEW_C_HEAP_ARRAY(char, len+1); + strncpy(ptr, str, len); + ptr[len] = 0; + _array->append(ptr); + } + } + GrowableArray<char*>* array() { + return _array; + } + ~StringArrayArgument() { + for (int i=0; i<_array->length(); i++) { + if(_array->at(i) != NULL) { // Safety check + FREE_C_HEAP_ARRAY(char, _array->at(i)); + } + } + delete _array; + } + }; + + class NanoTimeArgument { + public: + jlong _nanotime; + jlong _time; + char _unit[3]; + }; + + class MemorySizeArgument { + public: + u8 _size; + u8 _val; + char _multiplier; + }; + class GenDCmdArgument : public ResourceObj { protected: GenDCmdArgument* _next; const char* _name; const char* _description; const char* _type; const char* _default_string; bool _is_set; bool _is_mandatory; + bool _allow_multiple; GenDCmdArgument(const char* name, const char* description, const char* type, const char* default_string, bool mandatory) { _name = name; _description = description; _type = type; _default_string = default_string; _is_mandatory = mandatory; _is_set = false; + _allow_multiple = false; }; public: const char* name() { return _name; } const char* description() { return _description; } const char* type() { return _type; } const char* default_string() { return _default_string; } bool is_set() { return _is_set; } void set_is_set(bool b) { _is_set = b; } + bool allow_multiple() { return _allow_multiple; } bool is_mandatory() { return _is_mandatory; } bool has_value() { return _is_set || _default_string != NULL; } bool has_default() { return _default_string != NULL; } void read_value(const char* str, size_t len, TRAPS); virtual void parse_value(const char* str, size_t len, TRAPS) = 0;