- 
    Enhancement 
- 
    Resolution: Fixed
- 
     P4 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.
 
        