Isaac Sánchez Barrera has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/32394 )

Change subject: mem-cache,python: Allow custom TLB and events in each prefetcher.
......................................................................

mem-cache,python: Allow custom TLB and events in each prefetcher.

The `BasePrefetcher` python class had members `_events` and `_tlbs`
defined as lists, meaning that any call to `list.append` on them would
affect `_events` and `_tlbs` for all prefetchers, not just the calling
object.  This change redefines them as `None` by default and sets the
value to a per-object empty list before inserting the first element.

Change-Id: I68feb1d6d78e2fa5e8775afba8c81c6dd0de6c60
Signed-off by: Isaac Sánchez Barrera <isaac.sanc...@bsc.es>
---
M src/mem/cache/prefetch/Prefetcher.py
1 file changed, 13 insertions(+), 6 deletions(-)



diff --git a/src/mem/cache/prefetch/Prefetcher.py b/src/mem/cache/prefetch/Prefetcher.py
index f131ccf..d6a01b9 100644
--- a/src/mem/cache/prefetch/Prefetcher.py
+++ b/src/mem/cache/prefetch/Prefetcher.py
@@ -80,17 +80,21 @@
     use_virtual_addresses = Param.Bool(False,
         "Use virtual addresses for prefetching")

-    _events = []
+    _events = None
     def addEvent(self, newObject):
+        if not self._events:
+            self._events = []
         self._events.append(newObject)

     # Override the normal SimObject::regProbeListeners method and
     # register deferred event handlers.
     def regProbeListeners(self):
-        for tlb in self._tlbs:
-            self.getCCObject().addTLB(tlb.getCCObject())
-        for event in self._events:
-           event.register()
+        if self._tlbs:
+            for tlb in self._tlbs:
+                self.getCCObject().addTLB(tlb.getCCObject())
+        if self._events:
+            for event in self._events:
+                event.register()
         self.getCCObject().regProbeListeners()

     def listenFromProbe(self, simObj, *probeNames):
@@ -99,10 +103,13 @@
         if len(probeNames) <= 0:
             raise TypeError("probeNames must have at least one element")
         self.addEvent(HWPProbeEvent(self, simObj, *probeNames))
-    _tlbs = []
+
+    _tlbs = None
     def registerTLB(self, simObj):
         if not isinstance(simObj, SimObject):
             raise TypeError("argument must be a SimObject type")
+        if not self._tlbs:
+            self._tlbs = []
         self._tlbs.append(simObj)

 class MultiPrefetcher(BasePrefetcher):

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/32394
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I68feb1d6d78e2fa5e8775afba8c81c6dd0de6c60
Gerrit-Change-Number: 32394
Gerrit-PatchSet: 1
Gerrit-Owner: Isaac Sánchez Barrera <isaac.sanc...@bsc.es>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to