32
33 class ShenandoahAsserts {
34 public:
35 enum SafeLevel {
36 _safe_unknown,
37 _safe_oop,
38 _safe_oop_fwd,
39 _safe_all,
40 };
41
42 static void print_obj(ShenandoahMessageBuffer &msg, oop obj);
43
44 static void print_non_obj(ShenandoahMessageBuffer &msg, void *loc);
45
46 static void print_obj_safe(ShenandoahMessageBuffer &msg, void *loc);
47
48 static void print_failure(SafeLevel level, oop obj, void *interior_loc, oop loc,
49 const char *phase, const char *label,
50 const char *file, int line);
51
52 static void print_rp_failure(const char *label, BoolObjectClosure* actual, BoolObjectClosure* expected,
53 const char *file, int line);
54
55 static void assert_in_heap(void* interior_loc, oop obj, const char* file, int line);
56 static void assert_in_correct_region(void* interior_loc, oop obj, const char* file, int line);
57
58 static void assert_correct(void* interior_loc, oop obj, const char* file, int line);
59 static void assert_forwarded(void* interior_loc, oop obj, const char* file, int line);
60 static void assert_not_forwarded(void* interior_loc, oop obj, const char* file, int line);
61 static void assert_marked_complete(void* interior_loc, oop obj, const char* file, int line);
62 static void assert_marked_next(void* interior_loc, oop obj, const char* file, int line);
63 static void assert_not_in_cset(void* interior_loc, oop obj, const char* file, int line);
64 static void assert_not_in_cset_loc(void* interior_loc, const char* file, int line);
65
66 static void assert_rp_isalive_not_installed(const char *file, int line);
67 static void assert_rp_isalive_installed(const char *file, int line);
68
69 #ifdef ASSERT
70 #define shenandoah_assert_in_heap(interior_loc, obj) \
71 ShenandoahAsserts::assert_in_heap(interior_loc, obj, __FILE__, __LINE__);
72 #define shenandoah_assert_in_correct_region(interior_loc, obj) \
73 ShenandoahAsserts::assert_in_correct_region(interior_loc, obj, __FILE__, __LINE__);
74
75 #define shenandoah_assert_correct_if(interior_loc, obj, condition) \
76 if (condition) ShenandoahAsserts::assert_correct(interior_loc, obj, __FILE__, __LINE__);
77 #define shenandoah_assert_correct_except(interior_loc, obj, exception) \
78 if (!(exception)) ShenandoahAsserts::assert_correct(interior_loc, obj, __FILE__, __LINE__);
79 #define shenandoah_assert_correct(interior_loc, obj) \
80 ShenandoahAsserts::assert_correct(interior_loc, obj, __FILE__, __LINE__);
81
82 #define shenandoah_assert_forwarded_if(interior_loc, obj, condition) \
90 if (condition) ShenandoahAsserts::assert_not_forwarded(interior_loc, obj, __FILE__, __LINE__);
91 #define shenandoah_assert_not_forwarded_except(interior_loc, obj, exception) \
92 if (!(exception)) ShenandoahAsserts::assert_not_forwarded(interior_loc, obj, __FILE__, __LINE__);
93 #define shenandoah_assert_not_forwarded(interior_loc, obj) \
94 ShenandoahAsserts::assert_not_forwarded(interior_loc, obj, __FILE__, __LINE__);
95
96 #define shenandoah_assert_marked_complete_if(interior_loc, obj, condition) \
97 if (condition) ShenandoahAsserts::assert_marked_complete(interior_loc, obj, __FILE__, __LINE__);
98 #define shenandoah_assert_marked_complete_except(interior_loc, obj, exception) \
99 if (!(exception)) ShenandoahAsserts::assert_marked_complete(interior_loc, obj, __FILE__, __LINE__);
100 #define shenandoah_assert_marked_complete(interior_loc, obj) \
101 ShenandoahAsserts::assert_marked_complete(interior_loc, obj, __FILE__, __LINE__);
102
103 #define shenandoah_assert_marked_next_if(interior_loc, obj, condition) \
104 if (condition) ShenandoahAsserts::assert_marked_next(interior_loc, obj, __FILE__, __LINE__);
105 #define shenandoah_assert_marked_next_except(interior_loc, obj, exception) \
106 if (!(exception)) ShenandoahAsserts::assert_marked_next(interior_loc, obj, __FILE__, __LINE__);
107 #define shenandoah_assert_marked_next(interior_loc, obj) \
108 ShenandoahAsserts::assert_marked_next(interior_loc, obj, __FILE__, __LINE__);
109
110 #define shenandoah_assert_not_in_cset_if(interior_loc, obj, condition) \
111 if (condition) ShenandoahAsserts::assert_not_in_cset(interior_loc, obj, __FILE__, __LINE__);
112 #define shenandoah_assert_not_in_cset_except(interior_loc, obj, exception) \
113 if (!(exception)) ShenandoahAsserts::assert_not_in_cset(interior_loc, obj, __FILE__, __LINE__);
114 #define shenandoah_assert_not_in_cset(interior_loc, obj) \
115 ShenandoahAsserts::assert_not_in_cset(interior_loc, obj, __FILE__, __LINE__);
116
117 #define shenandoah_assert_not_in_cset_loc_if(interior_loc, condition) \
118 if (condition) ShenandoahAsserts::assert_not_in_cset_loc(interior_loc, __FILE__, __LINE__);
119 #define shenandoah_assert_not_in_cset_loc_except(interior_loc, exception) \
120 if (!(exception)) ShenandoahAsserts::assert_not_in_cset_loc(interior_loc, __FILE__, __LINE__);
121 #define shenandoah_assert_not_in_cset_loc(interior_loc) \
122 ShenandoahAsserts::assert_not_in_cset_loc(interior_loc, __FILE__, __LINE__);
123
124 #define shenandoah_assert_rp_isalive_installed() \
125 ShenandoahAsserts::assert_rp_isalive_installed(__FILE__, __LINE__);
126 #define shenandoah_assert_rp_isalive_not_installed() \
127 ShenandoahAsserts::assert_rp_isalive_not_installed(__FILE__, __LINE__);
128 #else
129 #define shenandoah_assert_in_heap(interior_loc, obj)
131
132 #define shenandoah_assert_correct_if(interior_loc, obj, condition)
133 #define shenandoah_assert_correct_except(interior_loc, obj, exception)
134 #define shenandoah_assert_correct(interior_loc, obj)
135
136 #define shenandoah_assert_forwarded_if(interior_loc, obj, condition)
137 #define shenandoah_assert_forwarded_except(interior_loc, obj, exception)
138 #define shenandoah_assert_forwarded(interior_loc, obj)
139
140 #define shenandoah_assert_not_forwarded_if(interior_loc, obj, condition)
141 #define shenandoah_assert_not_forwarded_except(interior_loc, obj, exception)
142 #define shenandoah_assert_not_forwarded(interior_loc, obj)
143
144 #define shenandoah_assert_marked_complete_if(interior_loc, obj, condition)
145 #define shenandoah_assert_marked_complete_except(interior_loc, obj, exception)
146 #define shenandoah_assert_marked_complete(interior_loc, obj)
147
148 #define shenandoah_assert_marked_next_if(interior_loc, obj, condition)
149 #define shenandoah_assert_marked_next_except(interior_loc, obj, exception)
150 #define shenandoah_assert_marked_next(interior_loc, obj)
151
152 #define shenandoah_assert_not_in_cset_if(interior_loc, obj, condition)
153 #define shenandoah_assert_not_in_cset_except(interior_loc, obj, exception)
154 #define shenandoah_assert_not_in_cset(interior_loc, obj)
155
156 #define shenandoah_assert_not_in_cset_loc_if(interior_loc, condition)
157 #define shenandoah_assert_not_in_cset_loc_except(interior_loc, exception)
158 #define shenandoah_assert_not_in_cset_loc(interior_loc)
159
160 #define shenandoah_assert_rp_isalive_installed()
161 #define shenandoah_assert_rp_isalive_not_installed()
162 #endif
163
164 };
165
166 #endif //SHARE_VM_GC_SHENANDOAH_SHENANDOAHASSERTS_HPP
|
32
33 class ShenandoahAsserts {
34 public:
35 enum SafeLevel {
36 _safe_unknown,
37 _safe_oop,
38 _safe_oop_fwd,
39 _safe_all,
40 };
41
42 static void print_obj(ShenandoahMessageBuffer &msg, oop obj);
43
44 static void print_non_obj(ShenandoahMessageBuffer &msg, void *loc);
45
46 static void print_obj_safe(ShenandoahMessageBuffer &msg, void *loc);
47
48 static void print_failure(SafeLevel level, oop obj, void *interior_loc, oop loc,
49 const char *phase, const char *label,
50 const char *file, int line);
51
52 static void print_rp_failure(const char *label, BoolObjectClosure* actual,
53 const char *file, int line);
54
55 static void assert_in_heap(void* interior_loc, oop obj, const char* file, int line);
56 static void assert_in_correct_region(void* interior_loc, oop obj, const char* file, int line);
57
58 static void assert_correct(void* interior_loc, oop obj, const char* file, int line);
59 static void assert_forwarded(void* interior_loc, oop obj, const char* file, int line);
60 static void assert_not_forwarded(void* interior_loc, oop obj, const char* file, int line);
61 static void assert_marked_complete(void* interior_loc, oop obj, const char* file, int line);
62 static void assert_marked_next(void* interior_loc, oop obj, const char* file, int line);
63 static void assert_in_cset(void* interior_loc, oop obj, const char* file, int line);
64 static void assert_not_in_cset(void* interior_loc, oop obj, const char* file, int line);
65 static void assert_not_in_cset_loc(void* interior_loc, const char* file, int line);
66
67 static void assert_rp_isalive_not_installed(const char *file, int line);
68 static void assert_rp_isalive_installed(const char *file, int line);
69
70 #ifdef ASSERT
71 #define shenandoah_assert_in_heap(interior_loc, obj) \
72 ShenandoahAsserts::assert_in_heap(interior_loc, obj, __FILE__, __LINE__);
73 #define shenandoah_assert_in_correct_region(interior_loc, obj) \
74 ShenandoahAsserts::assert_in_correct_region(interior_loc, obj, __FILE__, __LINE__);
75
76 #define shenandoah_assert_correct_if(interior_loc, obj, condition) \
77 if (condition) ShenandoahAsserts::assert_correct(interior_loc, obj, __FILE__, __LINE__);
78 #define shenandoah_assert_correct_except(interior_loc, obj, exception) \
79 if (!(exception)) ShenandoahAsserts::assert_correct(interior_loc, obj, __FILE__, __LINE__);
80 #define shenandoah_assert_correct(interior_loc, obj) \
81 ShenandoahAsserts::assert_correct(interior_loc, obj, __FILE__, __LINE__);
82
83 #define shenandoah_assert_forwarded_if(interior_loc, obj, condition) \
91 if (condition) ShenandoahAsserts::assert_not_forwarded(interior_loc, obj, __FILE__, __LINE__);
92 #define shenandoah_assert_not_forwarded_except(interior_loc, obj, exception) \
93 if (!(exception)) ShenandoahAsserts::assert_not_forwarded(interior_loc, obj, __FILE__, __LINE__);
94 #define shenandoah_assert_not_forwarded(interior_loc, obj) \
95 ShenandoahAsserts::assert_not_forwarded(interior_loc, obj, __FILE__, __LINE__);
96
97 #define shenandoah_assert_marked_complete_if(interior_loc, obj, condition) \
98 if (condition) ShenandoahAsserts::assert_marked_complete(interior_loc, obj, __FILE__, __LINE__);
99 #define shenandoah_assert_marked_complete_except(interior_loc, obj, exception) \
100 if (!(exception)) ShenandoahAsserts::assert_marked_complete(interior_loc, obj, __FILE__, __LINE__);
101 #define shenandoah_assert_marked_complete(interior_loc, obj) \
102 ShenandoahAsserts::assert_marked_complete(interior_loc, obj, __FILE__, __LINE__);
103
104 #define shenandoah_assert_marked_next_if(interior_loc, obj, condition) \
105 if (condition) ShenandoahAsserts::assert_marked_next(interior_loc, obj, __FILE__, __LINE__);
106 #define shenandoah_assert_marked_next_except(interior_loc, obj, exception) \
107 if (!(exception)) ShenandoahAsserts::assert_marked_next(interior_loc, obj, __FILE__, __LINE__);
108 #define shenandoah_assert_marked_next(interior_loc, obj) \
109 ShenandoahAsserts::assert_marked_next(interior_loc, obj, __FILE__, __LINE__);
110
111 #define shenandoah_assert_in_cset_if(interior_loc, obj, condition) \
112 if (condition) ShenandoahAsserts::assert_in_cset(interior_loc, obj, __FILE__, __LINE__);
113 #define shenandoah_assert_in_cset_except(interior_loc, obj, exception) \
114 if (!(exception)) ShenandoahAsserts::assert_in_cset(interior_loc, obj, __FILE__, __LINE__);
115 #define shenandoah_assert_in_cset(interior_loc, obj) \
116 ShenandoahAsserts::assert_in_cset(interior_loc, obj, __FILE__, __LINE__);
117
118 #define shenandoah_assert_not_in_cset_if(interior_loc, obj, condition) \
119 if (condition) ShenandoahAsserts::assert_not_in_cset(interior_loc, obj, __FILE__, __LINE__);
120 #define shenandoah_assert_not_in_cset_except(interior_loc, obj, exception) \
121 if (!(exception)) ShenandoahAsserts::assert_not_in_cset(interior_loc, obj, __FILE__, __LINE__);
122 #define shenandoah_assert_not_in_cset(interior_loc, obj) \
123 ShenandoahAsserts::assert_not_in_cset(interior_loc, obj, __FILE__, __LINE__);
124
125 #define shenandoah_assert_not_in_cset_loc_if(interior_loc, condition) \
126 if (condition) ShenandoahAsserts::assert_not_in_cset_loc(interior_loc, __FILE__, __LINE__);
127 #define shenandoah_assert_not_in_cset_loc_except(interior_loc, exception) \
128 if (!(exception)) ShenandoahAsserts::assert_not_in_cset_loc(interior_loc, __FILE__, __LINE__);
129 #define shenandoah_assert_not_in_cset_loc(interior_loc) \
130 ShenandoahAsserts::assert_not_in_cset_loc(interior_loc, __FILE__, __LINE__);
131
132 #define shenandoah_assert_rp_isalive_installed() \
133 ShenandoahAsserts::assert_rp_isalive_installed(__FILE__, __LINE__);
134 #define shenandoah_assert_rp_isalive_not_installed() \
135 ShenandoahAsserts::assert_rp_isalive_not_installed(__FILE__, __LINE__);
136 #else
137 #define shenandoah_assert_in_heap(interior_loc, obj)
139
140 #define shenandoah_assert_correct_if(interior_loc, obj, condition)
141 #define shenandoah_assert_correct_except(interior_loc, obj, exception)
142 #define shenandoah_assert_correct(interior_loc, obj)
143
144 #define shenandoah_assert_forwarded_if(interior_loc, obj, condition)
145 #define shenandoah_assert_forwarded_except(interior_loc, obj, exception)
146 #define shenandoah_assert_forwarded(interior_loc, obj)
147
148 #define shenandoah_assert_not_forwarded_if(interior_loc, obj, condition)
149 #define shenandoah_assert_not_forwarded_except(interior_loc, obj, exception)
150 #define shenandoah_assert_not_forwarded(interior_loc, obj)
151
152 #define shenandoah_assert_marked_complete_if(interior_loc, obj, condition)
153 #define shenandoah_assert_marked_complete_except(interior_loc, obj, exception)
154 #define shenandoah_assert_marked_complete(interior_loc, obj)
155
156 #define shenandoah_assert_marked_next_if(interior_loc, obj, condition)
157 #define shenandoah_assert_marked_next_except(interior_loc, obj, exception)
158 #define shenandoah_assert_marked_next(interior_loc, obj)
159
160 #define shenandoah_assert_in_cset_if(interior_loc, obj, condition)
161 #define shenandoah_assert_in_cset_except(interior_loc, obj, exception)
162 #define shenandoah_assert_in_cset(interior_loc, obj)
163
164 #define shenandoah_assert_not_in_cset_if(interior_loc, obj, condition)
165 #define shenandoah_assert_not_in_cset_except(interior_loc, obj, exception)
166 #define shenandoah_assert_not_in_cset(interior_loc, obj)
167
168 #define shenandoah_assert_not_in_cset_loc_if(interior_loc, condition)
169 #define shenandoah_assert_not_in_cset_loc_except(interior_loc, exception)
170 #define shenandoah_assert_not_in_cset_loc(interior_loc)
171
172 #define shenandoah_assert_rp_isalive_installed()
173 #define shenandoah_assert_rp_isalive_not_installed()
174 #endif
175
176 };
177
178 #endif //SHARE_VM_GC_SHENANDOAH_SHENANDOAHASSERTS_HPP
|