diff options
author | Andreas Sandberg <andreas.sandberg@arm.com> | 2017-01-03 12:03:45 +0000 |
---|---|---|
committer | Andreas Sandberg <andreas.sandberg@arm.com> | 2017-01-03 12:03:45 +0000 |
commit | c8b1e8f1cfdb5b66bacbbbd23dcf9ebb5a0f3b95 (patch) | |
tree | d5d367cc362881d9e00d2c881d86698549a735bd /src/python | |
parent | abe7ef95cb89c68c6385162cb801bab8b27a585b (diff) | |
download | gem5-c8b1e8f1cfdb5b66bacbbbd23dcf9ebb5a0f3b95.tar.xz |
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>
Diffstat (limited to 'src/python')
-rw-r--r-- | src/python/m5/stats/__init__.py | 20 | ||||
-rw-r--r-- | src/python/swig/stats.i | 16 |
2 files changed, 4 insertions, 32 deletions
diff --git a/src/python/m5/stats/__init__.py b/src/python/m5/stats/__init__.py index 4defaf5c1..f3d394311 100644 --- a/src/python/m5/stats/__init__.py +++ b/src/python/m5/stats/__init__.py @@ -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(): diff --git a/src/python/swig/stats.i b/src/python/swig/stats.i index 41115445c..b9da5a5ad 100644 --- a/src/python/swig/stats.i +++ b/src/python/swig/stats.i @@ -46,12 +46,6 @@ #include "sim/stat_register.hh" namespace Stats { -template <class T> -inline T -cast_info(Info *info) -{ - return dynamic_cast<T>(info); -} inline FlagsType Stats_Info_flags_get(Info *info) @@ -124,16 +118,6 @@ namespace std { namespace Stats { -template <class T> T cast_info(Info *info); - -%template(dynamic_ScalarInfo) cast_info<ScalarInfo *>; -%template(dynamic_VectorInfo) cast_info<VectorInfo *>; -%template(dynamic_DistInfo) cast_info<DistInfo *>; -%template(dynamic_VectorDistInfo) cast_info<VectorDistInfo *>; -%template(dynamic_Vector2dInfo) cast_info<Vector2dInfo *>; -%template(dynamic_FormulaInfo) cast_info<FormulaInfo *>; -%template(dynamic_SparseHistInfo) cast_info<SparseHistInfo *>; - void initSimStats(); Output *initText(const std::string &filename, bool desc); |