# HG changeset patch
# User Brad Beckmann <[email protected]>
# 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
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev