Daniel Carvalho has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/38701 )

Change subject: sim: Remove SimObject pointer from ProbeManager
......................................................................

sim: Remove SimObject pointer from ProbeManager

This pointer is only used to get the SimObject's
name for improved debugging messages. This adds
an unnecessary dependency, and since the name
should not change throughout execution, it can
be stored on construction instead.

Jira: https://gem5.atlassian.net/browse/GEM5-857

Change-Id: If5647cc657b1a8e68a2cfc3f7d3e944a1104c1d9
Signed-off-by: Daniel R. Carvalho <oda...@yahoo.com.br>
---
M src/sim/probe/probe.cc
M src/sim/probe/probe.hh
M src/sim/sim_object.cc
3 files changed, 16 insertions(+), 12 deletions(-)



diff --git a/src/sim/probe/probe.cc b/src/sim/probe/probe.cc
index 01fcc85..bf34632 100644
--- a/src/sim/probe/probe.cc
+++ b/src/sim/probe/probe.cc
@@ -61,7 +61,7 @@
 ProbeManager::addListener(std::string point_name, ProbeListener *listener)
 {
DPRINTFR(ProbeVerbose, "Probes: Call to addListener to \"%s\" on %s.\n",
-        point_name, object->name());
+        point_name, objectName);
     bool added = false;
     for (auto p = points.begin(); p != points.end(); ++p) {
         if ((*p)->getName() == point_name) {
@@ -71,7 +71,7 @@
     }
     if (!added) {
         DPRINTFR(ProbeVerbose, "Probes: Call to addListener to \"%s\" on "
-            "%s failed, no such point.\n", point_name, object->name());
+            "%s failed, no such point.\n", point_name, objectName);
     }
     return added;
 }
@@ -80,7 +80,7 @@
ProbeManager::removeListener(std::string point_name, ProbeListener *listener)
 {
     DPRINTFR(ProbeVerbose, "Probes: Call to removeListener from \"%s\" on "
-        "%s.\n", point_name, object->name());
+        "%s.\n", point_name, objectName);
     bool removed = false;
     for (auto p = points.begin(); p != points.end(); ++p) {
         if ((*p)->getName() == point_name) {
@@ -90,7 +90,7 @@
     }
     if (!removed) {
DPRINTFR(ProbeVerbose, "Probes: Call to removeListener from \"%s\" "
-            "on %s failed, no such point.\n", point_name, object->name());
+            "on %s failed, no such point.\n", point_name, objectName);
     }
     return removed;
 }
diff --git a/src/sim/probe/probe.hh b/src/sim/probe/probe.hh
index 36f5b86..ee532c3 100644
--- a/src/sim/probe/probe.hh
+++ b/src/sim/probe/probe.hh
@@ -171,16 +171,20 @@
 class ProbeManager
 {
   private:
-    /** Required for sensible debug messages.*/
-    M5_CLASS_VAR_USED const SimObject *object;
+    /**
+     * Name of the object to which this manager belongs. Required for
+     * sensible debug messages.
+     */
+    M5_CLASS_VAR_USED const std::string objectName;
+
     /** Vector for name look-up. */
     std::vector<std::shared_ptr<ProbePoint>> points;

   public:
-    ProbeManager(SimObject *obj)
-        : object(obj)
+    ProbeManager(const std::string &object_name)
+        : objectName(object_name)
     {}
-    virtual ~ProbeManager() {}
+    virtual ~ProbeManager() = default;

     /**
      * @brief Add a ProbeListener to the ProbePoint named by pointName.
@@ -213,12 +217,12 @@
     addPoint(const std::string &name)
     {
         DPRINTFR(ProbeVerbose, "Probes: Call to addPoint \"%s\" to %s.\n",
-            name, object->name());
+            name, objectName);

         for (auto p = points.begin(); p != points.end(); ++p) {
             if ((*p)->getName() == name) {
DPRINTFR(ProbeVerbose, "Probes: Call to addPoint \"%s\" to %s "
-                    "failed, already added.\n", name, object->name());
+                    "failed, already added.\n", name, objectName);
                 return std::shared_ptr<Arg>();
             }
         }
diff --git a/src/sim/sim_object.cc b/src/sim/sim_object.cc
index 58780b2..e53f498 100644
--- a/src/sim/sim_object.cc
+++ b/src/sim/sim_object.cc
@@ -61,7 +61,7 @@
     doDebugBreak = false;
 #endif
     simObjectList.push_back(this);
-    probeManager = new ProbeManager(this);
+    probeManager = new ProbeManager(name());
 }

 SimObject::~SimObject()

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/38701
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: If5647cc657b1a8e68a2cfc3f7d3e944a1104c1d9
Gerrit-Change-Number: 38701
Gerrit-PatchSet: 1
Gerrit-Owner: Daniel Carvalho <oda...@yahoo.com.br>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to