Integrated: 8327388: GenShen: census during marking is partial

Y. Srinivas Ramakrishna ysr at openjdk.org
Sat Apr 13 15:22:01 UTC 2024


On Tue, 5 Mar 2024 17:43:20 GMT, Y. Srinivas Ramakrishna <ysr at openjdk.org> wrote:

> There was a bug in the placement of the call to clear stale census data before starting a fresh one for a new marking cycle that marks through the younger generation. This bug resulted in the use of a co-terminal suffix of the census collection, losing all data from the earlier iterations of an iterative collection process that may run up to 5 times.
> 
> We stumbled upon the defect when working on a refactoring task involving separation of generational extensions of Shenandoah from its non-generational version. The (performance) defect has existed since day zero of the adaptive tenuring code in GenShen.
> 
> Along with fixing the defect, an assertion has been added to check the "reasonable completeness" of the census, which came in useful to detect a reset call inadvertently left behind in one place.
> 
> Some ShenandoahAgeCensus APIs have been narrowed and cleaned up a bit, and documentation clarified a bit more.
> 
> **Testing**:
> - [x] GHA 
> - [x] Code pipeline testing : one intermittent stress dacapo failure, ascribed to an existing bug in coalesce-and-fill
> - [x] SPECjbb
> 
> **Performance**: 
> - [x] SPECjbb : the variance in tests fails any significant change under 2-tailed Mann-Whitney

This pull request has now been integrated.

Changeset: 10febd95
Author:    Y. Srinivas Ramakrishna <ysr at openjdk.org>
URL:       https://git.openjdk.org/shenandoah/commit/10febd95d093165ca2e91c12e385e3754dc47ea0
Stats:     166 lines in 11 files changed: 121 ins; 27 del; 18 mod

8327388: GenShen: census during marking is partial

Reviewed-by: kdnilsen

-------------

PR: https://git.openjdk.org/shenandoah/pull/403


More information about the shenandoah-dev mailing list