[pypy-commit] pypy default: Only save registers that really contain something

arigo noreply at buildbot.pypy.org
Mon Jul 29 15:23:50 CEST 2013


Author: Armin Rigo <arigo at 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)
         #


More information about the pypy-commit mailing list