[pypy-commit] pypy default: Not really sure, but I believe this to be a fix
arigo
noreply at buildbot.pypy.org
Tue Jul 30 14:31:29 CEST 2013
Author: Armin Rigo <arigo at tunes.org>
Branch:
Changeset: r65820:2cc1812e0ada
Date: 2013-07-30 14:30 +0200
http://bitbucket.org/pypy/pypy/changeset/2cc1812e0ada/
Log: Not really sure, but I believe this to be a fix
diff --git a/rpython/jit/backend/x86/regalloc.py b/rpython/jit/backend/x86/regalloc.py
--- a/rpython/jit/backend/x86/regalloc.py
+++ b/rpython/jit/backend/x86/regalloc.py
@@ -799,6 +799,15 @@
consider_cond_call_gc_wb_array = consider_cond_call_gc_wb
def consider_cond_call(self, op):
+ # A 32-bit-only, asmgcc-only issue: 'cond_call_register_arguments'
+ # contains edi and esi, which are also in asmgcroot.py:ASM_FRAMEDATA.
+ # We must make sure that edi and esi do not contain GC pointers.
+ if IS_X86_32 and self.assembler._is_asmgcc():
+ for box, loc in self.rm.reg_bindings.items():
+ if (loc == edi or loc == esi) and box.type == REF:
+ self.rm.force_spill_var(box)
+ assert box not in self.rm.reg_bindings
+ #
assert op.result is None
args = op.getarglist()
assert 2 <= len(args) <= 4 + 2 # maximum 4 arguments
More information about the pypy-commit
mailing list