8068739: G1CollectoryPolicy uses uninitialized field '_sigma' in the constructor
Change initialization order in constructor. Remove suppression for suppression of "'this': used in base member initializer list" warning. Reviewed-by: mgerdin, tschatzl, simonis
This commit is contained in:
parent
7a8a19d1d9
commit
508b9a0a1f
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2001, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -153,14 +153,6 @@ G1CollectorPolicy::G1CollectorPolicy() :
|
||||
_inc_cset_predicted_elapsed_time_ms(0.0),
|
||||
_inc_cset_predicted_elapsed_time_ms_diffs(0.0),
|
||||
|
||||
#ifdef _MSC_VER // the use of 'this' below gets a warning, make it go away
|
||||
#pragma warning( disable:4355 ) // 'this' : used in base member initializer list
|
||||
#endif // _MSC_VER
|
||||
|
||||
_short_lived_surv_rate_group(new SurvRateGroup(this, "Short Lived",
|
||||
G1YoungSurvRateNumRegionsSummary)),
|
||||
_survivor_surv_rate_group(new SurvRateGroup(this, "Survivor",
|
||||
G1YoungSurvRateNumRegionsSummary)),
|
||||
// add here any more surv rate groups
|
||||
_recorded_survivor_regions(0),
|
||||
_recorded_survivor_head(NULL),
|
||||
@ -169,6 +161,22 @@ G1CollectorPolicy::G1CollectorPolicy() :
|
||||
|
||||
_gc_overhead_perc(0.0) {
|
||||
|
||||
uintx confidence_perc = G1ConfidencePercent;
|
||||
// Put an artificial ceiling on this so that it's not set to a silly value.
|
||||
if (confidence_perc > 100) {
|
||||
confidence_perc = 100;
|
||||
warning("G1ConfidencePercent is set to a value that is too large, "
|
||||
"it's been updated to %u", confidence_perc);
|
||||
}
|
||||
// '_sigma' must be initialized before the SurvRateGroups below because they
|
||||
// indirecty access '_sigma' trough the 'this' pointer in their constructor.
|
||||
_sigma = (double) confidence_perc / 100.0;
|
||||
|
||||
_short_lived_surv_rate_group =
|
||||
new SurvRateGroup(this, "Short Lived", G1YoungSurvRateNumRegionsSummary);
|
||||
_survivor_surv_rate_group =
|
||||
new SurvRateGroup(this, "Survivor", G1YoungSurvRateNumRegionsSummary);
|
||||
|
||||
// Set up the region size and associated fields. Given that the
|
||||
// policy is created before the heap, we have to set this up here,
|
||||
// so it's done as soon as possible.
|
||||
@ -283,15 +291,6 @@ G1CollectorPolicy::G1CollectorPolicy() :
|
||||
double time_slice = (double) GCPauseIntervalMillis / 1000.0;
|
||||
_mmu_tracker = new G1MMUTrackerQueue(time_slice, max_gc_time);
|
||||
|
||||
uintx confidence_perc = G1ConfidencePercent;
|
||||
// Put an artificial ceiling on this so that it's not set to a silly value.
|
||||
if (confidence_perc > 100) {
|
||||
confidence_perc = 100;
|
||||
warning("G1ConfidencePercent is set to a value that is too large, "
|
||||
"it's been updated to %u", confidence_perc);
|
||||
}
|
||||
_sigma = (double) confidence_perc / 100.0;
|
||||
|
||||
// start conservatively (around 50ms is about right)
|
||||
_concurrent_mark_remark_times_ms->add(0.05);
|
||||
_concurrent_mark_cleanup_times_ms->add(0.20);
|
||||
|
Loading…
Reference in New Issue
Block a user