[pypy-commit] pypy stmgc-c7: Test and fix
arigo
noreply at buildbot.pypy.org
Mon Jun 30 15:32:08 CEST 2014
Author: Armin Rigo <arigo at tunes.org>
Branch: stmgc-c7
Changeset: r72287:6e6305a37a7b
Date: 2014-06-30 15:29 +0200
http://bitbucket.org/pypy/pypy/changeset/6e6305a37a7b/
Log: Test and fix
diff --git a/rpython/memory/gctransform/stmframework.py b/rpython/memory/gctransform/stmframework.py
--- a/rpython/memory/gctransform/stmframework.py
+++ b/rpython/memory/gctransform/stmframework.py
@@ -34,8 +34,11 @@
annmodel.s_None))
#
def pypy_stmcb_trace_cards(obj, visit_fn, start, stop):
- if not gc.has_gcptr_in_varsize(gc.get_type_id(obj)):
+ typeid = gc.get_type_id(obj)
+ if not gc.has_gcptr_in_varsize(typeid):
return # there are cards, but they don't need tracing
+ length = (obj + gc.varsize_offset_to_length(typeid)).signed[0]
+ stop = min(stop, length)
gc.trace_partial(obj, start, stop, invokecallback, visit_fn)
pypy_stmcb_trace_cards.c_name = "pypy_stmcb_trace_cards"
self.autoregister_ptrs.append(
diff --git a/rpython/translator/stm/test/test_ztranslated.py b/rpython/translator/stm/test/test_ztranslated.py
--- a/rpython/translator/stm/test/test_ztranslated.py
+++ b/rpython/translator/stm/test/test_ztranslated.py
@@ -453,12 +453,15 @@
def test_stm_write_card(self):
LST = lltype.GcArray(lltype.Signed)
- lst = lltype.malloc(LST, 100, immortal=True)
+ lst = lltype.malloc(LST, 1000, immortal=True)
+ LST2 = lltype.GcArray(lltype.Ptr(LST))
+ lst2 = lltype.malloc(LST2, 1000, immortal=True)
def main(argv):
lst[42] = 43
+ lst2[999] = lst
llop.stm_commit_if_not_atomic(lltype.Void)
llop.stm_start_inevitable_if_not_atomic(lltype.Void)
- print 'did not crash', lst[42]
+ print 'did not crash', lst2[999][42]
return 0
t, cbuilder = self.compile(main)
More information about the pypy-commit
mailing list