Author: Maciej Fijalkowski <[email protected]>
Branch: fast-newarray
Changeset: r63382:c28bf44097c6
Date: 2013-04-15 18:13 +0200
http://bitbucket.org/pypy/pypy/changeset/c28bf44097c6/
Log: make this test pass
diff --git a/rpython/jit/backend/llsupport/rewrite.py
b/rpython/jit/backend/llsupport/rewrite.py
--- a/rpython/jit/backend/llsupport/rewrite.py
+++ b/rpython/jit/backend/llsupport/rewrite.py
@@ -128,6 +128,9 @@
elif (self.gc_ll_descr.can_use_nursery_malloc(1) and
self.gen_malloc_nursery_varsize(arraydescr.itemsize,
v_length, op.result, arraydescr)):
+ # note that we cannot initialize tid here, because the array
+ # might end up being allocated by malloc_external or some
+ # stuff that initializes GC header fields differently
self.gen_initialize_len(op.result, v_length, arraydescr.lendescr)
return
if (total_size >= 0 and
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
@@ -265,8 +265,8 @@
assert rffi.cast(lltype.Signed, ref(0)) == nurs_adr + 0
assert rffi.cast(lltype.Signed, ref(1)) == nurs_adr + 2*WORD + 8*1
# check the nursery content and state
- assert gc_ll_descr.nursery[0] == 15
- assert gc_ll_descr.nursery[2 + 8 / WORD] == 15
+ 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
# 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
@@ -2355,9 +2355,11 @@
self.mc.MOV(eax, edi)
self.mc.MOV(edi, lengthloc)
self.mc.IMUL(edi, imm(itemsize))
+ self.mc.ADD(edi, imm(WORD * 2))
self.mc.ADD(edi, heap(nursery_free_adr))
- self.mc.ADD(edi, imm(WORD * 2))
self.mc.CMP(edi, heap(nursery_top_adr))
+ # write down the tid
+ self.mc.MOV(mem(eax, 0), imm(arraydescr.tid))
self.mc.J_il8(rx86.Conditions['NA'], 0) # patched later
jmp_adr1 = self.mc.get_relative_pos()
offset = self.mc.get_relative_pos() - jmp_adr0
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit