[pypy-svn] r64570 - pypy/branch/pyjitpl5/pypy/jit/backend/x86
fijal at codespeak.net
fijal at codespeak.net
Wed Apr 22 17:14:25 CEST 2009
Author: fijal
Date: Wed Apr 22 17:14:22 2009
New Revision: 64570
Modified:
pypy/branch/pyjitpl5/pypy/jit/backend/x86/assembler.py
Log:
a fix for the case when there is a longer chain of suboperations, finalized
by fail. Still trying to find the test which explores that.
Modified: pypy/branch/pyjitpl5/pypy/jit/backend/x86/assembler.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/backend/x86/assembler.py (original)
+++ pypy/branch/pyjitpl5/pypy/jit/backend/x86/assembler.py Wed Apr 22 17:14:22 2009
@@ -391,6 +391,7 @@
def call(self, addr, args, res):
for i in range(len(args)):
arg = args[i]
+ assert not isinstance(arg, MODRM)
self.mc.PUSH(arg)
self.mc.CALL(rel32(addr))
self.mc.ADD(esp, imm(len(args) * WORD))
@@ -795,6 +796,9 @@
if (guard_op.opnum == rop.GUARD_EXCEPTION or
guard_op.opnum == rop.GUARD_NO_EXCEPTION):
exc = True
+ if (exc and (guard_op.suboperations[0].opnum == rop.GUARD_EXCEPTION or
+ guard_op.suboperations[0].opnum == rop.GUARD_NO_EXCEPTION)):
+ exc = False
regalloc.walk_guard_ops(guard_op.inputargs, guard_op.suboperations, exc)
self.mcstack.give_mc_back(self.mc2)
self.mc2 = self.mc
More information about the Pypy-commit
mailing list