< prev index next >
src/share/vm/utilities/debug.cpp
Print this page
*** 79,92 ****
#endif // PRODUCT
PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
FormatBufferResource::FormatBufferResource(const char * format, ...)
! : FormatBufferBase((char*)resource_allocate_bytes(RES_BUFSZ)) {
va_list argp;
va_start(argp, format);
! jio_vsnprintf(_buf, RES_BUFSZ, format, argp);
va_end(argp);
}
ATTRIBUTE_PRINTF(1, 2)
void warning(const char* format, ...) {
--- 79,92 ----
#endif // PRODUCT
PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
FormatBufferResource::FormatBufferResource(const char * format, ...)
! : FormatBufferBase((char*)resource_allocate_bytes(FormatBufferBase::BufferSize)) {
va_list argp;
va_start(argp, format);
! jio_vsnprintf(_buf, FormatBufferBase::BufferSize, format, argp);
va_end(argp);
}
ATTRIBUTE_PRINTF(1, 2)
void warning(const char* format, ...) {
*** 205,234 ****
// Place-holder for non-existent suppression check:
#define error_is_suppressed(file_name, line_no) (false)
#endif // !PRODUCT
! void report_vm_error(const char* file, int line, const char* error_msg,
! const char* detail_msg)
{
if (Debugging || error_is_suppressed(file, line)) return;
! Thread* const thread = ThreadLocalStorage::get_thread_slow();
! VMError err(thread, file, line, error_msg, detail_msg);
! err.report_and_die();
}
! void report_fatal(const char* file, int line, const char* message)
{
! report_vm_error(file, line, "fatal error", message);
}
void report_vm_out_of_memory(const char* file, int line, size_t size,
! VMErrorType vm_err_type, const char* message) {
if (Debugging) return;
!
! Thread* thread = ThreadLocalStorage::get_thread_slow();
! VMError(thread, file, line, size, vm_err_type, message).report_and_die();
// The UseOSErrorReporting option in report_and_die() may allow a return
// to here. If so then we'll have to figure out how to handle it.
guarantee(false, "report_and_die() should not return here");
}
--- 205,244 ----
// Place-holder for non-existent suppression check:
#define error_is_suppressed(file_name, line_no) (false)
#endif // !PRODUCT
! void report_vm_error(const char* file, int line, const char* error_msg)
! {
! report_vm_error(file, line, error_msg, "%s", "");
! }
!
! void report_vm_error(const char* file, int line, const char* error_msg, const char* detail_fmt, ...)
{
if (Debugging || error_is_suppressed(file, line)) return;
! va_list detail_args;
! va_start(detail_args, detail_fmt);
! VMError::report_and_die(ThreadLocalStorage::get_thread_slow(), file, line, error_msg, detail_fmt, detail_args);
! va_end(detail_args);
}
! void report_fatal(const char* file, int line, const char* detail_fmt, ...)
{
! if (Debugging || error_is_suppressed(file, line)) return;
! va_list detail_args;
! va_start(detail_args, detail_fmt);
! VMError::report_and_die(ThreadLocalStorage::get_thread_slow(), file, line, "fatal error", detail_fmt, detail_args);
! va_end(detail_args);
}
void report_vm_out_of_memory(const char* file, int line, size_t size,
! VMErrorType vm_err_type, const char* detail_fmt, ...) {
if (Debugging) return;
! va_list detail_args;
! va_start(detail_args, detail_fmt);
! VMError::report_and_die(ThreadLocalStorage::get_thread_slow(), file, line, size, vm_err_type, detail_fmt, detail_args);
! va_end(detail_args);
// The UseOSErrorReporting option in report_and_die() may allow a return
// to here. If so then we'll have to figure out how to handle it.
guarantee(false, "report_and_die() should not return here");
}
*** 293,304 ****
tty->print_cr("java.lang.OutOfMemoryError: %s", message);
HeapDumper::dump_heap_from_oome();
}
if (OnOutOfMemoryError && OnOutOfMemoryError[0]) {
! VMError err(message);
! err.report_java_out_of_memory();
}
}
}
static bool error_reported = false;
--- 303,313 ----
tty->print_cr("java.lang.OutOfMemoryError: %s", message);
HeapDumper::dump_heap_from_oome();
}
if (OnOutOfMemoryError && OnOutOfMemoryError[0]) {
! VMError::report_java_out_of_memory(message);
}
}
}
static bool error_reported = false;
*** 367,388 ****
// Keep this in sync with test/runtime/6888954/vmerrors.sh.
switch (how) {
case 1: vmassert(str == NULL, "expected null");
case 2: vmassert(num == 1023 && *str == 'X',
! err_msg("num=" SIZE_FORMAT " str=\"%s\"", num, str));
case 3: guarantee(str == NULL, "expected null");
case 4: guarantee(num == 1023 && *str == 'X',
! err_msg("num=" SIZE_FORMAT " str=\"%s\"", num, str));
case 5: fatal("expected null");
! case 6: fatal(err_msg("num=" SIZE_FORMAT " str=\"%s\"", num, str));
! case 7: fatal(err_msg("%s%s# %s%s# %s%s# %s%s# %s%s# "
"%s%s# %s%s# %s%s# %s%s# %s%s# "
"%s%s# %s%s# %s%s# %s%s# %s",
msg, eol, msg, eol, msg, eol, msg, eol, msg, eol,
msg, eol, msg, eol, msg, eol, msg, eol, msg, eol,
! msg, eol, msg, eol, msg, eol, msg, eol, msg));
case 8: vm_exit_out_of_memory(num, OOM_MALLOC_ERROR, "ChunkPool::allocate");
case 9: ShouldNotCallThis();
case 10: ShouldNotReachHere();
case 11: Unimplemented();
// There's no guarantee the bad data pointer will crash us
--- 376,397 ----
// Keep this in sync with test/runtime/6888954/vmerrors.sh.
switch (how) {
case 1: vmassert(str == NULL, "expected null");
case 2: vmassert(num == 1023 && *str == 'X',
! "num=" SIZE_FORMAT " str=\"%s\"", num, str);
case 3: guarantee(str == NULL, "expected null");
case 4: guarantee(num == 1023 && *str == 'X',
! "num=" SIZE_FORMAT " str=\"%s\"", num, str);
case 5: fatal("expected null");
! case 6: fatal("num=" SIZE_FORMAT " str=\"%s\"", num, str);
! case 7: fatal("%s%s# %s%s# %s%s# %s%s# %s%s# "
"%s%s# %s%s# %s%s# %s%s# %s%s# "
"%s%s# %s%s# %s%s# %s%s# %s",
msg, eol, msg, eol, msg, eol, msg, eol, msg, eol,
msg, eol, msg, eol, msg, eol, msg, eol, msg, eol,
! msg, eol, msg, eol, msg, eol, msg, eol, msg);
case 8: vm_exit_out_of_memory(num, OOM_MALLOC_ERROR, "ChunkPool::allocate");
case 9: ShouldNotCallThis();
case 10: ShouldNotReachHere();
case 11: Unimplemented();
// There's no guarantee the bad data pointer will crash us
< prev index next >