-
Enhancement
-
Resolution: Fixed
-
P4
-
None
-
b04
`RefProcPhaseTimeTracker` and `RefProcTotalPhaseTimesTracker` are identical. Both are stack-allocated to keep track the elapsed time and are used exclusively inside `ReferenceProcessor::process_discovered_references` with the same args.
The structure is effectively:
```
{
RefProcTotalPhaseTimesTracker tt(SoftWeakFinalRefsPhase, &phase_times);
{
...
RefProcPhaseTimeTracker tt(SoftWeakFinalRefsPhase, &phase_times);
...
}
}
```
As shown, the effect of `RefProcPhaseTimeTracker` is shadowed by `RefProcTotalPhaseTimesTracker` in the outer scope. Therefore, `class RefProcPhaseTimeTracker` can be removed with no externally visible effect.
The structure is effectively:
```
{
RefProcTotalPhaseTimesTracker tt(SoftWeakFinalRefsPhase, &phase_times);
{
...
RefProcPhaseTimeTracker tt(SoftWeakFinalRefsPhase, &phase_times);
...
}
}
```
As shown, the effect of `RefProcPhaseTimeTracker` is shadowed by `RefProcTotalPhaseTimesTracker` in the outer scope. Therefore, `class RefProcPhaseTimeTracker` can be removed with no externally visible effect.