stats: Don't output index in vectors of length 1
authorAndreas Sandberg <andreas.sandberg@arm.com>
Tue, 24 Sep 2019 17:46:23 +0000 (18:46 +0100)
committerAndreas Sandberg <andreas.sandberg@arm.com>
Thu, 26 Sep 2019 10:03:22 +0000 (10:03 +0000)
New-world stats didn't implement the old gem5 quirk where the index of
an element in a vector of size 1 is ignored. This affects the object
path when printed in a stat file. Implement the same quirk as the
original code to make sure names of old- and new-world stats are
compatible.

Change-Id: I12696d40baaed2d0bb1ef061e87c3b1d0f4bb4b1
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/21163
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Daniel Carvalho <odanrc@yahoo.com.br>
src/python/m5/stats/__init__.py

index ab11a9d61d42b5f5f187e15573132cca3f21f8da..e2e1909f7ea034bf4294c900ccb89f1e7d113236 100644 (file)
@@ -257,8 +257,11 @@ def _bindStatHierarchy(root):
         if isNullPointer(obj):
             return
         if m5.SimObject.isSimObjectVector(obj):
-            for idx, obj in enumerate(obj):
-                _bind_obj("{}{}".format(name, idx), obj)
+            if len(obj) == 1:
+                _bind_obj(name, obj[0])
+            else:
+                for idx, obj in enumerate(obj):
+                    _bind_obj("{}{}".format(name, idx), obj)
         else:
             # We need this check because not all obj.getCCObject() is an
             # instance of Stat::Group. For example, sc_core::sc_module, the C++