event: minor cleanup
authorSteve Reinhardt <steve.reinhardt@amd.com>
Fri, 23 Sep 2011 01:59:55 +0000 (18:59 -0700)
committerSteve Reinhardt <steve.reinhardt@amd.com>
Fri, 23 Sep 2011 01:59:55 +0000 (18:59 -0700)
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.

src/cpu/o3/commit_impl.hh
src/cpu/o3/inst_queue_impl.hh
src/cpu/o3/lsq_unit_impl.hh
src/dev/etherlink.cc
src/mem/ruby/eventqueue/RubyEventQueueNode.hh
src/sim/debug.cc
src/sim/eventq.hh
src/sim/sim_events.cc
src/sim/stat_control.cc

index f218cc76a65655f33397ba1ad3ad40d5e2fb67e8..75ae87c7545f8311c431350dcb73b7432a4e4a51 100644 (file)
@@ -71,9 +71,8 @@ using namespace std;
 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>
index 9f1dc77b21d48f5b7043092bcd8f2936a4ace5e2..b2016cc9c185ed9df0134a91c61c132144afa43f 100644 (file)
@@ -56,10 +56,9 @@ using namespace std;
 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>
index f934e203228b8e97f5b8255f6fb5fb5448722b17..2a37d8b5c3a4a950b453f3acdff7965fd7fddcdc 100644 (file)
@@ -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>
index 289b7454342b659c725a76bb259daed492ce8288..5ebc4fba52ee8c35081054e24c16909794cbdde5 100644 (file)
@@ -228,17 +228,13 @@ EtherLink::Link::unserialize(const string &base, Checkpoint *cp,
 }
 
 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
index 0bdc48e61f3fe41800c16217512e25cdfd58f2bd..de1550654e88850e533cfc04274f6aa60efb149d 100644 (file)
@@ -39,9 +39,9 @@ class RubyEventQueueNode : public Event
 {
   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;
index bd7924117fc241ab0e143db891053e8be4148ec9..fadd89ae124b46f718d73eb1fc34f46480d56bda 100644 (file)
@@ -57,9 +57,8 @@ struct DebugBreakEvent : public Event
 // constructor: schedule at specified time
 //
 DebugBreakEvent::DebugBreakEvent()
-    : Event(Debug_Break_Pri)
+    : Event(Debug_Break_Pri, AutoDelete)
 {
-    setFlags(AutoDelete);
 }
 
 //
index fcfa119c4d7e48973c23f3d585030e8fcd3c0ff6..1509d05a5e379b1fb7ad66581ca2044573efc1d2 100644 (file)
@@ -149,20 +149,13 @@ class Event : public Serializable, public FastAlloc
         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 @@ class Event : public Serializable, public FastAlloc
      * 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 @@ class EventQueue : public Serializable
         }
     }
 
-    // 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 @@ DelayFunction(EventQueue *eventq, Tick when, T *object)
 
       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"; }
     };
index aac844429767ccc18e30e102baf3350cd6ad96a4..725e7da9deb61fcd992de67b513f9cf71f6157b8 100644 (file)
@@ -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 @@ SimLoopExitEvent::process()
     // 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 @@ SimLoopExitEvent::process()
 
     // 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);
     }
 }
index 80aec224e5358ff92dcf34f6891c525802c1d2b1..7cf77174f176480c6b968005d2396d2fe4c6fe80 100644 (file)
@@ -175,9 +175,9 @@ class StatEvent : public Event
 
   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