Skip to content

Commit 515113d

Browse files
committedJul 26, 2021
8269924: Shenandoah: Introduce weak/strong marking asserts
Reviewed-by: rkennke
1 parent f2c359a commit 515113d

File tree

2 files changed

+46
-0
lines changed

2 files changed

+46
-0
lines changed
 

‎src/hotspot/share/gc/shenandoah/shenandoahAsserts.cpp

+22
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,28 @@ void ShenandoahAsserts::assert_marked(void *interior_loc, oop obj, const char *f
316316
}
317317
}
318318

319+
void ShenandoahAsserts::assert_marked_weak(void *interior_loc, oop obj, const char *file, int line) {
320+
assert_correct(interior_loc, obj, file, line);
321+
322+
ShenandoahHeap* heap = ShenandoahHeap::heap();
323+
if (!heap->marking_context()->is_marked_weak(obj)) {
324+
print_failure(_safe_all, obj, interior_loc, NULL, "Shenandoah assert_marked_weak failed",
325+
"Object should be marked weakly",
326+
file, line);
327+
}
328+
}
329+
330+
void ShenandoahAsserts::assert_marked_strong(void *interior_loc, oop obj, const char *file, int line) {
331+
assert_correct(interior_loc, obj, file, line);
332+
333+
ShenandoahHeap* heap = ShenandoahHeap::heap();
334+
if (!heap->marking_context()->is_marked_strong(obj)) {
335+
print_failure(_safe_all, obj, interior_loc, NULL, "Shenandoah assert_marked_strong failed",
336+
"Object should be marked strongly",
337+
file, line);
338+
}
339+
}
340+
319341
void ShenandoahAsserts::assert_in_cset(void* interior_loc, oop obj, const char* file, int line) {
320342
assert_correct(interior_loc, obj, file, line);
321343

‎src/hotspot/share/gc/shenandoah/shenandoahAsserts.hpp

+24
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ class ShenandoahAsserts {
6161
static void assert_forwarded(void* interior_loc, oop obj, const char* file, int line);
6262
static void assert_not_forwarded(void* interior_loc, oop obj, const char* file, int line);
6363
static void assert_marked(void* interior_loc, oop obj, const char* file, int line);
64+
static void assert_marked_weak(void* interior_loc, oop obj, const char* file, int line);
65+
static void assert_marked_strong(void* interior_loc, oop obj, const char* file, int line);
6466
static void assert_in_cset(void* interior_loc, oop obj, const char* file, int line);
6567
static void assert_not_in_cset(void* interior_loc, oop obj, const char* file, int line);
6668
static void assert_not_in_cset_loc(void* interior_loc, const char* file, int line);
@@ -107,6 +109,20 @@ class ShenandoahAsserts {
107109
#define shenandoah_assert_marked(interior_loc, obj) \
108110
ShenandoahAsserts::assert_marked(interior_loc, obj, __FILE__, __LINE__)
109111

112+
#define shenandoah_assert_marked_weak_if(interior_loc, obj, condition) \
113+
if (condition) ShenandoahAsserts::assert_marked_weak(interior_loc, obj, __FILE__, __LINE__)
114+
#define shenandoah_assert_marked_weak_except(interior_loc, obj, exception) \
115+
if (!(exception)) ShenandoahAsserts::assert_marked_weak(interior_loc, obj, __FILE__, __LINE__)
116+
#define shenandoah_assert_marked_weak(interior_loc, obj) \
117+
ShenandoahAsserts::assert_marked_weak(interior_loc, obj, __FILE__, __LINE__)
118+
119+
#define shenandoah_assert_marked_strong_if(interior_loc, obj, condition) \
120+
if (condition) ShenandoahAsserts::assert_marked_strong(interior_loc, obj, __FILE__, __LINE__)
121+
#define shenandoah_assert_marked_strong_except(interior_loc, obj, exception) \
122+
if (!(exception)) ShenandoahAsserts::assert_marked_strong(interior_loc, obj, __FILE__, __LINE__)
123+
#define shenandoah_assert_marked_strong(interior_loc, obj) \
124+
ShenandoahAsserts::assert_marked_strong(interior_loc, obj, __FILE__, __LINE__)
125+
110126
#define shenandoah_assert_in_cset_if(interior_loc, obj, condition) \
111127
if (condition) ShenandoahAsserts::assert_in_cset(interior_loc, obj, __FILE__, __LINE__)
112128
#define shenandoah_assert_in_cset_except(interior_loc, obj, exception) \
@@ -168,6 +184,14 @@ class ShenandoahAsserts {
168184
#define shenandoah_assert_marked_except(interior_loc, obj, exception)
169185
#define shenandoah_assert_marked(interior_loc, obj)
170186

187+
#define shenandoah_assert_marked_weak_if(interior_loc, obj, condition)
188+
#define shenandoah_assert_marked_weak_except(interior_loc, obj, exception)
189+
#define shenandoah_assert_marked_weak(interior_loc, obj)
190+
191+
#define shenandoah_assert_marked_strong_if(interior_loc, obj, condition)
192+
#define shenandoah_assert_marked_strong_except(interior_loc, obj, exception)
193+
#define shenandoah_assert_marked_strong(interior_loc, obj)
194+
171195
#define shenandoah_assert_in_cset_if(interior_loc, obj, condition)
172196
#define shenandoah_assert_in_cset_except(interior_loc, obj, exception)
173197
#define shenandoah_assert_in_cset(interior_loc, obj)

0 commit comments

Comments
 (0)
Please sign in to comment.