changeset 56f97760eadd in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=56f97760eadd
description:
event: minor cleanup
Initialize flags via the Event constructor instead of calling
setFlags() in the body of the derived class's constructor. I
forget exactly why, but this made life easier when implementing
multi-queue support.
Also rename Event::getFlags() to isFlagSet() to better match
common usage, and get rid of some unused Event methods.
diffstat:
src/cpu/o3/commit_impl.hh | 3 +--
src/cpu/o3/inst_queue_impl.hh | 5 ++---
src/cpu/o3/lsq_unit_impl.hh | 4 ++--
src/dev/etherlink.cc | 8 ++------
src/mem/ruby/eventqueue/RubyEventQueueNode.hh | 4 ++--
src/sim/debug.cc | 3 +--
src/sim/eventq.hh | 26 ++++++++------------------
src/sim/sim_events.cc | 7 +++----
src/sim/stat_control.cc | 4 ++--
9 files changed, 23 insertions(+), 41 deletions(-)
diffs (212 lines):
diff -r a32e8ce374d6 -r 56f97760eadd src/cpu/o3/commit_impl.hh
--- a/src/cpu/o3/commit_impl.hh Thu Sep 22 18:59:54 2011 -0700
+++ b/src/cpu/o3/commit_impl.hh Thu Sep 22 18:59:55 2011 -0700
@@ -71,9 +71,8 @@
template <class Impl>
DefaultCommit<Impl>::TrapEvent::TrapEvent(DefaultCommit<Impl> *_commit,
ThreadID _tid)
- : Event(CPU_Tick_Pri), commit(_commit), tid(_tid)
+ : Event(CPU_Tick_Pri, AutoDelete), commit(_commit), tid(_tid)
{
- this->setFlags(AutoDelete);
}
template <class Impl>
diff -r a32e8ce374d6 -r 56f97760eadd src/cpu/o3/inst_queue_impl.hh
--- a/src/cpu/o3/inst_queue_impl.hh Thu Sep 22 18:59:54 2011 -0700
+++ b/src/cpu/o3/inst_queue_impl.hh Thu Sep 22 18:59:55 2011 -0700
@@ -56,10 +56,9 @@
template <class Impl>
InstructionQueue<Impl>::FUCompletion::FUCompletion(DynInstPtr &_inst,
int fu_idx, InstructionQueue<Impl> *iq_ptr)
- : Event(Stat_Event_Pri), inst(_inst), fuIdx(fu_idx), iqPtr(iq_ptr),
- freeFU(false)
+ : Event(Stat_Event_Pri, AutoDelete),
+ inst(_inst), fuIdx(fu_idx), iqPtr(iq_ptr), freeFU(false)
{
- this->setFlags(Event::AutoDelete);
}
template <class Impl>
diff -r a32e8ce374d6 -r 56f97760eadd src/cpu/o3/lsq_unit_impl.hh
--- a/src/cpu/o3/lsq_unit_impl.hh Thu Sep 22 18:59:54 2011 -0700
+++ b/src/cpu/o3/lsq_unit_impl.hh Thu Sep 22 18:59:55 2011 -0700
@@ -60,9 +60,9 @@
template<class Impl>
LSQUnit<Impl>::WritebackEvent::WritebackEvent(DynInstPtr &_inst, PacketPtr
_pkt,
LSQUnit *lsq_ptr)
- : inst(_inst), pkt(_pkt), lsqPtr(lsq_ptr)
+ : Event(Default_Pri, AutoDelete),
+ inst(_inst), pkt(_pkt), lsqPtr(lsq_ptr)
{
- this->setFlags(Event::AutoDelete);
}
template<class Impl>
diff -r a32e8ce374d6 -r 56f97760eadd src/dev/etherlink.cc
--- a/src/dev/etherlink.cc Thu Sep 22 18:59:54 2011 -0700
+++ b/src/dev/etherlink.cc Thu Sep 22 18:59:55 2011 -0700
@@ -228,17 +228,13 @@
}
LinkDelayEvent::LinkDelayEvent()
- : link(NULL)
+ : Event(Default_Pri, AutoSerialize | AutoDelete), link(NULL)
{
- setFlags(AutoSerialize);
- setFlags(AutoDelete);
}
LinkDelayEvent::LinkDelayEvent(EtherLink::Link *l, EthPacketPtr p)
- : link(l), packet(p)
+ : Event(Default_Pri, AutoSerialize | AutoDelete), link(l), packet(p)
{
- setFlags(AutoSerialize);
- setFlags(AutoDelete);
}
void
diff -r a32e8ce374d6 -r 56f97760eadd
src/mem/ruby/eventqueue/RubyEventQueueNode.hh
--- a/src/mem/ruby/eventqueue/RubyEventQueueNode.hh Thu Sep 22 18:59:54
2011 -0700
+++ b/src/mem/ruby/eventqueue/RubyEventQueueNode.hh Thu Sep 22 18:59:55
2011 -0700
@@ -39,9 +39,9 @@
{
public:
RubyEventQueueNode(Consumer* _consumer, RubyEventQueue* _eventq)
- : m_consumer_ptr(_consumer), m_eventq_ptr(_eventq)
+ : Event(Default_Pri, AutoDelete),
+ m_consumer_ptr(_consumer), m_eventq_ptr(_eventq)
{
- setFlags(AutoDelete);
}
void print(std::ostream& out) const;
diff -r a32e8ce374d6 -r 56f97760eadd src/sim/debug.cc
--- a/src/sim/debug.cc Thu Sep 22 18:59:54 2011 -0700
+++ b/src/sim/debug.cc Thu Sep 22 18:59:55 2011 -0700
@@ -57,9 +57,8 @@
// constructor: schedule at specified time
//
DebugBreakEvent::DebugBreakEvent()
- : Event(Debug_Break_Pri)
+ : Event(Debug_Break_Pri, AutoDelete)
{
- setFlags(AutoDelete);
}
//
diff -r a32e8ce374d6 -r 56f97760eadd src/sim/eventq.hh
--- a/src/sim/eventq.hh Thu Sep 22 18:59:54 2011 -0700
+++ b/src/sim/eventq.hh Thu Sep 22 18:59:55 2011 -0700
@@ -149,20 +149,13 @@
return flags & PublicRead;
}
- Flags
- getFlags(Flags _flags) const
+ bool
+ isFlagSet(Flags _flags) const
{
assert(_flags.noneSet(~PublicRead));
return flags.isSet(_flags);
}
- Flags
- allFlags(Flags _flags) const
- {
- assert(_flags.noneSet(~PublicRead));
- return flags.allSet(_flags);
- }
-
/// Accessor for flags.
void
setFlags(Flags _flags)
@@ -247,9 +240,11 @@
* Event constructor
* @param queue that the event gets scheduled on
*/
- Event(Priority p = Default_Pri)
- : nextBin(NULL), nextInBin(NULL), _priority(p), flags(Initialized)
+ Event(Priority p = Default_Pri, Flags f = 0)
+ : nextBin(NULL), nextInBin(NULL), _priority(p),
+ flags(Initialized | f)
{
+ assert(f.noneSet(~PublicWrite));
#ifndef NDEBUG
instance = ++instanceCounter;
queue = NULL;
@@ -406,16 +401,11 @@
}
}
- // default: process all events up to 'now' (curTick())
- void serviceEvents() { serviceEvents(curTick()); }
-
// return true if no events are queued
bool empty() const { return head == NULL; }
void dump() const;
- Tick nextEventTime() { return empty() ? curTick() : head->when(); }
-
bool debugVerify() const;
#ifndef SWIG
@@ -559,8 +549,8 @@
public:
DelayEvent(T *o)
- : object(o)
- { this->setFlags(AutoDelete); }
+ : Event(Default_Pri, AutoDelete), object(o)
+ { }
void process() { (object->*F)(); }
const char *description() const { return "delay"; }
};
diff -r a32e8ce374d6 -r 56f97760eadd src/sim/sim_events.cc
--- a/src/sim/sim_events.cc Thu Sep 22 18:59:54 2011 -0700
+++ b/src/sim/sim_events.cc Thu Sep 22 18:59:55 2011 -0700
@@ -40,9 +40,8 @@
using namespace std;
SimLoopExitEvent::SimLoopExitEvent(const std::string &_cause, int c, Tick r)
- : Event(Sim_Exit_Pri), cause(_cause), code(c), repeat(r)
+ : Event(Sim_Exit_Pri, IsExitEvent), cause(_cause), code(c), repeat(r)
{
- setFlags(IsExitEvent);
}
@@ -55,7 +54,7 @@
// if this got scheduled on a different queue (e.g. the committed
// instruction queue) then make a corresponding event on the main
// queue.
- if (!getFlags(IsMainQueue)) {
+ if (!isFlagSet(IsMainQueue)) {
exitSimLoop(cause, code);
delete this;
}
@@ -65,7 +64,7 @@
// but if you are doing this on intervals, don't forget to make another
if (repeat) {
- assert(getFlags(IsMainQueue));
+ assert(isFlagSet(IsMainQueue));
mainEventQueue.schedule(this, curTick() + repeat);
}
}
diff -r a32e8ce374d6 -r 56f97760eadd src/sim/stat_control.cc
--- a/src/sim/stat_control.cc Thu Sep 22 18:59:54 2011 -0700
+++ b/src/sim/stat_control.cc Thu Sep 22 18:59:55 2011 -0700
@@ -175,9 +175,9 @@
public:
StatEvent(bool _dump, bool _reset, Tick _repeat)
- : Event(Stat_Event_Pri), dump(_dump), reset(_reset), repeat(_repeat)
+ : Event(Stat_Event_Pri, AutoDelete),
+ dump(_dump), reset(_reset), repeat(_repeat)
{
- setFlags(AutoDelete);
}
virtual void
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev