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

Reply via email to