RFR (XXS): 8138752: G1CollectorPolicy::should_should_update_surv_rate_group_predictors() uses wrong predicate
Thomas Schatzl
thomas.schatzl at oracle.com
Fri Oct 2 12:54:16 UTC 2015
Hi all,
can I have reviews for this very-small fix for a bug introduced in
JDK-7097567?
Instead of using
CollectorState::last_young_gc() && !CollectorState::in_marking_window()
to determine when to update the survivor rate group predictors (which
means "only the gc between GC cleanup and mixed GC"), G1 needs to do
this for all young GCs using
CollectorState::last_gc_was_young() && !
CollectorState::in_marking_window()
which means just during young-only GCs outside of marking.
The original code in JDK-7097567 looks like
- bool propagate = _last_gc_was_young && !_in_marking_window;
+ bool propagate = collector_state()->should_propagate();
(http://hg.openjdk.java.net/jdk9/jdk9/hotspot/file/23cc50392e04/src/share/vm/gc/g1/g1CollectorPolicy.hpp)
where CollectorState::should_propagate() has been wrongly changed to:
bool should_propagate() { // XXX should have a more suitable state name or abstraction for this
return (_last_young_gc && !_in_marking_window);
}
(http://hg.openjdk.java.net/jdk9/jdk9/hotspot/file/23cc50392e04/src/share/vm/gc/g1/g1CollectorState.hpp)
It is based on the changes for 8138750 which is also currently out for
review.
CR:
https://bugs.openjdk.java.net/browse/JDK-8138752
Webrev:
http://cr.openjdk.java.net/~tschatzl/8138752/webrev/
Testing:
local compilation
Thanks,
Thomas
More information about the hotspot-gc-dev
mailing list