hotspot/src/share/vm/utilities/debug.hpp
author tonyp
Wed, 19 Jan 2011 19:30:42 -0500
changeset 7923 fc200fcd4e05
parent 7397 5b173b4ca846
child 8076 96d498ec7ae1
permissions -rw-r--r--
6977804: G1: remove the zero-filling thread Summary: This changeset removes the zero-filling thread from G1 and collapses the two free region lists we had before (the "free" and "unclean" lists) into one. The new free list uses the new heap region sets / lists abstractions that we'll ultimately use it to keep track of all regions in the heap. A heap region set was also introduced for the humongous regions. Finally, this change increases the concurrency between the thread that completes freeing regions (after a cleanup pause) and the rest of the system (before we'd have to wait for said thread to complete before allocating a new region). The changest also includes a lot of refactoring and code simplification. Reviewed-by: jcoomes, johnc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
     1
/*
7397
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 5547
diff changeset
     2
 * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
489c9b5090e2 Initial load
duke
parents:
diff changeset
     4
 *
489c9b5090e2 Initial load
duke
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
489c9b5090e2 Initial load
duke
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
489c9b5090e2 Initial load
duke
parents:
diff changeset
     7
 * published by the Free Software Foundation.
489c9b5090e2 Initial load
duke
parents:
diff changeset
     8
 *
489c9b5090e2 Initial load
duke
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
489c9b5090e2 Initial load
duke
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
489c9b5090e2 Initial load
duke
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
489c9b5090e2 Initial load
duke
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
489c9b5090e2 Initial load
duke
parents:
diff changeset
    13
 * accompanied this code).
489c9b5090e2 Initial load
duke
parents:
diff changeset
    14
 *
489c9b5090e2 Initial load
duke
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
489c9b5090e2 Initial load
duke
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
489c9b5090e2 Initial load
duke
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
489c9b5090e2 Initial load
duke
parents:
diff changeset
    18
 *
5547
f4b087cbb361 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 5403
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
f4b087cbb361 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 5403
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
f4b087cbb361 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 5403
diff changeset
    21
 * questions.
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    22
 *
489c9b5090e2 Initial load
duke
parents:
diff changeset
    23
 */
489c9b5090e2 Initial load
duke
parents:
diff changeset
    24
7397
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 5547
diff changeset
    25
#ifndef SHARE_VM_UTILITIES_DEBUG_HPP
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 5547
diff changeset
    26
#define SHARE_VM_UTILITIES_DEBUG_HPP
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 5547
diff changeset
    27
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 5547
diff changeset
    28
#include "utilities/globalDefinitions.hpp"
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 5547
diff changeset
    29
5403
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    30
#include <stdarg.h>
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    31
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    32
// Simple class to format the ctor arguments into a fixed-sized buffer.
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    33
template <size_t bufsz = 256>
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    34
class FormatBuffer {
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    35
public:
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    36
  inline FormatBuffer(const char * format, ...);
7923
fc200fcd4e05 6977804: G1: remove the zero-filling thread
tonyp
parents: 7397
diff changeset
    37
  inline void append(const char* format, ...);
5403
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    38
  operator const char *() const { return _buf; }
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    39
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    40
private:
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    41
  FormatBuffer(const FormatBuffer &); // prevent copies
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    42
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    43
private:
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    44
  char _buf[bufsz];
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    45
};
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    46
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    47
template <size_t bufsz>
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    48
FormatBuffer<bufsz>::FormatBuffer(const char * format, ...) {
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    49
  va_list argp;
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    50
  va_start(argp, format);
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    51
  vsnprintf(_buf, bufsz, format, argp);
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    52
  va_end(argp);
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    53
}
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    54
7923
fc200fcd4e05 6977804: G1: remove the zero-filling thread
tonyp
parents: 7397
diff changeset
    55
template <size_t bufsz>
fc200fcd4e05 6977804: G1: remove the zero-filling thread
tonyp
parents: 7397
diff changeset
    56
void FormatBuffer<bufsz>::append(const char* format, ...) {
fc200fcd4e05 6977804: G1: remove the zero-filling thread
tonyp
parents: 7397
diff changeset
    57
  // Given that the constructor does a vsnprintf we can assume that
fc200fcd4e05 6977804: G1: remove the zero-filling thread
tonyp
parents: 7397
diff changeset
    58
  // _buf is already initialized.
fc200fcd4e05 6977804: G1: remove the zero-filling thread
tonyp
parents: 7397
diff changeset
    59
  size_t len = strlen(_buf);
fc200fcd4e05 6977804: G1: remove the zero-filling thread
tonyp
parents: 7397
diff changeset
    60
  char* buf_end = _buf + len;
fc200fcd4e05 6977804: G1: remove the zero-filling thread
tonyp
parents: 7397
diff changeset
    61
fc200fcd4e05 6977804: G1: remove the zero-filling thread
tonyp
parents: 7397
diff changeset
    62
  va_list argp;
fc200fcd4e05 6977804: G1: remove the zero-filling thread
tonyp
parents: 7397
diff changeset
    63
  va_start(argp, format);
fc200fcd4e05 6977804: G1: remove the zero-filling thread
tonyp
parents: 7397
diff changeset
    64
  vsnprintf(buf_end, bufsz - len, format, argp);
fc200fcd4e05 6977804: G1: remove the zero-filling thread
tonyp
parents: 7397
diff changeset
    65
  va_end(argp);
fc200fcd4e05 6977804: G1: remove the zero-filling thread
tonyp
parents: 7397
diff changeset
    66
}
fc200fcd4e05 6977804: G1: remove the zero-filling thread
tonyp
parents: 7397
diff changeset
    67
5403
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    68
// Used to format messages for assert(), guarantee(), fatal(), etc.
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    69
typedef FormatBuffer<> err_msg;
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    70
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    71
// assertions
489c9b5090e2 Initial load
duke
parents:
diff changeset
    72
#ifdef ASSERT
5403
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    73
#ifndef USE_REPEATED_ASSERTS
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    74
#define assert(p, msg)                                                       \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    75
do {                                                                         \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    76
  if (!(p)) {                                                                \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    77
    report_vm_error(__FILE__, __LINE__, "assert(" #p ") failed", msg);       \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    78
    BREAKPOINT;                                                              \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    79
  }                                                                          \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    80
} while (0)
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    81
#else // #ifndef USE_REPEATED_ASSERTS
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    82
#define assert(p, msg)
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    83
do {                                                                         \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    84
  for (int __i = 0; __i < AssertRepeat; __i++) {                             \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    85
    if (!(p)) {                                                              \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    86
      report_vm_error(__FILE__, __LINE__, "assert(" #p ") failed", msg);     \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    87
      BREAKPOINT;                                                            \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    88
    }                                                                        \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    89
  }                                                                          \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    90
} while (0)
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
    91
#endif // #ifndef USE_REPEATED_ASSERTS
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    92
489c9b5090e2 Initial load
duke
parents:
diff changeset
    93
// This version of assert is for use with checking return status from
489c9b5090e2 Initial load
duke
parents:
diff changeset
    94
// library calls that return actual error values eg. EINVAL,
489c9b5090e2 Initial load
duke
parents:
diff changeset
    95
// ENOMEM etc, rather than returning -1 and setting errno.
489c9b5090e2 Initial load
duke
parents:
diff changeset
    96
// When the status is not what is expected it is very useful to know
489c9b5090e2 Initial load
duke
parents:
diff changeset
    97
// what status was actually returned, so we pass the status variable as
489c9b5090e2 Initial load
duke
parents:
diff changeset
    98
// an extra arg and use strerror to convert it to a meaningful string
489c9b5090e2 Initial load
duke
parents:
diff changeset
    99
// like "Invalid argument", "out of memory" etc
5403
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   100
#define assert_status(p, status, msg)                                        \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   101
do {                                                                         \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   102
  if (!(p)) {                                                                \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   103
    report_vm_error(__FILE__, __LINE__, "assert(" #p ") failed",             \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   104
                    err_msg("error %s(%d) %s", strerror(status),             \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   105
                            status, msg));                                   \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   106
    BREAKPOINT;                                                              \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   107
  }                                                                          \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   108
} while (0)
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   109
489c9b5090e2 Initial load
duke
parents:
diff changeset
   110
// Do not assert this condition if there's already another error reported.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   111
#define assert_if_no_error(cond,msg) assert((cond) || is_error_reported(), msg)
5403
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   112
#else // #ifdef ASSERT
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   113
  #define assert(p,msg)
489c9b5090e2 Initial load
duke
parents:
diff changeset
   114
  #define assert_status(p,status,msg)
489c9b5090e2 Initial load
duke
parents:
diff changeset
   115
  #define assert_if_no_error(cond,msg)
5403
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   116
#endif // #ifdef ASSERT
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   117
489c9b5090e2 Initial load
duke
parents:
diff changeset
   118
// guarantee is like assert except it's always executed -- use it for
5403
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   119
// cheap tests that catch errors that would otherwise be hard to find.
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   120
// guarantee is also used for Verify options.
5403
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   121
#define guarantee(p, msg)                                                    \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   122
do {                                                                         \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   123
  if (!(p)) {                                                                \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   124
    report_vm_error(__FILE__, __LINE__, "guarantee(" #p ") failed", msg);    \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   125
    BREAKPOINT;                                                              \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   126
  }                                                                          \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   127
} while (0)
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   128
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   129
#define fatal(msg)                                                           \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   130
do {                                                                         \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   131
  report_fatal(__FILE__, __LINE__, msg);                                     \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   132
  BREAKPOINT;                                                                \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   133
} while (0)
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   134
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   135
// out of memory
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   136
#define vm_exit_out_of_memory(size, msg)                                     \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   137
do {                                                                         \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   138
  report_vm_out_of_memory(__FILE__, __LINE__, size, msg);                    \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   139
  BREAKPOINT;                                                                \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   140
} while (0)
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   141
5403
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   142
#define ShouldNotCallThis()                                                  \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   143
do {                                                                         \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   144
  report_should_not_call(__FILE__, __LINE__);                                \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   145
  BREAKPOINT;                                                                \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   146
} while (0)
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   147
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   148
#define ShouldNotReachHere()                                                 \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   149
do {                                                                         \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   150
  report_should_not_reach_here(__FILE__, __LINE__);                          \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   151
  BREAKPOINT;                                                                \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   152
} while (0)
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   153
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   154
#define Unimplemented()                                                      \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   155
do {                                                                         \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   156
  report_unimplemented(__FILE__, __LINE__);                                  \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   157
  BREAKPOINT;                                                                \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   158
} while (0)
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   159
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   160
#define Untested(msg)                                                        \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   161
do {                                                                         \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   162
  report_untested(__FILE__, __LINE__, msg);                                  \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   163
  BREAKPOINT;                                                                \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   164
} while (0);
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   165
489c9b5090e2 Initial load
duke
parents:
diff changeset
   166
// error reporting helper functions
5403
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   167
void report_vm_error(const char* file, int line, const char* error_msg,
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   168
                     const char* detail_msg = NULL);
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   169
void report_fatal(const char* file, int line, const char* message);
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   170
void report_vm_out_of_memory(const char* file, int line, size_t size,
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   171
                             const char* message);
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   172
void report_should_not_call(const char* file, int line);
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   173
void report_should_not_reach_here(const char* file, int line);
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   174
void report_unimplemented(const char* file, int line);
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   175
void report_untested(const char* file, int line, const char* message);
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   176
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   177
void warning(const char* format, ...);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   178
489c9b5090e2 Initial load
duke
parents:
diff changeset
   179
// out of memory reporting
489c9b5090e2 Initial load
duke
parents:
diff changeset
   180
void report_java_out_of_memory(const char* message);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   181
489c9b5090e2 Initial load
duke
parents:
diff changeset
   182
// Support for self-destruct
489c9b5090e2 Initial load
duke
parents:
diff changeset
   183
bool is_error_reported();
489c9b5090e2 Initial load
duke
parents:
diff changeset
   184
void set_error_reported();
489c9b5090e2 Initial load
duke
parents:
diff changeset
   185
5403
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   186
/* Test assert(), fatal(), guarantee(), etc. */
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   187
NOT_PRODUCT(void test_error_handler(size_t test_num);)
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 1
diff changeset
   188
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   189
void pd_ps(frame f);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   190
void pd_obfuscate_location(char *buf, size_t buflen);
7397
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 5547
diff changeset
   191
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 5547
diff changeset
   192
#endif // SHARE_VM_UTILITIES_DEBUG_HPP