diff options
author | Curtis Dunham <Curtis.Dunham@arm.com> | 2015-09-30 15:21:55 -0500 |
---|---|---|
committer | Curtis Dunham <Curtis.Dunham@arm.com> | 2015-09-30 15:21:55 -0500 |
commit | 02881a7bf3e5a5920d258d13ed0aed282f252f07 (patch) | |
tree | 73b16a32bbfc03c789d75c35d951b108cae98a94 /src/base/debug.cc | |
parent | ccf4f6c3d7616c546d78eb21d22ebda812b5e2bb (diff) | |
download | gem5-02881a7bf3e5a5920d258d13ed0aed282f252f07.tar.xz |
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.
Diffstat (limited to 'src/base/debug.cc')
-rw-r--r-- | src/base/debug.cc | 26 |
1 files changed, 22 insertions, 4 deletions
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) { @@ -95,17 +97,33 @@ Flag::~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 |