src/share/vm/utilities/debug.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 7187454 Cdiff src/share/vm/utilities/debug.hpp

src/share/vm/utilities/debug.hpp

Print this page

        

*** 29,69 **** #include "utilities/globalDefinitions.hpp" #include <stdarg.h> // Simple class to format the ctor arguments into a fixed-sized buffer. template <size_t bufsz = 256> ! class FormatBuffer { public: inline FormatBuffer(const char * format, ...); inline void append(const char* format, ...); inline void print(const char* format, ...); inline void printv(const char* format, va_list ap); - operator const char *() const { return _buf; } char* buffer() { return _buf; } int size() { return bufsz; } private: FormatBuffer(const FormatBuffer &); // prevent copies protected: - char _buf[bufsz]; - inline FormatBuffer(); }; template <size_t bufsz> ! FormatBuffer<bufsz>::FormatBuffer(const char * format, ...) { va_list argp; va_start(argp, format); jio_vsnprintf(_buf, bufsz, format, argp); va_end(argp); } template <size_t bufsz> ! FormatBuffer<bufsz>::FormatBuffer() { _buf[0] = '\0'; } template <size_t bufsz> void FormatBuffer<bufsz>::print(const char * format, ...) { --- 29,83 ---- #include "utilities/globalDefinitions.hpp" #include <stdarg.h> // Simple class to format the ctor arguments into a fixed-sized buffer. + class FormatBufferBase { + protected: + char* _buf; + inline FormatBufferBase(char* buf) : _buf(buf) {} + public: + operator const char *() const { return _buf; } + }; + + // Use resource area for buffer + #define RES_BUFSZ 256 + class FormatBufferResource : public FormatBufferBase { + public: + FormatBufferResource(const char * format, ...); + }; + + // Use stack for buffer template <size_t bufsz = 256> ! class FormatBuffer : public FormatBufferBase { public: inline FormatBuffer(const char * format, ...); inline void append(const char* format, ...); inline void print(const char* format, ...); inline void printv(const char* format, va_list ap); char* buffer() { return _buf; } int size() { return bufsz; } private: FormatBuffer(const FormatBuffer &); // prevent copies + char _buffer[bufsz]; protected: inline FormatBuffer(); }; template <size_t bufsz> ! FormatBuffer<bufsz>::FormatBuffer(const char * format, ...) : FormatBufferBase(_buffer) { va_list argp; va_start(argp, format); jio_vsnprintf(_buf, bufsz, format, argp); va_end(argp); } template <size_t bufsz> ! FormatBuffer<bufsz>::FormatBuffer() : FormatBufferBase(_buffer) { _buf[0] = '\0'; } template <size_t bufsz> void FormatBuffer<bufsz>::print(const char * format, ...) {
*** 91,100 **** --- 105,115 ---- va_end(argp); } // Used to format messages for assert(), guarantee(), fatal(), etc. typedef FormatBuffer<> err_msg; + typedef FormatBufferResource err_msg_res; // assertions #ifdef ASSERT #ifndef USE_REPEATED_ASSERTS #define assert(p, msg) \
src/share/vm/utilities/debug.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File