RFR: Record location when asserting the code root correctness
Aleksey Shipilev
shade at redhat.com
Fri Sep 21 11:18:05 UTC 2018
We should really pass the "loc" into assert to let it know we read the oop from nmethod, for better
diagnostics.
diff -r 3cb10f96ca90 src/hotspot/share/gc/shenandoah/shenandoahCodeRoots.cpp
--- a/src/hotspot/share/gc/shenandoah/shenandoahCodeRoots.cpp Fri Sep 21 12:35:03 2018 +0200
+++ b/src/hotspot/share/gc/shenandoah/shenandoahCodeRoots.cpp Fri Sep 21 13:16:14 2018 +0200
@@ -360,13 +360,14 @@
void ShenandoahNMethod::assert_alive_and_correct() {
assert(_nm->is_alive(), "only alive nmethods here");
assert(_oops_count > 0, "should have filtered nmethods without oops before");
ShenandoahHeap* heap = ShenandoahHeap::heap();
for (int c = 0; c < _oops_count; c++) {
- oop o = RawAccess<>::oop_load(_oops[c]);
- shenandoah_assert_correct_except(NULL, o, o == NULL || heap->is_full_gc_move_in_progress());
- assert(_nm->code_contains((address)_oops[c]) || _nm->oops_contains(_oops[c]), "nmethod should
contain the oop*");
+ oop *loc = _oops[c];
+ oop o = RawAccess<>::oop_load(loc);
+ assert(_nm->code_contains((address) loc) || _nm->oops_contains(loc), "nmethod should contain
the oop*");
+ shenandoah_assert_correct_except(loc, o, o == NULL || heap->is_full_gc_move_in_progress());
}
}
Testing: tier3_gc_shenandoah
Thanks,
-Aleksey
More information about the shenandoah-dev
mailing list