RFR: Partial should always be preceded by UR

Roman Kennke rkennke at redhat.com
Fri Aug 4 12:59:08 UTC 2017


Am 04.08.2017 um 14:43 schrieb Aleksey Shipilev:
> 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
>
Yes



More information about the shenandoah-dev mailing list