[pypy-commit] pypy fast-newarray: make sure our stuff is correctly aligned
fijal
noreply at buildbot.pypy.org
Tue Apr 16 00:40:12 CEST 2013
Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: fast-newarray
Changeset: r63395:68fbb849da58
Date: 2013-04-16 00:39 +0200
http://bitbucket.org/pypy/pypy/changeset/68fbb849da58/
Log: make sure our stuff is correctly aligned
diff --git a/rpython/jit/backend/llsupport/test/test_gc_integration.py b/rpython/jit/backend/llsupport/test/test_gc_integration.py
--- a/rpython/jit/backend/llsupport/test/test_gc_integration.py
+++ b/rpython/jit/backend/llsupport/test/test_gc_integration.py
@@ -284,7 +284,7 @@
# check the nursery content and state
assert gc_ll_descr.nursery[0] == chr(15)
assert gc_ll_descr.nursery[2 * WORD + 8] == chr(15)
- assert gc_ll_descr.addrs[0] == nurs_adr + 4 * WORD + 8*1 + 5*2
+ assert gc_ll_descr.addrs[0] == nurs_adr + (((4 * WORD + 8*1 + 5*2) + (WORD - 1)) & ~(WORD - 1))
# slowpath never called
assert gc_ll_descr.calls == []
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
@@ -2375,8 +2375,12 @@
jmp_adr0 = self.mc.get_relative_pos()
self.mc.MOV(eax, heap(nursery_free_adr))
self.mc.MOV(edi, lengthloc)
- self.mc.IMUL(edi, imm(itemsize))
- self.mc.ADD(edi, imm(WORD * 2))
+ if itemsize == 0:
+ self.mc.ADD_ri(edi.value, 2 * WORD)
+ else:
+ self.mc.IMUL_ri(edi.value, itemsize)
+ self.mc.ADD_ri(edi.value, WORD * 2 + WORD - 1)
+ self.mc.AND_ri(edi.value, ~(WORD - 1))
self.mc.ADD(edi, heap(nursery_free_adr))
self.mc.CMP(edi, heap(nursery_top_adr))
# write down the tid
More information about the pypy-commit
mailing list