From 02881a7bf3e5a5920d258d13ed0aed282f252f07 Mon Sep 17 00:00:00 2001 From: Curtis Dunham Date: Wed, 30 Sep 2015 15:21:55 -0500 Subject: base: remove Trace::enabled flag The DTRACE() macro tests both Trace::enabled and the specific flag. This change uses the same administrative interface for enabling/disabling tracing, but masks the SimpleFlags settings directly. This eliminates a load for every DTRACE() test, e.g. DPRINTF. --- src/base/debug.cc | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) (limited to 'src/base/debug.cc') diff --git a/src/base/debug.cc b/src/base/debug.cc index 2780344a4..6161c9e82 100644 --- a/src/base/debug.cc +++ b/src/base/debug.cc @@ -68,6 +68,8 @@ allFlags() return flags; } +bool SimpleFlag::_active = false; + Flag * findFlag(const std::string &name) { @@ -94,18 +96,34 @@ Flag::~Flag() // should find and remove flag. } +void +SimpleFlag::enableAll() +{ + _active = true; + for (auto& i : allFlags()) + i.second->sync(); +} + +void +SimpleFlag::disableAll() +{ + _active = false; + for (auto& i : allFlags()) + i.second->sync(); +} + void CompoundFlag::enable() { - SimpleFlag::enable(); - for_each(_kids.begin(), _kids.end(), mem_fun(&Flag::enable)); + for (auto& k : _kids) + k->enable(); } void CompoundFlag::disable() { - SimpleFlag::disable(); - for_each(_kids.begin(), _kids.end(), mem_fun(&Flag::disable)); + for (auto& k : _kids) + k->disable(); } struct AllFlags : public Flag -- cgit v1.2.3