python: don't die on assignment to cloned object
authorSteve Reinhardt <steve.reinhardt@amd.com>
Sat, 4 Jan 2014 01:08:42 +0000 (17:08 -0800)
committerSteve Reinhardt <steve.reinhardt@amd.com>
Sat, 4 Jan 2014 01:08:42 +0000 (17:08 -0800)
Updating the SimObject topology of a cloned hierarchy is a little
dangerous, in that cloning is a "deep copy" and the clone does not
inherit SimObject updates the same way it would inherit scalar
variable assignments.

However, because of various SimObject-valued proxy parameters,
like 'memories', 'clk_domain', and 'system', it turns out that
there are a number of implicit topology changes that happen at
instantiation, which means that these changes are impossible to
avoid.  So in order to make cloning systems useful, this error
has to go.  Changing it to a warning produces a lot of noise,
so it seems best just to delete it.

src/python/m5/SimObject.py

index 9b60dfef6364ca70dae0bac288766e05fcbc39c8..013f609d6a3194cb46c5876aeacd2a3e9cdb1576 100644 (file)
@@ -740,11 +740,6 @@ class SimObject(object):
             self._get_port_ref(attr).connect(value)
             return
 
-        if isSimObjectOrSequence(value) and self._instantiated:
-            raise RuntimeError, \
-                  "cannot set SimObject parameter '%s' after\n" \
-                  "    instance been cloned %s" % (attr, `self`)
-
         param = self._params.get(attr)
         if param:
             try: