RFR: Partial should always be preceded by UR
Aleksey Shipilev
shade at redhat.com
Fri Aug 4 12:43:53 UTC 2017
We actually had this invariant enforced earlier, when PartialHeuristics was telling that
update_refs() and should_start_update_refs() is "true" unconditionally. But after LRU/Generational
that brought the split to major and minor heuristics, nobody asks minor heuristics about this
anymore. In our current testing, this causes intermittent matrix verification failures before
partial GC.
Fix:
$ hg diff
diff -r 905879854473 src/share/vm/gc/shenandoah/shenandoahCollectorPolicy.cpp
--- a/src/share/vm/gc/shenandoah/shenandoahCollectorPolicy.cpp Fri Aug 04 12:12:36 2017 +0200
+++ b/src/share/vm/gc/shenandoah/shenandoahCollectorPolicy.cpp Fri Aug 04 14:43:23 2017 +0200
@@ -1370,10 +1370,16 @@
}
bool ShenandoahCollectorPolicy::update_refs() {
+ if (_minor_heuristics != NULL && _minor_heuristics->update_refs()) {
+ return true;
+ }
return _heuristics->update_refs();
}
bool ShenandoahCollectorPolicy::should_start_update_refs() {
+ if (_minor_heuristics != NULL && _minor_heuristics->should_start_update_refs()) {
+ return true;
+ }
return _heuristics->should_start_update_refs();
}
Testing: hotspot_gc_shenandoah
Thanks,
-Aleksey
More information about the shenandoah-dev
mailing list