mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
if a timergroup is destroyed before its timers, print times.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99873 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b9312690a2
commit
9f9f6d19dd
@ -171,6 +171,7 @@ public:
|
|||||||
explicit TimerGroup(const TimerGroup &TG) : FirstTimer(0) {
|
explicit TimerGroup(const TimerGroup &TG) : FirstTimer(0) {
|
||||||
operator=(TG);
|
operator=(TG);
|
||||||
}
|
}
|
||||||
|
~TimerGroup();
|
||||||
|
|
||||||
void operator=(const TimerGroup &TG) {
|
void operator=(const TimerGroup &TG) {
|
||||||
assert(TG.FirstTimer == 0 && FirstTimer == 0 &&
|
assert(TG.FirstTimer == 0 && FirstTimer == 0 &&
|
||||||
@ -181,11 +182,6 @@ public:
|
|||||||
|
|
||||||
void setName(const std::string &name) { Name = name; }
|
void setName(const std::string &name) { Name = name; }
|
||||||
|
|
||||||
~TimerGroup() {
|
|
||||||
assert(FirstTimer == 0 &&
|
|
||||||
"TimerGroup destroyed before all contained timers!");
|
|
||||||
}
|
|
||||||
|
|
||||||
void PrintQueuedTimers(raw_ostream &OS);
|
void PrintQueuedTimers(raw_ostream &OS);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -128,6 +128,6 @@ StatisticInfo::~StatisticInfo() {
|
|||||||
OutStream << '\n'; // Flush the output stream...
|
OutStream << '\n'; // Flush the output stream...
|
||||||
OutStream.flush();
|
OutStream.flush();
|
||||||
|
|
||||||
if (&OutStream != &outs() && &OutStream != &errs() && &OutStream != &dbgs())
|
if (&OutStream != &outs() && &OutStream != &errs())
|
||||||
delete &OutStream; // Close the file.
|
delete &OutStream; // Close the file.
|
||||||
}
|
}
|
||||||
|
@ -237,14 +237,22 @@ NamedRegionTimer::NamedRegionTimer(const std::string &Name,
|
|||||||
// TimerGroup Implementation
|
// TimerGroup Implementation
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
|
TimerGroup::~TimerGroup() {
|
||||||
|
// If the timer group is destroyed before the timers it owns, accumulate and
|
||||||
|
// print the timing data.
|
||||||
|
while (FirstTimer != 0)
|
||||||
|
removeTimer(*FirstTimer);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void TimerGroup::removeTimer(Timer &T) {
|
void TimerGroup::removeTimer(Timer &T) {
|
||||||
sys::SmartScopedLock<true> L(*TimerLock);
|
sys::SmartScopedLock<true> L(*TimerLock);
|
||||||
|
|
||||||
// If the timer was started, move its data to TimersToPrint.
|
// If the timer was started, move its data to TimersToPrint.
|
||||||
if (T.Started) {
|
if (T.Started)
|
||||||
T.Started = false;
|
|
||||||
TimersToPrint.push_back(std::make_pair(T.Time, T.Name));
|
TimersToPrint.push_back(std::make_pair(T.Time, T.Name));
|
||||||
}
|
|
||||||
|
T.TG = 0;
|
||||||
|
|
||||||
// Unlink the timer from our list.
|
// Unlink the timer from our list.
|
||||||
*T.Prev = T.Next;
|
*T.Prev = T.Next;
|
||||||
|
Loading…
Reference in New Issue
Block a user