author | weijun |
Tue, 21 May 2019 08:37:30 +0800 | |
changeset 58618 | a95e1f6757c7 |
parent 55653 | 3243c42d737d |
permissions | -rw-r--r-- |
1 | 1 |
/* |
53244
9807daeb47c4
8216167: Update include guards to reflect correct directories
coleenp
parents:
49653
diff
changeset
|
2 |
* Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved. |
1 | 3 |
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 |
* |
|
5 |
* This code is free software; you can redistribute it and/or modify it |
|
6 |
* under the terms of the GNU General Public License version 2 only, as |
|
7 |
* published by the Free Software Foundation. |
|
8 |
* |
|
9 |
* This code is distributed in the hope that it will be useful, but WITHOUT |
|
10 |
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
11 |
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
12 |
* version 2 for more details (a copy is included in the LICENSE file that |
|
13 |
* accompanied this code). |
|
14 |
* |
|
15 |
* You should have received a copy of the GNU General Public License version |
|
16 |
* 2 along with this work; if not, write to the Free Software Foundation, |
|
17 |
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
|
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 | 22 |
* |
23 |
*/ |
|
24 |
||
53244
9807daeb47c4
8216167: Update include guards to reflect correct directories
coleenp
parents:
49653
diff
changeset
|
25 |
#ifndef SHARE_UTILITIES_DEBUG_HPP |
9807daeb47c4
8216167: Update include guards to reflect correct directories
coleenp
parents:
49653
diff
changeset
|
26 |
#define SHARE_UTILITIES_DEBUG_HPP |
7397 | 27 |
|
46560
388aa8d67c80
8181449: Fix debug.hpp / globalDefinitions.hpp dependency inversion
kbarrett
parents:
44408
diff
changeset
|
28 |
#include "utilities/breakpoint.hpp" |
388aa8d67c80
8181449: Fix debug.hpp / globalDefinitions.hpp dependency inversion
kbarrett
parents:
44408
diff
changeset
|
29 |
#include "utilities/compilerWarnings.hpp" |
388aa8d67c80
8181449: Fix debug.hpp / globalDefinitions.hpp dependency inversion
kbarrett
parents:
44408
diff
changeset
|
30 |
#include "utilities/macros.hpp" |
5403
6b0dd9c75dde
6888954: argument formatting for assert() and friends
jcoomes
parents:
1
diff
changeset
|
31 |
|
46560
388aa8d67c80
8181449: Fix debug.hpp / globalDefinitions.hpp dependency inversion
kbarrett
parents:
44408
diff
changeset
|
32 |
#include <stddef.h> |
5403
6b0dd9c75dde
6888954: argument formatting for assert() and friends
jcoomes
parents:
1
diff
changeset
|
33 |
|
49653
a569cb4425f3
8191101: Show register content in hs-err file on assert
stuefe
parents:
47216
diff
changeset
|
34 |
// ShowRegistersOnAssert support (for now Linux only) |
a569cb4425f3
8191101: Show register content in hs-err file on assert
stuefe
parents:
47216
diff
changeset
|
35 |
#if defined(LINUX) && !defined(ZERO) |
a569cb4425f3
8191101: Show register content in hs-err file on assert
stuefe
parents:
47216
diff
changeset
|
36 |
#define CAN_SHOW_REGISTERS_ON_ASSERT |
a569cb4425f3
8191101: Show register content in hs-err file on assert
stuefe
parents:
47216
diff
changeset
|
37 |
extern char* g_assert_poison; |
a569cb4425f3
8191101: Show register content in hs-err file on assert
stuefe
parents:
47216
diff
changeset
|
38 |
#define TOUCH_ASSERT_POISON (*g_assert_poison) = 'X'; |
a569cb4425f3
8191101: Show register content in hs-err file on assert
stuefe
parents:
47216
diff
changeset
|
39 |
void initialize_assert_poison(); |
55653
3243c42d737d
8227275: Within native OOM error handling, assertions may hang the process
stuefe
parents:
54701
diff
changeset
|
40 |
void disarm_assert_poison(); |
49653
a569cb4425f3
8191101: Show register content in hs-err file on assert
stuefe
parents:
47216
diff
changeset
|
41 |
bool handle_assert_poison_fault(const void* ucVoid, const void* faulting_address); |
a569cb4425f3
8191101: Show register content in hs-err file on assert
stuefe
parents:
47216
diff
changeset
|
42 |
#else |
a569cb4425f3
8191101: Show register content in hs-err file on assert
stuefe
parents:
47216
diff
changeset
|
43 |
#define TOUCH_ASSERT_POISON |
a569cb4425f3
8191101: Show register content in hs-err file on assert
stuefe
parents:
47216
diff
changeset
|
44 |
#endif // CAN_SHOW_REGISTERS_ON_ASSERT |
a569cb4425f3
8191101: Show register content in hs-err file on assert
stuefe
parents:
47216
diff
changeset
|
45 |
|
1 | 46 |
// assertions |
28477 | 47 |
#ifndef ASSERT |
33105
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
48 |
#define vmassert(p, ...) |
28477 | 49 |
#else |
50 |
// Note: message says "assert" rather than "vmassert" for backward |
|
51 |
// compatibility with tools that parse/match the message text. |
|
33105
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
52 |
// Note: The signature is vmassert(p, format, ...), but the solaris |
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
53 |
// compiler can't handle an empty ellipsis in a macro without a warning. |
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
54 |
#define vmassert(p, ...) \ |
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
55 |
do { \ |
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
56 |
if (!(p)) { \ |
49653
a569cb4425f3
8191101: Show register content in hs-err file on assert
stuefe
parents:
47216
diff
changeset
|
57 |
TOUCH_ASSERT_POISON; \ |
33105
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
58 |
report_vm_error(__FILE__, __LINE__, "assert(" #p ") failed", __VA_ARGS__); \ |
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
59 |
BREAKPOINT; \ |
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
60 |
} \ |
5403
6b0dd9c75dde
6888954: argument formatting for assert() and friends
jcoomes
parents:
1
diff
changeset
|
61 |
} while (0) |
28477 | 62 |
#endif |
1 | 63 |
|
28477 | 64 |
// For backward compatibility. |
33105
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
65 |
#define assert(p, ...) vmassert(p, __VA_ARGS__) |
28477 | 66 |
|
54701 | 67 |
#define precond(p) assert(p, "precond") |
68 |
#define postcond(p) assert(p, "postcond") |
|
69 |
||
44408 | 70 |
#ifndef ASSERT |
71 |
#define vmassert_status(p, status, msg) |
|
72 |
#else |
|
28477 | 73 |
// This version of vmassert is for use with checking return status from |
1 | 74 |
// library calls that return actual error values eg. EINVAL, |
75 |
// ENOMEM etc, rather than returning -1 and setting errno. |
|
76 |
// When the status is not what is expected it is very useful to know |
|
77 |
// what status was actually returned, so we pass the status variable as |
|
78 |
// an extra arg and use strerror to convert it to a meaningful string |
|
79 |
// like "Invalid argument", "out of memory" etc |
|
28477 | 80 |
#define vmassert_status(p, status, msg) \ |
37113 | 81 |
do { \ |
82 |
if (!(p)) { \ |
|
49653
a569cb4425f3
8191101: Show register content in hs-err file on assert
stuefe
parents:
47216
diff
changeset
|
83 |
TOUCH_ASSERT_POISON; \ |
37113 | 84 |
report_vm_status_error(__FILE__, __LINE__, "assert(" #p ") failed", \ |
85 |
status, msg); \ |
|
86 |
BREAKPOINT; \ |
|
87 |
} \ |
|
88 |
} while (0) |
|
44408 | 89 |
#endif |
1 | 90 |
|
28477 | 91 |
// For backward compatibility. |
92 |
#define assert_status(p, status, msg) vmassert_status(p, status, msg) |
|
1 | 93 |
|
28477 | 94 |
// guarantee is like vmassert except it's always executed -- use it for |
5403
6b0dd9c75dde
6888954: argument formatting for assert() and friends
jcoomes
parents:
1
diff
changeset
|
95 |
// cheap tests that catch errors that would otherwise be hard to find. |
1 | 96 |
// guarantee is also used for Verify options. |
33105
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
97 |
#define guarantee(p, ...) \ |
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
98 |
do { \ |
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
99 |
if (!(p)) { \ |
49653
a569cb4425f3
8191101: Show register content in hs-err file on assert
stuefe
parents:
47216
diff
changeset
|
100 |
TOUCH_ASSERT_POISON; \ |
33105
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
101 |
report_vm_error(__FILE__, __LINE__, "guarantee(" #p ") failed", __VA_ARGS__); \ |
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
102 |
BREAKPOINT; \ |
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
103 |
} \ |
5403
6b0dd9c75dde
6888954: argument formatting for assert() and friends
jcoomes
parents:
1
diff
changeset
|
104 |
} while (0) |
6b0dd9c75dde
6888954: argument formatting for assert() and friends
jcoomes
parents:
1
diff
changeset
|
105 |
|
33105
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
106 |
#define fatal(...) \ |
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
107 |
do { \ |
49653
a569cb4425f3
8191101: Show register content in hs-err file on assert
stuefe
parents:
47216
diff
changeset
|
108 |
TOUCH_ASSERT_POISON; \ |
33105
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
109 |
report_fatal(__FILE__, __LINE__, __VA_ARGS__); \ |
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
110 |
BREAKPOINT; \ |
5403
6b0dd9c75dde
6888954: argument formatting for assert() and friends
jcoomes
parents:
1
diff
changeset
|
111 |
} while (0) |
6b0dd9c75dde
6888954: argument formatting for assert() and friends
jcoomes
parents:
1
diff
changeset
|
112 |
|
6b0dd9c75dde
6888954: argument formatting for assert() and friends
jcoomes
parents:
1
diff
changeset
|
113 |
// out of memory |
33105
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
114 |
#define vm_exit_out_of_memory(size, vm_err_type, ...) \ |
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
115 |
do { \ |
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
116 |
report_vm_out_of_memory(__FILE__, __LINE__, size, vm_err_type, __VA_ARGS__); \ |
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
117 |
BREAKPOINT; \ |
5403
6b0dd9c75dde
6888954: argument formatting for assert() and friends
jcoomes
parents:
1
diff
changeset
|
118 |
} while (0) |
1 | 119 |
|
33105
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
120 |
#define ShouldNotCallThis() \ |
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
121 |
do { \ |
49653
a569cb4425f3
8191101: Show register content in hs-err file on assert
stuefe
parents:
47216
diff
changeset
|
122 |
TOUCH_ASSERT_POISON; \ |
33105
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
123 |
report_should_not_call(__FILE__, __LINE__); \ |
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
124 |
BREAKPOINT; \ |
5403
6b0dd9c75dde
6888954: argument formatting for assert() and friends
jcoomes
parents:
1
diff
changeset
|
125 |
} while (0) |
6b0dd9c75dde
6888954: argument formatting for assert() and friends
jcoomes
parents:
1
diff
changeset
|
126 |
|
33105
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
127 |
#define ShouldNotReachHere() \ |
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
128 |
do { \ |
49653
a569cb4425f3
8191101: Show register content in hs-err file on assert
stuefe
parents:
47216
diff
changeset
|
129 |
TOUCH_ASSERT_POISON; \ |
33105
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
130 |
report_should_not_reach_here(__FILE__, __LINE__); \ |
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
131 |
BREAKPOINT; \ |
5403
6b0dd9c75dde
6888954: argument formatting for assert() and friends
jcoomes
parents:
1
diff
changeset
|
132 |
} while (0) |
6b0dd9c75dde
6888954: argument formatting for assert() and friends
jcoomes
parents:
1
diff
changeset
|
133 |
|
33105
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
134 |
#define Unimplemented() \ |
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
135 |
do { \ |
49653
a569cb4425f3
8191101: Show register content in hs-err file on assert
stuefe
parents:
47216
diff
changeset
|
136 |
TOUCH_ASSERT_POISON; \ |
33105
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
137 |
report_unimplemented(__FILE__, __LINE__); \ |
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
138 |
BREAKPOINT; \ |
5403
6b0dd9c75dde
6888954: argument formatting for assert() and friends
jcoomes
parents:
1
diff
changeset
|
139 |
} while (0) |
6b0dd9c75dde
6888954: argument formatting for assert() and friends
jcoomes
parents:
1
diff
changeset
|
140 |
|
33105
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
141 |
#define Untested(msg) \ |
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
142 |
do { \ |
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
143 |
report_untested(__FILE__, __LINE__, msg); \ |
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
144 |
BREAKPOINT; \ |
5403
6b0dd9c75dde
6888954: argument formatting for assert() and friends
jcoomes
parents:
1
diff
changeset
|
145 |
} while (0); |
1 | 146 |
|
17087
f0b76c4c93a0
8011661: Insufficient memory message says "malloc" when sometimes it should say "mmap"
ccheung
parents:
16370
diff
changeset
|
147 |
|
f0b76c4c93a0
8011661: Insufficient memory message says "malloc" when sometimes it should say "mmap"
ccheung
parents:
16370
diff
changeset
|
148 |
// types of VM error - originally in vmError.hpp |
f0b76c4c93a0
8011661: Insufficient memory message says "malloc" when sometimes it should say "mmap"
ccheung
parents:
16370
diff
changeset
|
149 |
enum VMErrorType { |
f0b76c4c93a0
8011661: Insufficient memory message says "malloc" when sometimes it should say "mmap"
ccheung
parents:
16370
diff
changeset
|
150 |
INTERNAL_ERROR = 0xe0000000, |
f0b76c4c93a0
8011661: Insufficient memory message says "malloc" when sometimes it should say "mmap"
ccheung
parents:
16370
diff
changeset
|
151 |
OOM_MALLOC_ERROR = 0xe0000001, |
f0b76c4c93a0
8011661: Insufficient memory message says "malloc" when sometimes it should say "mmap"
ccheung
parents:
16370
diff
changeset
|
152 |
OOM_MMAP_ERROR = 0xe0000002 |
f0b76c4c93a0
8011661: Insufficient memory message says "malloc" when sometimes it should say "mmap"
ccheung
parents:
16370
diff
changeset
|
153 |
}; |
f0b76c4c93a0
8011661: Insufficient memory message says "malloc" when sometimes it should say "mmap"
ccheung
parents:
16370
diff
changeset
|
154 |
|
1 | 155 |
// error reporting helper functions |
33105
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
156 |
void report_vm_error(const char* file, int line, const char* error_msg); |
33142
399fdb935d28
8138733: Fix build: gcc < 4.8 doesn't grok -Wno-format-zero-length added in 8080775
goetz
parents:
33105
diff
changeset
|
157 |
#if !defined(__GNUC__) || defined (__clang_major__) || (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 8)) || __GNUC__ > 4) |
399fdb935d28
8138733: Fix build: gcc < 4.8 doesn't grok -Wno-format-zero-length added in 8080775
goetz
parents:
33105
diff
changeset
|
158 |
// ATTRIBUTE_PRINTF works with gcc >= 4.8 and any other compiler. |
5403
6b0dd9c75dde
6888954: argument formatting for assert() and friends
jcoomes
parents:
1
diff
changeset
|
159 |
void report_vm_error(const char* file, int line, const char* error_msg, |
33105
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
160 |
const char* detail_fmt, ...) ATTRIBUTE_PRINTF(4, 5); |
33142
399fdb935d28
8138733: Fix build: gcc < 4.8 doesn't grok -Wno-format-zero-length added in 8080775
goetz
parents:
33105
diff
changeset
|
161 |
#else |
399fdb935d28
8138733: Fix build: gcc < 4.8 doesn't grok -Wno-format-zero-length added in 8080775
goetz
parents:
33105
diff
changeset
|
162 |
// GCC < 4.8 warns because of empty format string. Warning can not be switched off selectively. |
399fdb935d28
8138733: Fix build: gcc < 4.8 doesn't grok -Wno-format-zero-length added in 8080775
goetz
parents:
33105
diff
changeset
|
163 |
void report_vm_error(const char* file, int line, const char* error_msg, |
399fdb935d28
8138733: Fix build: gcc < 4.8 doesn't grok -Wno-format-zero-length added in 8080775
goetz
parents:
33105
diff
changeset
|
164 |
const char* detail_fmt, ...); |
399fdb935d28
8138733: Fix build: gcc < 4.8 doesn't grok -Wno-format-zero-length added in 8080775
goetz
parents:
33105
diff
changeset
|
165 |
#endif |
37113 | 166 |
void report_vm_status_error(const char* file, int line, const char* error_msg, |
167 |
int status, const char* detail); |
|
33105
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
168 |
void report_fatal(const char* file, int line, const char* detail_fmt, ...) ATTRIBUTE_PRINTF(3, 4); |
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
169 |
void report_vm_out_of_memory(const char* file, int line, size_t size, VMErrorType vm_err_type, |
294e48b4f704
8080775: Better argument formatting for assert() and friends
david
parents:
31340
diff
changeset
|
170 |
const char* detail_fmt, ...) ATTRIBUTE_PRINTF(5, 6); |
5403
6b0dd9c75dde
6888954: argument formatting for assert() and friends
jcoomes
parents:
1
diff
changeset
|
171 |
void report_should_not_call(const char* file, int line); |
6b0dd9c75dde
6888954: argument formatting for assert() and friends
jcoomes
parents:
1
diff
changeset
|
172 |
void report_should_not_reach_here(const char* file, int line); |
6b0dd9c75dde
6888954: argument formatting for assert() and friends
jcoomes
parents:
1
diff
changeset
|
173 |
void report_unimplemented(const char* file, int line); |
6b0dd9c75dde
6888954: argument formatting for assert() and friends
jcoomes
parents:
1
diff
changeset
|
174 |
void report_untested(const char* file, int line, const char* message); |
6b0dd9c75dde
6888954: argument formatting for assert() and friends
jcoomes
parents:
1
diff
changeset
|
175 |
|
24424
2658d7834c6e
8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents:
23515
diff
changeset
|
176 |
void warning(const char* format, ...) ATTRIBUTE_PRINTF(1, 2); |
1 | 177 |
|
28480 | 178 |
// Compile-time asserts. Cond must be a compile-time constant expression that |
179 |
// is convertible to bool. STATIC_ASSERT() can be used anywhere a declaration |
|
180 |
// may appear. |
|
181 |
// |
|
182 |
// Implementation Note: STATIC_ASSERT_FAILURE<true> provides a value member |
|
183 |
// rather than type member that could be used directly in the typedef, because |
|
184 |
// a type member would require conditional use of "typename", depending on |
|
185 |
// whether Cond is dependent or not. The use of a value member leads to the |
|
186 |
// use of an array type. |
|
19285
0a3b3f115402
8022880: False sharing between PSPromotionManager instances
stefank
parents:
18683
diff
changeset
|
187 |
|
28480 | 188 |
template<bool x> struct STATIC_ASSERT_FAILURE; |
189 |
template<> struct STATIC_ASSERT_FAILURE<true> { enum { value = 1 }; }; |
|
190 |
||
29691 | 191 |
#define STATIC_ASSERT(Cond) \ |
31340
2f9ff278bb13
8086027: Multiple STATIC_ASSERTs at class scope doesn't work
kbarrett
parents:
29691
diff
changeset
|
192 |
typedef char PASTE_TOKENS(STATIC_ASSERT_DUMMY_TYPE_, __LINE__)[ \ |
2f9ff278bb13
8086027: Multiple STATIC_ASSERTs at class scope doesn't work
kbarrett
parents:
29691
diff
changeset
|
193 |
STATIC_ASSERT_FAILURE< (Cond) >::value ] |
19285
0a3b3f115402
8022880: False sharing between PSPromotionManager instances
stefank
parents:
18683
diff
changeset
|
194 |
|
1 | 195 |
// out of memory reporting |
196 |
void report_java_out_of_memory(const char* message); |
|
197 |
||
53244
9807daeb47c4
8216167: Update include guards to reflect correct directories
coleenp
parents:
49653
diff
changeset
|
198 |
#endif // SHARE_UTILITIES_DEBUG_HPP |