Get Port stuff working with full-system scripts.

Key was adding support for cloning port references (trickier than it sounds).
Got rid of class/instance thing and go back to instance cloning...
still don't allow changing SimObject parameters/children after a
class (instance) has been subclassed or instantiated (or cloned), which
should avoid bizarre unintended behavior.

configs/test/fs.py:
    Add ".port" to busses to get a port reference.
    Get rid of commented-out code.
src/python/m5/__init__.py:
    resolveSimObject should call getCCObject() instead of createCCObject()
    to avoid cycles in recursively creating objects.
src/python/m5/config.py:
    Get rid of class/instance thing and go back to instance cloning.
    Deep copy has to happen only on instance cloning then (and not on subclassing).
    Add getCCObject() method to force creation of C++ SimObject without
    recursively creating its children.
    Add support for cloning port references (trickier than it sounds).
    Also clean up some very obsolete comments.
src/python/m5/objects/Bridge.py:
src/python/m5/objects/Device.py:
    Add ports.

--HG--
extra : convert_revision : 4816d05ead0de520748aace06dbd1911a33f0af8
This commit is contained in:
Steve Reinhardt
2006-06-15 11:45:51 -04:00
parent 185ec39f79
commit 88e22ee081
5 changed files with 223 additions and 293 deletions

View File

@@ -107,11 +107,7 @@ env.update(os.environ)
# Function to provide to C++ so it can look up instances based on paths
def resolveSimObject(name):
obj = config.instanceDict[name]
if not obj._ccObject:
obj.createCCObject()
if obj._ccObject == -1:
panic("resolveSimObject: recursive lookup error on %s" % name)
return obj._ccObject
return obj.getCCObject()
# The final hook to generate .ini files. Called from the user script
# once the config is built.