[pypy-svn] r33190 - in pypy/dist/pypy/jit/codegen/i386: . test

arigo at codespeak.net arigo at codespeak.net
Wed Oct 11 20:42:29 CEST 2006


Author: arigo
Date: Wed Oct 11 20:42:28 2006
New Revision: 33190

Modified:
   pypy/dist/pypy/jit/codegen/i386/rgenop.py
   pypy/dist/pypy/jit/codegen/i386/test/test_genc_promotion.py
Log:
Bug fix for remap_stack_layout().  We really REALLY need to write tests
specifically for this two-pages function...


Modified: pypy/dist/pypy/jit/codegen/i386/rgenop.py
==============================================================================
--- pypy/dist/pypy/jit/codegen/i386/rgenop.py	(original)
+++ pypy/dist/pypy/jit/codegen/i386/rgenop.py	Wed Oct 11 20:42:28 2006
@@ -36,6 +36,8 @@
     def __repr__(self):
         return 'var@%d' % (self.stackpos,)
 
+    repr = __repr__
+
 
 ##class Const(GenConst):
 
@@ -84,11 +86,15 @@
             return lltype.cast_primitive(T, self.value)
 
     def __repr__(self):
+        "NOT_RPYTHON"
         try:
             return "const=%s" % (imm(self.value).assembler(),)
         except TypeError:   # from Symbolics
             return "const=%r" % (self.value,)
 
+    def repr(self):
+        return "const=$%s" % (self.value,)
+
 
 ##class FnPtrConst(IntConst):
 ##    def __init__(self, value, mc):
@@ -120,8 +126,12 @@
             assert 0, "XXX not implemented"
 
     def __repr__(self):
+        "NOT_RPYTHON"
         return "const=%r" % (self.addr,)
 
+    def repr(self):
+        return "const=<0x%x>" % (llmemory.cast_adr_to_int(self.addr),)
+
 
 class Block(CodeGenBlock):
 
@@ -641,6 +651,16 @@
 # ____________________________________________________________
 
 def remap_stack_layout(builder, outputargs_gv, targetblock):
+##    import os
+##    s = ', '.join([gv.repr() for gv in outputargs_gv])
+##    os.write(2, "writing at %d (stack=%d, [%s])\n  --> %d (stack=%d, %s)\n"
+##     % (builder.mc.tell(),
+##        builder.stackdepth,
+##        s,
+##        targetblock.startaddr,
+##        targetblock.stackdepth,
+##        targetblock.arg_positions))
+
     N = targetblock.stackdepth
     if builder.stackdepth < N:
         builder.mc.SUB(esp, imm(WORD * (N - builder.stackdepth)))
@@ -659,11 +679,12 @@
         srccount[pos] = 0
     pending_dests = M
     for i in range(M):
+        targetpos = arg_positions[i]
         gv = outputargs_gv[i]
         if isinstance(gv, Var):
             p = gv.stackpos
             if 0 <= p < N:
-                if p == i:
+                if p == targetpos:
                     srccount[p] = -N     # ignore 'v=v'
                     pending_dests -= 1
                 else:

Modified: pypy/dist/pypy/jit/codegen/i386/test/test_genc_promotion.py
==============================================================================
--- pypy/dist/pypy/jit/codegen/i386/test/test_genc_promotion.py	(original)
+++ pypy/dist/pypy/jit/codegen/i386/test/test_genc_promotion.py	Wed Oct 11 20:42:28 2006
@@ -11,8 +11,5 @@
     def test_many_promotions(self):
         py.test.skip("in-progress")
 
-    def test_multiple_portal_calls(self):
-        py.test.skip("in-progress")
-
     def test_more_promotes(self):
         py.test.skip("in-progress :(")



More information about the Pypy-commit mailing list