[pypy-svn] r27515 - pypy/dist/pypy/translator/tool

arigo at codespeak.net arigo at codespeak.net
Sat May 20 19:46:45 CEST 2006


Author: arigo
Date: Sat May 20 19:46:44 2006
New Revision: 27515

Modified:
   pypy/dist/pypy/translator/tool/lltracker.py
Log:
More fight fight fight.


Modified: pypy/dist/pypy/translator/tool/lltracker.py
==============================================================================
--- pypy/dist/pypy/translator/tool/lltracker.py	(original)
+++ pypy/dist/pypy/translator/tool/lltracker.py	Sat May 20 19:46:44 2006
@@ -44,6 +44,14 @@
     def newpage(self, objectlist):
         return self.__class__(objectlist, self.size_gc_header)
 
+    def normalize(self, o):
+        if self.size_gc_header is not None:
+            try:
+                return header2obj[o]._obj
+            except (KeyError, TypeError):
+                pass
+        return o
+
     def enum_content(self, o, name='', with_header=True):
         # XXX clean up
         T = lltype.typeOf(o)
@@ -67,7 +75,6 @@
             if gcobjptr:
                 GCT = lltype.typeOf(gcobjptr)
                 if self.size_gc_header is not None:
-                    yield 'header of', '<%s>' % (shorttypename(GCT.TO),)
                     for sub in self.enum_content(gcobjptr._obj,
                                                  with_header=False):
                         yield sub
@@ -83,7 +90,7 @@
             if not o:
                 yield name, 'null'
             else:
-                yield name, lltype.normalizeptr(o)._obj
+                yield name, self.normalize(lltype.normalizeptr(o)._obj)
         elif isinstance(T, lltype.OpaqueType) and hasattr(o, 'container'):
             T = lltype.typeOf(o.container)
             yield 'container', '<%s>' % (shorttypename(T),)
@@ -98,9 +105,9 @@
                 if (isinstance(T1, lltype.Ptr) and
                     isinstance(T1.TO, lltype.Struct) and
                     addrof._obj in header2obj):
-                    yield name + ' @hdr', addrof._obj
+                    yield name + ' @hdr', self.normalize(addrof._obj)
                 else:
-                    yield name + ' @', o.ob._obj
+                    yield name + ' @', self.normalize(o.ob._obj)
                     if o.offset:
                         yield '... offset', str(o.offset)
         else:



More information about the Pypy-commit mailing list