systemc: Track event sensitivities with a list instead of a set.
authorGabe Black <gabeblack@google.com>
Tue, 11 Sep 2018 00:23:22 +0000 (17:23 -0700)
committerGabe Black <gabeblack@google.com>
Tue, 9 Oct 2018 21:44:34 +0000 (21:44 +0000)
It's totally legal to signal that an event happened to waiting
processes in any order we choose, but to match the order of events
which appears in the Accellera test golden output, we need to do things
in the order they did. This is less efficient, but will reduce the
number of false positives.

Change-Id: Ie2882249ae846991d627f5f688a9e89e629bb300
Reviewed-on: https://gem5-review.googlesource.com/c/12612
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

src/systemc/core/event.hh

index 57d3f3f6f45eacfd3f4d5926499dc39202a1d3be..c39053be8e5a08a7d295eb154b16ae9e9935a2d8 100644 (file)
@@ -30,7 +30,7 @@
 #ifndef __SYSTEMC_CORE_EVENT_HH__
 #define __SYSTEMC_CORE_EVENT_HH__
 
-#include <set>
+#include <list>
 #include <string>
 #include <vector>
 
@@ -93,8 +93,8 @@ class Event
         return e->_gem5_event;
     }
 
-    void addSensitivity(Sensitivity *s) const { sensitivities.insert(s); }
-    void delSensitivity(Sensitivity *s) const { sensitivities.erase(s); }
+    void addSensitivity(Sensitivity *s) const { sensitivities.push_back(s); }
+    void delSensitivity(Sensitivity *s) const { sensitivities.remove(s); }
 
   private:
     sc_core::sc_event *_sc_event;
@@ -107,7 +107,7 @@ class Event
 
     ScEvent delayedNotify;
 
-    mutable std::set<Sensitivity *> sensitivities;
+    mutable std::list<Sensitivity *> sensitivities;
 };
 
 extern Events topLevelEvents;