mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-11 21:45:16 +00:00
Make LLVM timer reprintable: that is, make more than one print action on the same timer feasible
Currently, each LLVM timer can be only printed once, as the act of printing clears the timer. Moreover, the current printing mechanism implicitly assumes that the timer is stopped -- and prints zero otherwise. This patch relaxes this assumption and makes printing statistics multiple time a possibility. Differential Revision: https://reviews.llvm.org/D43136 llvm-svn: 324788
This commit is contained in:
parent
7c35687d1c
commit
8a94c746f9
@ -336,10 +336,14 @@ void TimerGroup::prepareToPrintList() {
|
||||
// reset them.
|
||||
for (Timer *T = FirstTimer; T; T = T->Next) {
|
||||
if (!T->hasTriggered()) continue;
|
||||
bool WasRunning = T->isRunning();
|
||||
if (WasRunning)
|
||||
T->stopTimer();
|
||||
|
||||
TimersToPrint.emplace_back(T->Time, T->Name, T->Description);
|
||||
|
||||
// Clear out the time.
|
||||
T->clear();
|
||||
if (WasRunning)
|
||||
T->startTimer();
|
||||
}
|
||||
}
|
||||
|
||||
@ -381,6 +385,10 @@ const char *TimerGroup::printJSONValues(raw_ostream &OS, const char *delim) {
|
||||
printJSONValue(OS, R, ".user", T.getUserTime());
|
||||
OS << delim;
|
||||
printJSONValue(OS, R, ".sys", T.getSystemTime());
|
||||
if (T.getMemUsed()) {
|
||||
OS << delim;
|
||||
printJSONValue(OS, R, ".sys", T.getMemUsed());
|
||||
}
|
||||
}
|
||||
TimersToPrint.clear();
|
||||
return delim;
|
||||
|
Loading…
Reference in New Issue
Block a user