Skip to content

Commit 11f7c24

Browse files
committed
Fix code
1 parent dfe6a14 commit 11f7c24

File tree

1 file changed

+19
-15
lines changed

1 file changed

+19
-15
lines changed

src/coreclr/vm/yieldprocessornormalized.cpp

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ enum class NormalizationState : UINT8
1616
};
1717

1818
static const int NsPerYieldMeasurementCount = 8;
19+
static const int PartialInitializationMeasurementCount = 2; // number of measurements to be done during partial initialization
1920
static const unsigned int MeasurementPeriodMs = 4000;
20-
static const int s_partialInitializationMeasurementCount = 2; // number of measurements to be done during partial initialization
2121

2222
static const unsigned int NsPerS = 1000 * 1000 * 1000;
2323

@@ -122,7 +122,7 @@ void YieldProcessorNormalization::PerformMeasurement()
122122

123123
_ASSERTE(s_isMeasurementScheduled ^ (s_normalizationState == NormalizationState::Uninitialized));
124124

125-
double latestNsPerYield = 0; // initialize to supress error C4701
125+
double latestNsPerYield;
126126
if (s_normalizationState == NormalizationState::Initialized)
127127
{
128128
if (GetTickCount() - s_previousNormalizationTimeMs < MeasurementPeriodMs)
@@ -154,15 +154,16 @@ void YieldProcessorNormalization::PerformMeasurement()
154154
s_performanceCounterTicksPerS = li.QuadPart;
155155

156156
startIndex = 0;
157-
endIndex = s_partialInitializationMeasurementCount;
157+
endIndex = PartialInitializationMeasurementCount;
158158
}
159159
else
160160
{
161-
startIndex = s_partialInitializationMeasurementCount;
161+
startIndex = PartialInitializationMeasurementCount;
162162
endIndex = NsPerYieldMeasurementCount;
163163
}
164164

165165
unsigned int measureDurationUs = DetermineMeasureDurationUs();
166+
latestNsPerYield = 0;
166167
for (int i = startIndex; i < endIndex; ++i)
167168
{
168169
latestNsPerYield = MeasureNsPerYield(measureDurationUs);
@@ -172,16 +173,11 @@ void YieldProcessorNormalization::PerformMeasurement()
172173
AtomicStore(&s_establishedNsPerYield, latestNsPerYield);
173174
}
174175

175-
if (i < NsPerYieldMeasurementCount - 1)
176+
if (i < endIndex - 1)
176177
{
177178
FireEtwYieldProcessorMeasurement(GetClrInstanceId(), latestNsPerYield, s_establishedNsPerYield);
178179
}
179180
}
180-
181-
s_normalizationState =
182-
(s_normalizationState == NormalizationState::Uninitialized) ?
183-
NormalizationState::PartiallyInitialized :
184-
NormalizationState::Initialized;
185181
}
186182
else
187183
{
@@ -191,8 +187,8 @@ void YieldProcessorNormalization::PerformMeasurement()
191187

192188
double establishedNsPerYield = s_nsPerYieldMeasurements[0];
193189
int endIndex =
194-
(s_normalizationState == NormalizationState::PartiallyInitialized) ?
195-
s_partialInitializationMeasurementCount :
190+
(s_normalizationState == NormalizationState::Uninitialized) ?
191+
PartialInitializationMeasurementCount :
196192
NsPerYieldMeasurementCount;
197193
for (int i = 1; i < endIndex; ++i)
198194
{
@@ -223,7 +219,15 @@ void YieldProcessorNormalization::PerformMeasurement()
223219

224220
GCHeapUtilities::GetGCHeap()->SetYieldProcessorScalingFactor((float)yieldsPerNormalizedYield);
225221

226-
s_previousNormalizationTimeMs = GetTickCount();
222+
if (s_normalizationState != NormalizationState::Uninitialized)
223+
{
224+
s_previousNormalizationTimeMs = GetTickCount();
225+
}
226+
227+
s_normalizationState =
228+
(s_normalizationState == NormalizationState::Uninitialized) ?
229+
NormalizationState::PartiallyInitialized :
230+
NormalizationState::Initialized;
227231
s_isMeasurementScheduled = false;
228232
}
229233

@@ -239,14 +243,14 @@ void YieldProcessorNormalization::ScheduleMeasurementIfNecessary()
239243
CONTRACTL_END;
240244

241245
NormalizationState normalizationState = VolatileLoadWithoutBarrier(&s_normalizationState);
242-
if (normalizationState == NormalizationState::Initialized || normalizationState == NormalizationState::PartiallyInitialized)
246+
if (normalizationState == NormalizationState::Initialized)
243247
{
244248
if (GetTickCount() - s_previousNormalizationTimeMs < MeasurementPeriodMs)
245249
{
246250
return;
247251
}
248252
}
249-
else if (normalizationState == NormalizationState::Uninitialized)
253+
else if (normalizationState == NormalizationState::Uninitialized || normalizationState == NormalizationState::PartiallyInitialized)
250254
{
251255
}
252256
else

0 commit comments

Comments
 (0)