[llvm-commits] CVS: llvm/lib/Support/Timer.cpp

Chris Lattner lattner at cs.uiuc.edu
Mon Oct 6 10:03:09 PDT 2003


Changes in directory llvm/lib/Support:

Timer.cpp updated: 1.24 -> 1.25

---
Log message:

Implement the NamedRegionTimer class


---
Diffs of the changes:

Index: llvm/lib/Support/Timer.cpp
diff -u llvm/lib/Support/Timer.cpp:1.24 llvm/lib/Support/Timer.cpp:1.25
--- llvm/lib/Support/Timer.cpp:1.24	Fri Aug  1 17:15:15 2003
+++ llvm/lib/Support/Timer.cpp	Mon Oct  6 10:02:31 2003
@@ -16,6 +16,7 @@
 #include <algorithm>
 #include <functional>
 #include <fstream>
+#include <map>
 
 // getLibSupportInfoOutputFilename - This ugly hack is brought to you courtesy
 // of constructor/destructor ordering being unspecified by C++.  Basically the
@@ -177,6 +178,23 @@
          E = ActiveTimers.end(); I != E; ++I)
     (*I)->PeakMem = std::max((*I)->PeakMem, MemUsed-(*I)->PeakMemBase);
 }
+
+//===----------------------------------------------------------------------===//
+//   NamedRegionTimer Implementation
+//===----------------------------------------------------------------------===//
+
+static Timer &getNamedRegionTimer(const std::string &Name) {
+  static std::map<std::string, Timer> NamedTimers;
+
+  std::map<std::string, Timer>::iterator I = NamedTimers.lower_bound(Name);
+  if (I != NamedTimers.end() && I->first == Name)
+    return I->second;
+
+  return NamedTimers.insert(I, std::make_pair(Name, Timer(Name)))->second;
+}
+
+NamedRegionTimer::NamedRegionTimer(const std::string &Name)
+  : TimeRegion(getNamedRegionTimer(Name)) {}
 
 
 //===----------------------------------------------------------------------===//





More information about the llvm-commits mailing list