changeset fe0972727902 in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=fe0972727902
description:
        sim: Update limit_event reuse to final version

        Matching final version on reviewboard.

diffstat:

 src/sim/sim_events.hh |   5 -----
 src/sim/simulate.cc   |  13 +++++--------
 src/sim/simulate.hh   |   2 +-
 3 files changed, 6 insertions(+), 14 deletions(-)

diffs (61 lines):

diff -r c7e392e343eb -r fe0972727902 src/sim/sim_events.hh
--- a/src/sim/sim_events.hh     Thu Mar 26 11:16:43 2015 -0400
+++ b/src/sim/sim_events.hh     Thu Mar 26 11:16:44 2015 -0400
@@ -71,11 +71,6 @@
     void process();     // process event
 
     virtual const char *description() const;
-
-    virtual ~GlobalSimLoopExitEvent() {
-        // simulate()'s singleton GlobalSimLoopExitEvent is always scheduled
-        deschedule();
-    }
 };
 
 class LocalSimLoopExitEvent : public Event
diff -r c7e392e343eb -r fe0972727902 src/sim/simulate.cc
--- a/src/sim/simulate.cc       Thu Mar 26 11:16:43 2015 -0400
+++ b/src/sim/simulate.cc       Thu Mar 26 11:16:44 2015 -0400
@@ -71,13 +71,7 @@
     }
 }
 
-GlobalEvent*
-getLimitEvent(void) {
-    static GlobalSimLoopExitEvent
-           simulate_limit_event(mainEventQueue[0]->getCurTick(),
-                                "simulate() limit reached", 0);
-    return &simulate_limit_event;
-}
+GlobalSimLoopExitEvent *simulate_limit_event = nullptr;
 
 /** Simulate for num_cycles additional cycles.  If num_cycles is -1
  * (the default), do not limit simulation; some other event must
@@ -104,6 +98,9 @@
         }
 
         threads_initialized = true;
+        simulate_limit_event =
+            new GlobalSimLoopExitEvent(mainEventQueue[0]->getCurTick(),
+                                       "simulate() limit reached", 0);
     }
 
     inform("Entering event queue @ %d.  Starting simulation...\n", curTick());
@@ -113,7 +110,7 @@
     else // counter would roll over or be set to MaxTick anyhow
         num_cycles = MaxTick;
 
-    getLimitEvent()->reschedule(num_cycles);
+    simulate_limit_event->reschedule(num_cycles);
 
     GlobalSyncEvent *quantum_event = NULL;
     if (numMainEventQueues > 1) {
diff -r c7e392e343eb -r fe0972727902 src/sim/simulate.hh
--- a/src/sim/simulate.hh       Thu Mar 26 11:16:43 2015 -0400
+++ b/src/sim/simulate.hh       Thu Mar 26 11:16:44 2015 -0400
@@ -33,4 +33,4 @@
 #include "sim/sim_events.hh"
 
 GlobalSimLoopExitEvent *simulate(Tick num_cycles = MaxTick);
-GlobalEvent* getLimitEvent();
+extern GlobalSimLoopExitEvent *simulate_limit_event;
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to