stats: Ignore non-Group objects in stat hierarchy
Some objects, such as SystemC modules, are not a subclass of Stat::Group. Calling the addStatGroup function on them causes errors. This changes ignores those objects that are not Stat::Group in the stat hierarchy. Signed-off-by: Chun-Chen TK Hsu <chunchenhsu@google.com> Change-Id: I9b62419417b7af7331461fbfaf15e45a4ee2b35f Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20680 Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Maintainer: Jason Lowe-Power <jason@lowepower.com> Maintainer: Andreas Sandberg <andreas.sandberg@arm.com> Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
@@ -257,7 +257,19 @@ def _bindStatHierarchy(root):
|
||||
for idx, obj in enumerate(obj):
|
||||
_bind_obj("{}{}".format(name, idx), obj)
|
||||
else:
|
||||
root.addStatGroup(name, obj.getCCObject())
|
||||
# We need this check because not all obj.getCCObject() is an
|
||||
# instance of Stat::Group. For example, sc_core::sc_module, the C++
|
||||
# class of SystemC_ScModule, is not a subclass of Stat::Group. So
|
||||
# it will cause a type error if obj is a SystemC_ScModule when
|
||||
# calling addStatGroup().
|
||||
if isinstance(obj.getCCObject(), _m5.stats.Group):
|
||||
parent = root
|
||||
while parent:
|
||||
if hasattr(parent, 'addStatGroup'):
|
||||
parent.addStatGroup(name, obj.getCCObject())
|
||||
break
|
||||
parent = parent.get_parent();
|
||||
|
||||
_bindStatHierarchy(obj)
|
||||
|
||||
for name, obj in root._children.items():
|
||||
|
||||
Reference in New Issue
Block a user