Author: Maciej Fijalkowski <[email protected]>
Branch: jitframe-on-heap
Changeset: r61047:46e31ce352d7
Date: 2013-02-10 17:36 +0200
http://bitbucket.org/pypy/pypy/changeset/46e31ce352d7/
Log: fix failure generation
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
@@ -1912,8 +1912,12 @@
else:
assert isinstance(loc, RegLoc)
assert loc is not ebp # for now
+ if IS_X86_64:
+ coeff = 1
+ else:
+ coeff = 2
if loc.is_xmm:
- v = len(gpr_reg_mgr_cls.all_regs) + loc.value
+ v = len(gpr_reg_mgr_cls.all_regs) + loc.value * coeff
else:
v = gpr_reg_mgr_cls.all_reg_indexes[loc.value]
positions[i] = v * WORD
@@ -1993,7 +1997,7 @@
# Push all XMM regs
ofs = len(gpr_reg_mgr_cls.all_regs)
for i in range(len(xmm_reg_mgr_cls.all_regs)):
- mc.MOVSD_bx((ofs + i) * coeff * WORD + base_ofs, i)
+ mc.MOVSD_bx((ofs + i * coeff) * WORD + base_ofs, i)
def _pop_all_regs_from_frame(self, mc, ignored_regs, withfloats,
callee_only=False):
@@ -2014,7 +2018,7 @@
coeff = 2
ofs = len(gpr_reg_mgr_cls.all_regs)
for i in range(len(xmm_reg_mgr_cls.all_regs)):
- mc.MOVSD_xb(i, (ofs + i) * WORD * coeff + base_ofs)
+ mc.MOVSD_xb(i, (ofs + i * coeff) * WORD + base_ofs)
def _build_failure_recovery(self, exc, withfloats=False):
mc = codebuf.MachineCodeBlockWrapper()
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit