changeset fda147c035b3 in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=fda147c035b3
description:
        Param: Fix proxy traversal to support chained proxies

        This patch modifies how proxies are traversed and unproxied to allow
        chained proxies. The issue that is solved manifested itself when a
        proxy during its evaluation ended up being hitting another proxy, and
        the second one got evaluated using the object that was originally used
        for the first proxy.

        For a more tangible example, see the following patch on making the
        default clock being inherited from the parent. In this patch, the CPU
        clock is a proxy Parent.clock, which is overridden in the system to be
        an actual value. This all works fine, but the AlphaLinuxSystem has a
        boot_cpu_frequency parameter that is Self.cpu[0].clock.frequency. When
        the latter is evaluated, it all happens relative to the current object
        of the proxy, i.e. the system. Thus the cpu.clock is evaluated as
        Parent.clock, but using the system rather than the cpu as the object
        to enquire.

diffstat:

 src/python/m5/proxy.py |  4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

diffs (14 lines):

diff -r 8b16c3804bda -r fda147c035b3 src/python/m5/proxy.py
--- a/src/python/m5/proxy.py    Mon Oct 15 08:07:04 2012 -0400
+++ b/src/python/m5/proxy.py    Mon Oct 15 08:07:06 2012 -0400
@@ -151,6 +151,10 @@
     def find(self, obj):
         try:
             val = getattr(obj, self._attr)
+            # for any additional unproxying to be done, pass the
+            # current, rather than the original object so that proxy
+            # has the right context
+            obj = val
         except:
             return None, False
         while isproxy(val):
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to