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

Reply via email to