python: Don't use Swig to cast stats

Call the stat visitor from the stat itself rather than casting stats
in Python. This reduces the number of ways visitors are called.

Change-Id: Ic4d0b7b32e3ab9897b9a34cd22d353f4da62d738
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Sascha Bischoff <sascha.bischoff@arm.com>
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Joe Gross <joseph.gross@amd.com>
This commit is contained in:
Andreas Sandberg
2017-01-03 12:03:45 +00:00
parent abe7ef95cb
commit c8b1e8f1cf
2 changed files with 3 additions and 31 deletions

View File

@@ -49,25 +49,13 @@ def initSimStats():
names = []
stats_dict = {}
stats_list = []
raw_stats_list = []
def enable():
'''Enable the statistics package. Before the statistics package is
enabled, all statistics must be created and initialized and once
the package is enabled, no more statistics can be created.'''
__dynamic_cast = []
for k, v in internal.stats.__dict__.iteritems():
if k.startswith('dynamic_'):
__dynamic_cast.append(v)
for stat in internal.stats.statsList():
for cast in __dynamic_cast:
val = cast(stat)
if val is not None:
stats_list.append(val)
raw_stats_list.append(val)
break
else:
fatal("unknown stat type %s", stat)
global stats_list
stats_list = list(internal.stats.statsList())
for stat in stats_list:
if not stat.check() or not stat.baseCheck():
@@ -116,7 +104,7 @@ def dump():
if output.valid():
output.begin()
for stat in stats_list:
output.visit(stat)
stat.visit(output)
output.end()
def reset():