Try to make unproxy order more deterministic.
authorSteve Reinhardt <stever@eecs.umich.edu>
Thu, 7 Sep 2006 05:37:35 +0000 (22:37 -0700)
committerSteve Reinhardt <stever@eecs.umich.edu>
Thu, 7 Sep 2006 05:37:35 +0000 (22:37 -0700)
--HG--
extra : convert_revision : 0bc543014dced6dfed4122d4c1b8f22e6c8d7a13

src/python/m5/SimObject.py

index 281352e0d3764db5d609f0cbff01f69337b5ae68..a0d66e6438eee0e6277e6478274a3d808fd3bd41 100644 (file)
@@ -633,13 +633,20 @@ class SimObject(object):
                     raise
                 setattr(self, param, value)
 
-        for port_name in self._ports.iterkeys():
+        # Unproxy ports in sorted order so that 'append' operations on
+        # vector ports are done in a deterministic fashion.
+        port_names = self._ports.keys()
+        port_names.sort()
+        for port_name in port_names:
             port = self._port_refs.get(port_name)
             if port != None:
                 port.unproxy(self)
 
-        for child in self._children.itervalues():
-            child.unproxy_all()
+        # Unproxy children in sorted order for determinism also.
+        child_names = self._children.keys()
+        child_names.sort()
+        for child in child_names:
+            self._children[child].unproxy_all()
 
     def print_ini(self):
         print '[' + self.path() + ']'  # .ini section header