diff options
Diffstat (limited to 'base/message_loop.cc')
-rw-r--r-- | base/message_loop.cc | 79 |
1 files changed, 39 insertions, 40 deletions
diff --git a/base/message_loop.cc b/base/message_loop.cc index 218ff26..1668fd7 100644 --- a/base/message_loop.cc +++ b/base/message_loop.cc @@ -7,7 +7,6 @@ #include <algorithm> #include "base/compiler_specific.h" -#include "base/histogram.h" #include "base/lazy_instance.h" #include "base/logging.h" #include "base/message_pump_default.h" @@ -28,53 +27,22 @@ using base::Time; using base::TimeDelta; -namespace { - // A lazily created thread local storage for quick access to a thread's message // loop, if one exists. This should be safe and free of static constructors. -base::LazyInstance<base::ThreadLocalPointer<MessageLoop> > lazy_tls_ptr( +static base::LazyInstance<base::ThreadLocalPointer<MessageLoop> > lazy_tls_ptr( base::LINKER_INITIALIZED); +//------------------------------------------------------------------------------ + // Logical events for Histogram profiling. Run with -message-loop-histogrammer // to get an accounting of messages and actions taken on each thread. -const int kTaskRunEvent = 0x1; -const int kTimerEvent = 0x2; +static const int kTaskRunEvent = 0x1; +static const int kTimerEvent = 0x2; // Provide range of message IDs for use in histogramming and debug display. -const int kLeastNonZeroMessageId = 1; -const int kMaxMessageId = 1099; -const int kNumberOfDistinctMessagesDisplayed = 1100; - -// Provide a macro that takes an expression (such as a constant, or macro -// constant) and creates a pair to initalize an array of pairs. In this case, -// our pair consists of the expressions value, and the "stringized" version -// of the expression (i.e., the exrpression put in quotes). For example, if -// we have: -// #define FOO 2 -// #define BAR 5 -// then the following: -// VALUE_TO_NUMBER_AND_NAME(FOO + BAR) -// will expand to: -// {7, "FOO + BAR"} -// We use the resulting array as an argument to our histogram, which reads the -// number as a bucket identifier, and proceeds to use the corresponding name -// in the pair (i.e., the quoted string) when printing out a histogram. -#define VALUE_TO_NUMBER_AND_NAME(name) {name, #name}, - -const LinearHistogram::DescriptionPair event_descriptions_[] = { - // Provide some pretty print capability in our histogram for our internal - // messages. - - // A few events we handle (kindred to messages), and used to profile actions. - VALUE_TO_NUMBER_AND_NAME(kTaskRunEvent) - VALUE_TO_NUMBER_AND_NAME(kTimerEvent) - - {-1, NULL} // The list must be null terminated, per API to histogram. -}; - -bool enable_histogrammer_ = false; - -} // namespace +static const int kLeastNonZeroMessageId = 1; +static const int kMaxMessageId = 1099; +static const int kNumberOfDistinctMessagesDisplayed = 1100; //------------------------------------------------------------------------------ @@ -599,6 +567,9 @@ bool MessageLoop::PendingTask::operator<(const PendingTask& other) const { // on each thread. // static +bool MessageLoop::enable_histogrammer_ = false; + +// static void MessageLoop::EnableHistogrammer(bool enable) { enable_histogrammer_ = enable; } @@ -620,6 +591,34 @@ void MessageLoop::HistogramEvent(int event) { message_histogram_->Add(event); } +// Provide a macro that takes an expression (such as a constant, or macro +// constant) and creates a pair to initalize an array of pairs. In this case, +// our pair consists of the expressions value, and the "stringized" version +// of the expression (i.e., the exrpression put in quotes). For example, if +// we have: +// #define FOO 2 +// #define BAR 5 +// then the following: +// VALUE_TO_NUMBER_AND_NAME(FOO + BAR) +// will expand to: +// {7, "FOO + BAR"} +// We use the resulting array as an argument to our histogram, which reads the +// number as a bucket identifier, and proceeds to use the corresponding name +// in the pair (i.e., the quoted string) when printing out a histogram. +#define VALUE_TO_NUMBER_AND_NAME(name) {name, #name}, + +// static +const LinearHistogram::DescriptionPair MessageLoop::event_descriptions_[] = { + // Provide some pretty print capability in our histogram for our internal + // messages. + + // A few events we handle (kindred to messages), and used to profile actions. + VALUE_TO_NUMBER_AND_NAME(kTaskRunEvent) + VALUE_TO_NUMBER_AND_NAME(kTimerEvent) + + {-1, NULL} // The list must be null terminated, per API to histogram. +}; + //------------------------------------------------------------------------------ // MessageLoopForUI |