Author: Armin Rigo <[email protected]>
Branch:
Changeset: r63458:5fc401548386
Date: 2013-04-17 19:50 +0200
http://bitbucket.org/pypy/pypy/changeset/5fc401548386/
Log: Oups, sorry.
diff --git a/rpython/jit/backend/x86/assembler.py
b/rpython/jit/backend/x86/assembler.py
--- a/rpython/jit/backend/x86/assembler.py
+++ b/rpython/jit/backend/x86/assembler.py
@@ -2368,7 +2368,7 @@
def malloc_cond_varsize_frame(self, nursery_free_adr, nursery_top_adr,
sizeloc, gcmap):
- if not isinstance(sizeloc, RegLoc) or sizeloc is eax:
+ if sizeloc is eax:
self.mc.MOV(edi, sizeloc)
sizeloc = edi
self.mc.MOV(eax, heap(nursery_free_adr))
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
@@ -853,8 +853,9 @@
def consider_call_malloc_nursery_varsize_frame(self, op):
size_box = op.getarg(0)
assert isinstance(size_box, BoxInt) # we cannot have a const here!
- # size_box can be anywhere (including the stack, or eax, or edi)
- sizeloc = self.rm.loc(size_box)
+ # sizeloc must be in a register, but we can free it now
+ # (we take care explicitly of conflicts with eax or edi)
+ sizeloc = self.rm.make_sure_var_in_reg(size_box)
self.rm.possibly_free_var(size_box)
# the result will be in eax
self.rm.force_allocate_reg(op.result, selected_reg=eax)
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit