Author: Armin Rigo <ar...@tunes.org>
Branch: 
Changeset: r65783:80e614cc3039
Date: 2013-07-29 15:22 +0200
http://bitbucket.org/pypy/pypy/changeset/80e614cc3039/

Log:    Only save registers that really contain something

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
@@ -2174,7 +2174,10 @@
         # first save away the 4 registers from 'cond_call_register_arguments'
         # plus the register 'eax'
         base_ofs = self.cpu.get_baseofs_of_frame_field()
+        should_be_saved = self._regalloc.rm.reg_bindings.values()
         for gpr in cond_call_register_arguments + [eax]:
+            if gpr not in should_be_saved:
+                continue
             v = gpr_reg_mgr_cls.all_reg_indexes[gpr.value]
             self.mc.MOV_br(v * WORD + base_ofs, gpr.value)
         #
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to