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 instance members to fix the problem. Change-Id: I68feb1d6d78e2fa5e8775afba8c81c6dd0de6c60 Signed-off-by: Isaac Sánchez Barrera <isaac.sanchez@bsc.es> Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/32394 Maintainer: Jason Lowe-Power <power.jg@gmail.com> Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: Jason Lowe-Power <power.jg@gmail.com> Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
This commit is contained in:
10
src/mem/cache/prefetch/Prefetcher.py
vendored
10
src/mem/cache/prefetch/Prefetcher.py
vendored
@@ -80,7 +80,11 @@ class BasePrefetcher(ClockedObject):
|
||||
use_virtual_addresses = Param.Bool(False,
|
||||
"Use virtual addresses for prefetching")
|
||||
|
||||
_events = []
|
||||
def __init__(self, **kwargs):
|
||||
super(BasePrefetcher, self).__init__(**kwargs)
|
||||
self._events = []
|
||||
self._tlbs = []
|
||||
|
||||
def addEvent(self, newObject):
|
||||
self._events.append(newObject)
|
||||
|
||||
@@ -90,7 +94,7 @@ class BasePrefetcher(ClockedObject):
|
||||
for tlb in self._tlbs:
|
||||
self.getCCObject().addTLB(tlb.getCCObject())
|
||||
for event in self._events:
|
||||
event.register()
|
||||
event.register()
|
||||
self.getCCObject().regProbeListeners()
|
||||
|
||||
def listenFromProbe(self, simObj, *probeNames):
|
||||
@@ -99,7 +103,7 @@ class BasePrefetcher(ClockedObject):
|
||||
if len(probeNames) <= 0:
|
||||
raise TypeError("probeNames must have at least one element")
|
||||
self.addEvent(HWPProbeEvent(self, simObj, *probeNames))
|
||||
_tlbs = []
|
||||
|
||||
def registerTLB(self, simObj):
|
||||
if not isinstance(simObj, SimObject):
|
||||
raise TypeError("argument must be a SimObject type")
|
||||
|
||||
Reference in New Issue
Block a user