Author: Remi Meier <remi.me...@gmail.com> Branch: stmgc-c4 Changeset: r66210:9f125baf35d1 Date: 2013-08-19 14:39 +0200 http://bitbucket.org/pypy/pypy/changeset/9f125baf35d1/
Log: stmgc import diff --git a/rpython/translator/stm/src_stm/nursery.c b/rpython/translator/stm/src_stm/nursery.c --- a/rpython/translator/stm/src_stm/nursery.c +++ b/rpython/translator/stm/src_stm/nursery.c @@ -178,10 +178,21 @@ fresh_old_copy = id_obj; fresh_old_copy->h_original = 0; obj->h_tid &= ~GCFLAG_HAS_ID; + + /* priv_from_prot's backup->h_originals already point + to id_obj */ } else { /* make a copy of it outside */ fresh_old_copy = create_old_object_copy(obj); + + if (obj->h_tid & GCFLAG_PRIVATE_FROM_PROTECTED + && !(obj->h_original)) { + /* the object's backup copy still has + a h_original that is NULL*/ + gcptr B = (gcptr)obj->h_revision; + B->h_original = (revision_t)fresh_old_copy; + } } obj->h_tid |= GCFLAG_MOVED; diff --git a/rpython/translator/stm/src_stm/revision b/rpython/translator/stm/src_stm/revision --- a/rpython/translator/stm/src_stm/revision +++ b/rpython/translator/stm/src_stm/revision @@ -1,1 +1,1 @@ -9cd8cc0e987a +b19dfb209a10 diff --git a/rpython/translator/stm/src_stm/stmgc.h b/rpython/translator/stm/src_stm/stmgc.h --- a/rpython/translator/stm/src_stm/stmgc.h +++ b/rpython/translator/stm/src_stm/stmgc.h @@ -216,17 +216,18 @@ : (obj)) #define stm_repeat_read_barrier(obj) \ - (UNLIKELY((obj)->h_tid & (GCFLAG_PUBLIC_TO_PRIVATE | GCFLAG_MOVED)) ? \ + (UNLIKELY(((obj)->h_tid & (GCFLAG_PUBLIC_TO_PRIVATE | \ + GCFLAG_MOVED)) != 0) ? \ stm_RepeatReadBarrier(obj) \ : (obj)) #define stm_immut_read_barrier(obj) \ - (UNLIKELY((obj)->h_tid & GCFLAG_STUB) ? \ + (UNLIKELY(((obj)->h_tid & GCFLAG_STUB) != 0) ? \ stm_ImmutReadBarrier(obj) \ : (obj)) #define stm_repeat_write_barrier(obj) \ - (UNLIKELY((obj)->h_tid & GCFLAG_WRITE_BARRIER) ? \ + (UNLIKELY(((obj)->h_tid & GCFLAG_WRITE_BARRIER) != 0) ? \ stm_RepeatWriteBarrier(obj) \ : (obj)) _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit