# HG changeset patch # User Brad Beckmann <brad.beckm...@amd.com> # Date 1258692765 28800 # Node ID 82a7e4e9aa90144a73d776264f21dcc49b64514b # Parent 95c5697d202b33419c420096d8a74e3a8821a14e Calls destructors on all M5 Sim Objects.
diff -r 95c5697d202b -r 82a7e4e9aa90 src/sim/main.cc --- a/src/sim/main.cc Thu Nov 19 20:52:45 2009 -0800 +++ b/src/sim/main.cc Thu Nov 19 20:52:45 2009 -0800 @@ -31,6 +31,7 @@ #include <Python.h> #include "sim/init.hh" +#include "sim/sim_object.hh" // main() is now pretty stripped down and just sets up python and then // calls initM5Python which loads the various embedded python modules @@ -60,5 +61,7 @@ // clean up Python intepreter. Py_Finalize(); + SimObject::deleteAll(); + return ret; } diff -r 95c5697d202b -r 82a7e4e9aa90 src/sim/sim_object.cc --- a/src/sim/sim_object.cc Thu Nov 19 20:52:45 2009 -0800 +++ b/src/sim/sim_object.cc Thu Nov 19 20:52:45 2009 -0800 @@ -148,6 +148,25 @@ } // +// static function: delete all SimObjects. +// +void +SimObject::deleteAll() +{ + SimObjectList::iterator i = simObjectList.begin(); + SimObjectList::iterator end = simObjectList.end(); + + for (; i != end; ++i) { + SimObject *obj = *i; + DPRINTFR(Config, "delete '%s'\n", + obj->name()); + if (obj->name() != "system") { + delete obj; + } + } +} + +// // static function: call resetStats() on all SimObjects. // void @@ -175,8 +194,7 @@ SimObject *obj = *ri; obj->nameOut(os); obj->serialize(os); - } -} + }} void SimObject::unserializeAll(Checkpoint *cp) diff -r 95c5697d202b -r 82a7e4e9aa90 src/sim/sim_object.hh --- a/src/sim/sim_object.hh Thu Nov 19 20:52:45 2009 -0800 +++ b/src/sim/sim_object.hh Thu Nov 19 20:52:45 2009 -0800 @@ -98,6 +98,9 @@ virtual void init(); static void initAll(); + // delete all objects + static void deleteAll(); + // register statistics for this object virtual void regStats(); virtual void regFormulas(); _______________________________________________ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev