When a simulation ends, the sc_objects it contains are destroyed one
by one, not necessarily in hierarchy order. That means that a parent
object can legitimately be destroyed before its children. Instead of
panic-ing when that inevitably happens, this change makes gem5 turn
those children into top level objects.
Change-Id: Icad9c99310fbc3ddcadbbb4f8a990b4fbfe35bdf
Reviewed-on: https://gem5-review.googlesource.com/12035
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
Object::~Object()
{
- panic_if(!children.empty(), "Parent object still has children.\n");
+ // Promote all children to be top level objects.
+ for (auto child: children) {
+ addObject(&topLevelObjects, child);
+ child->_gem5_object->parent = nullptr;
+ }
+ children.clear();
if (parent)
popObject(&parent->_gem5_object->children, _name);
Objects children;
Events events;
sc_core::sc_object *parent;
- ObjectsIt parentIt;
sc_core::sc_attr_cltn cltn;
};