Skip to content

Commit 34a9246

Browse files
ahmedmuhsinThomas Schatzl
authored and
Thomas Schatzl
committedMar 9, 2023
8274264: Not all of G1 young collection verification honors the verification type
Reviewed-by: ayang, tschatzl
1 parent a7e308a commit 34a9246

File tree

4 files changed

+27
-15
lines changed

4 files changed

+27
-15
lines changed
 

‎src/hotspot/share/gc/g1/g1CollectedHeap.cpp

+16-4
Original file line numberDiff line numberDiff line change
@@ -970,8 +970,11 @@ void G1CollectedHeap::verify_before_full_collection(bool explicit_gc) {
970970
if (!VerifyBeforeGC) {
971971
return;
972972
}
973+
if (!G1HeapVerifier::should_verify(G1HeapVerifier::G1VerifyFull)) {
974+
return;
975+
}
973976
_verifier->verify_region_sets_optional();
974-
_verifier->verify_before_gc(G1HeapVerifier::G1VerifyFull);
977+
_verifier->verify_before_gc();
975978
_verifier->verify_bitmap_clear(true /* above_tams_only */);
976979
}
977980

@@ -1009,9 +1012,12 @@ void G1CollectedHeap::verify_after_full_collection() {
10091012
if (!VerifyAfterGC) {
10101013
return;
10111014
}
1015+
if (!G1HeapVerifier::should_verify(G1HeapVerifier::G1VerifyFull)) {
1016+
return;
1017+
}
10121018
_hrm.verify_optional();
10131019
_verifier->verify_region_sets_optional();
1014-
_verifier->verify_after_gc(G1HeapVerifier::G1VerifyFull);
1020+
_verifier->verify_after_gc();
10151021
_verifier->verify_bitmap_clear(false /* above_tams_only */);
10161022

10171023
// At this point there should be no regions in the
@@ -2573,11 +2579,14 @@ void G1CollectedHeap::verify_before_young_collection(G1HeapVerifier::G1VerifyTyp
25732579
if (!VerifyBeforeGC) {
25742580
return;
25752581
}
2582+
if (!G1HeapVerifier::should_verify(type)) {
2583+
return;
2584+
}
25762585
Ticks start = Ticks::now();
25772586
_verifier->prepare_for_verify();
25782587
_verifier->verify_region_sets_optional();
25792588
_verifier->verify_dirty_young_regions();
2580-
_verifier->verify_before_gc(type);
2589+
_verifier->verify_before_gc();
25812590
verify_numa_regions("GC Start");
25822591
phase_times()->record_verify_before_time_ms((Ticks::now() - start).seconds() * MILLIUNITS);
25832592
}
@@ -2586,8 +2595,11 @@ void G1CollectedHeap::verify_after_young_collection(G1HeapVerifier::G1VerifyType
25862595
if (!VerifyAfterGC) {
25872596
return;
25882597
}
2598+
if (!G1HeapVerifier::should_verify(type)) {
2599+
return;
2600+
}
25892601
Ticks start = Ticks::now();
2590-
_verifier->verify_after_gc(type);
2602+
_verifier->verify_after_gc();
25912603
verify_numa_regions("GC End");
25922604
_verifier->verify_region_sets_optional();
25932605
phase_times()->record_verify_after_time_ms((Ticks::now() - start).seconds() * MILLIUNITS);

‎src/hotspot/share/gc/g1/g1ConcurrentMark.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -1071,14 +1071,14 @@ void G1ConcurrentMark::verify_during_pause(G1HeapVerifier::G1VerifyType type,
10711071

10721072
const char* caller = verify_location_string(location);
10731073

1074-
if (VerifyDuringGC) {
1074+
if (VerifyDuringGC && G1HeapVerifier::should_verify(type)) {
10751075
GCTraceTime(Debug, gc, phases) debug(caller, _gc_timer_cm);
10761076

10771077
size_t const BufLen = 512;
10781078
char buffer[BufLen];
10791079

10801080
jio_snprintf(buffer, BufLen, "During GC (%s)", caller);
1081-
verifier->verify(type, VerifyOption::G1UseConcMarking, buffer);
1081+
verifier->verify(VerifyOption::G1UseConcMarking, buffer);
10821082

10831083
// Only check bitmap in Remark, and not at After-Verification because the regions
10841084
// already have their TAMS'es reset.

‎src/hotspot/share/gc/g1/g1HeapVerifier.cpp

+6-6
Original file line numberDiff line numberDiff line change
@@ -551,19 +551,19 @@ void G1HeapVerifier::prepare_for_verify() {
551551
}
552552
}
553553

554-
void G1HeapVerifier::verify(G1VerifyType type, VerifyOption vo, const char* msg) {
555-
if (should_verify(type) && _g1h->total_collections() >= VerifyGCStartAt) {
554+
void G1HeapVerifier::verify(VerifyOption vo, const char* msg) {
555+
if (_g1h->total_collections() >= VerifyGCStartAt) {
556556
prepare_for_verify();
557557
Universe::verify(vo, msg);
558558
}
559559
}
560560

561-
void G1HeapVerifier::verify_before_gc(G1VerifyType type) {
562-
verify(type, VerifyOption::G1UseConcMarking, "Before GC");
561+
void G1HeapVerifier::verify_before_gc() {
562+
verify(VerifyOption::G1UseConcMarking, "Before GC");
563563
}
564564

565-
void G1HeapVerifier::verify_after_gc(G1VerifyType type) {
566-
verify(type, VerifyOption::G1UseConcMarking, "After GC");
565+
void G1HeapVerifier::verify_after_gc() {
566+
verify(VerifyOption::G1UseConcMarking, "After GC");
567567
}
568568

569569
void G1HeapVerifier::verify_bitmap_clear(bool from_tams) {

‎src/hotspot/share/gc/g1/g1HeapVerifier.hpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,9 @@ class G1HeapVerifier : public CHeapObj<mtGC> {
6666
void verify_region_sets_optional() { DEBUG_ONLY(verify_region_sets();) }
6767

6868
void prepare_for_verify();
69-
void verify(G1VerifyType type, VerifyOption vo, const char* msg);
70-
void verify_before_gc(G1VerifyType type);
71-
void verify_after_gc(G1VerifyType type);
69+
void verify(VerifyOption vo, const char* msg);
70+
void verify_before_gc();
71+
void verify_after_gc();
7272

7373
void verify_bitmap_clear(bool above_tams_only);
7474

0 commit comments

Comments
 (0)