systemc: Make sure children of processes are recorded as such.
authorGabe Black <gabeblack@google.com>
Wed, 29 Aug 2018 03:58:37 +0000 (20:58 -0700)
committerGabe Black <gabeblack@google.com>
Wed, 3 Oct 2018 00:12:37 +0000 (00:12 +0000)
The process was treated as the parent of the object, but the object
wasn't being installed as a child of the process.

Change-Id: I6710f34734835cbeceb3d33e5e37b6f5897c5e30
Reviewed-on: https://gem5-review.googlesource.com/c/12438
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

src/systemc/core/object.cc

index 1fb1d4591904267a20cc2d8d2cfe77a6d71b003e..b97fd900a14cce8f86df755bcaa0be871e514a06 100644 (file)
@@ -91,10 +91,12 @@ Object::Object(sc_core::sc_object *_sc_obj, const char *obj_name) :
         // We're "within" a parent module, ie we're being created while its
         // constructor or end_of_elaboration callback is running.
         parent = p->obj()->_sc_obj;
-        addObject(&parent->_gem5_object->children, _sc_obj);
     } else if (scheduler.current()) {
         // Our parent is the currently running process.
         parent = scheduler.current();
+    }
+    if (parent) {
+        addObject(&parent->_gem5_object->children, _sc_obj);
     } else {
         // We're a top level object.
         addObject(&topLevelObjects, _sc_obj);