Author: Remi Meier <[email protected]>
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
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit