[pypy-svn] r62911 - pypy/branch/pyjitpl5/pypy/jit/backend/x86

fijal at codespeak.net fijal at codespeak.net
Thu Mar 12 22:54:03 CET 2009


Author: fijal
Date: Thu Mar 12 22:54:00 2009
New Revision: 62911

Modified:
   pypy/branch/pyjitpl5/pypy/jit/backend/x86/regalloc.py
Log:
apparently, imm is fine for comparison. Also fix what happens if
return_constant receives imm_fine=True, but selected_reg=None


Modified: pypy/branch/pyjitpl5/pypy/jit/backend/x86/regalloc.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/backend/x86/regalloc.py	(original)
+++ pypy/branch/pyjitpl5/pypy/jit/backend/x86/regalloc.py	Thu Mar 12 22:54:00 2009
@@ -319,18 +319,19 @@
                 loc = self.free_regs.pop()
                 return loc, [Load(v, convert_to_imm(v), loc)]
             v_to_spill = self.pick_variable_to_spill(v, forbidden_vars, selected_reg)
+            loc = self.loc(v_to_spill)
             if v_to_spill not in self.stack_bindings or v_to_spill in self.dirty_stack:
                 newloc = self.stack_loc(v_to_spill)
                 try:
                     del self.dirty_stack[v_to_spill]
                 except KeyError:
                     pass
-                ops = [Store(v_to_spill, selected_reg, newloc)]
+                ops = [Store(v_to_spill, loc, newloc)]
             else:
                 ops = []
             del self.reg_bindings[v_to_spill]
             self.free_regs.append(selected_reg)
-            return selected_reg, ops+[Load(v, convert_to_imm(v), selected_reg)]
+            return selected_reg, ops+[Load(v, convert_to_imm(v), loc)]
         return convert_to_imm(v), []
 
     def force_allocate_reg(self, v, forbidden_vars, selected_reg=None):
@@ -490,7 +491,7 @@
         for i in range(len(op.args)):
             arg = op.args[i]
             assert not isinstance(arg, Const)
-            reg = None            
+            reg = None
             loc = stack_pos(i)
             self.stack_bindings[arg] = loc
             if arg not in self.loop_consts:
@@ -583,7 +584,7 @@
     def consider_guard_value(self, op, ignored):
         x = self.loc(op.args[0])
         if not (isinstance(x, REG) or isinstance(op.args[1], Const)):
-            x, ops = self.make_sure_var_in_reg(op.args[0], [], imm_fine=False)
+            x, ops = self.make_sure_var_in_reg(op.args[0], [])
         else:
             ops = []
         y = self.loc(op.args[1])



More information about the Pypy-commit mailing list