summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPavel Labath <labath@google.com>2016-02-01 13:29:41 +0000
committerPavel Labath <labath@google.com>2016-02-01 13:29:41 +0000
commit061140c680d2f0685b160e06216304ffe09f1d44 (patch)
tree9cb31591aa2b03d926c3b645c284022fa37b723e
parent6277b185d4059358056d35af093bc195206a67b5 (diff)
downloadbcm5719-llvm-061140c680d2f0685b160e06216304ffe09f1d44.tar.gz
bcm5719-llvm-061140c680d2f0685b160e06216304ffe09f1d44.zip
Remove Timer::Initialize routine
Summary: I've run into an issue when running unit tests, where the underlying problem turned out to be that we were creating Timer objects (through several layers of indirection) without calling Timer::Initialize. Since Timer's thread-local storage was not properly initialized, we were overwriting gtest's own thread-local storage, causing test failures. Instead of requiring that every test calls Timer::Initialize(), I remove the function altogether: The thread-local storage can be initialized on-demand, and the g_file variable initialized to stdout and never changed, so I have simply removed it. Reviewers: clayborg, zturner, tberghammer Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D16722 llvm-svn: 259356
-rw-r--r--lldb/include/lldb/Core/Timer.h4
-rw-r--r--lldb/source/Core/Timer.cpp35
-rw-r--r--lldb/source/Initialization/SystemInitializerCommon.cpp1
3 files changed, 12 insertions, 28 deletions
diff --git a/lldb/include/lldb/Core/Timer.h b/lldb/include/lldb/Core/Timer.h
index ffaeba6fce9..4996db62557 100644
--- a/lldb/include/lldb/Core/Timer.h
+++ b/lldb/include/lldb/Core/Timer.h
@@ -50,9 +50,6 @@ public:
//--------------------------------------------------------------
~Timer();
- static void
- Initialize ();
-
void
Dump ();
@@ -90,7 +87,6 @@ protected:
static std::atomic<bool> g_quiet;
static std::atomic<unsigned> g_display_depth;
static std::mutex g_file_mutex;
- static FILE* g_file;
private:
Timer();
diff --git a/lldb/source/Core/Timer.cpp b/lldb/source/Core/Timer.cpp
index e53ce2ec453..7a6e5de75cf 100644
--- a/lldb/source/Core/Timer.cpp
+++ b/lldb/source/Core/Timer.cpp
@@ -40,9 +40,7 @@ namespace
std::atomic<bool> Timer::g_quiet(true);
std::atomic<unsigned> Timer::g_display_depth(0);
std::mutex Timer::g_file_mutex;
-FILE* Timer::g_file = nullptr;
-static lldb::thread_key_t g_key;
static Mutex &
GetCategoryMutex()
@@ -58,10 +56,17 @@ GetCategoryMap()
return g_category_map;
}
+static void
+ThreadSpecificCleanup(void *p)
+{
+ delete static_cast<TimerStack *>(p);
+}
static TimerStack *
GetTimerStackForCurrentThread ()
{
+ static lldb::thread_key_t g_key = Host::ThreadLocalStorageCreate(ThreadSpecificCleanup);
+
void *timer_stack = Host::ThreadLocalStorageGet(g_key);
if (timer_stack == NULL)
{
@@ -72,24 +77,11 @@ GetTimerStackForCurrentThread ()
}
void
-ThreadSpecificCleanup (void *p)
-{
- delete (TimerStack *)p;
-}
-
-void
Timer::SetQuiet (bool value)
{
g_quiet = value;
}
-void
-Timer::Initialize ()
-{
- Timer::g_file = stdout;
- g_key = Host::ThreadLocalStorageCreate(ThreadSpecificCleanup);
-}
-
Timer::Timer (const char *category, const char *format, ...) :
m_category (category),
m_total_start (),
@@ -108,15 +100,15 @@ Timer::Timer (const char *category, const char *format, ...) :
std::lock_guard<std::mutex> lock(g_file_mutex);
// Indent
- ::fprintf (g_file, "%*s", stack->m_depth * TIMER_INDENT_AMOUNT, "");
+ ::fprintf(stdout, "%*s", stack->m_depth * TIMER_INDENT_AMOUNT, "");
// Print formatted string
va_list args;
va_start (args, format);
- ::vfprintf (g_file, format, args);
+ ::vfprintf(stdout, format, args);
va_end (args);
// Newline
- ::fprintf (g_file, "\n");
+ ::fprintf(stdout, "\n");
}
TimeValue start_time(TimeValue::Now());
m_total_start = start_time;
@@ -161,11 +153,8 @@ Timer::~Timer()
if (g_quiet == false)
{
std::lock_guard<std::mutex> lock(g_file_mutex);
- ::fprintf (g_file,
- "%*s%.9f sec (%.9f sec)\n",
- (stack->m_depth - 1) *TIMER_INDENT_AMOUNT, "",
- total_nsec / 1000000000.0,
- timer_nsec / 1000000000.0);
+ ::fprintf(stdout, "%*s%.9f sec (%.9f sec)\n", (stack->m_depth - 1) * TIMER_INDENT_AMOUNT, "",
+ total_nsec / 1000000000.0, timer_nsec / 1000000000.0);
}
// Keep total results for each category so we can dump results.
diff --git a/lldb/source/Initialization/SystemInitializerCommon.cpp b/lldb/source/Initialization/SystemInitializerCommon.cpp
index 6cbc0b707df..a5e3c116e72 100644
--- a/lldb/source/Initialization/SystemInitializerCommon.cpp
+++ b/lldb/source/Initialization/SystemInitializerCommon.cpp
@@ -97,7 +97,6 @@ SystemInitializerCommon::Initialize()
Log::Initialize();
HostInfo::Initialize();
- Timer::Initialize();
Timer scoped_timer(__PRETTY_FUNCTION__, __PRETTY_FUNCTION__);
llvm::install_fatal_error_handler(fatal_error_handler, 0);
OpenPOWER on IntegriCloud