[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