Author: Armin Rigo <ar...@tunes.org>
Branch: reverse-debugger
Changeset: r85507:2c199ada1854
Date: 2016-07-01 23:29 +0200
http://bitbucket.org/pypy/pypy/changeset/2c199ada1854/

Log:    fix (port from stmgc-c8)

diff --git a/rpython/rlib/rrawarray.py b/rpython/rlib/rrawarray.py
--- a/rpython/rlib/rrawarray.py
+++ b/rpython/rlib/rrawarray.py
@@ -1,6 +1,6 @@
 from rpython.rtyper.llannotation import lltype_to_annotation
 from rpython.rlib.objectmodel import specialize
-from rpython.rlib import jit
+from rpython.rlib import jit, rgc
 from rpython.rtyper.lltypesystem import lltype, llmemory
 from rpython.rtyper.extregistry import ExtRegistryEntry
 from rpython.tool.pairtype import pair
@@ -50,6 +50,10 @@
 
 @jit.dont_look_inside
 def ll_copy_list_to_raw_array(ll_list, dst_ptr):
+    if rgc.must_split_gc_address_space():
+        for i in range(ll_list.ll_length()):
+            dst_ptr[i] = ll_list.ll_getitem_fast(i)
+        return
     # this code is delicate: we must ensure that there are no GC operations
     # around the call to raw_memcopy
     #
@@ -64,9 +68,13 @@
 
 @jit.dont_look_inside
 def ll_populate_list_from_raw_array(ll_list, src_ptr, length):
+    ll_list._ll_resize(length)
+    if rgc.must_split_gc_address_space():
+        for i in range(length):
+            ll_list.ll_setitem_fast(i, src_ptr[i])
+        return
     ITEM = lltype.typeOf(src_ptr).TO.OF
     size = llmemory.sizeof(ITEM) * length
-    ll_list._ll_resize(length)
     # start of no-GC section
     src_adr = get_raw_buf(src_ptr)
     dst_adr = get_raw_buf(ll_list.ll_items())
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to