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