[prev in list] [next in list] [prev in thread] [next in thread]
List: pypy-svn
Subject: [pypy-commit] stmgc default: extra asserts
From: Raemi <noreply () buildbot ! pypy ! org>
Date: 2013-08-31 12:52:47
Message-ID: 20130831125247.8154B1C00D8 () cobra ! cs ! uni-duesseldorf ! de
[Download RAW message or body]
Author: Remi Meier <remi.meier@gmail.com>
Branch:
Changeset: r507:fd16bb0f509b
Date: 2013-08-31 14:51 +0200
http://bitbucket.org/pypy/stmgc/changeset/fd16bb0f509b/
Log: extra asserts
diff --git a/c4/et.c b/c4/et.c
--- a/c4/et.c
+++ b/c4/et.c
@@ -108,6 +108,7 @@
revision_t v;
d->count_reads++;
+ assert(IMPLIES(!(P->h_tid & GCFLAG_OLD), stmgc_is_in_nursery(d, P)));
restart_all:
if (P->h_tid & GCFLAG_PRIVATE_FROM_PROTECTED)
@@ -280,6 +281,9 @@
*/
assert(P->h_tid & GCFLAG_PUBLIC);
assert(!(P->h_tid & GCFLAG_STUB));
+ assert(IMPLIES(!(P->h_tid & GCFLAG_OLD),
+ stmgc_is_in_nursery(thread_descriptor, P)));
+
if (P->h_tid & GCFLAG_MOVED)
{
@@ -320,6 +324,9 @@
{
assert(P->h_tid & GCFLAG_STUB);
assert(P->h_tid & GCFLAG_PUBLIC);
+ assert(IMPLIES(!(P->h_tid & GCFLAG_OLD),
+ stmgc_is_in_nursery(thread_descriptor, P)));
+
revision_t v = ACCESS_ONCE(P->h_revision);
assert(IS_POINTER(v)); /* "is a pointer", "has a more recent revision" */
@@ -568,6 +575,7 @@
not_found:
#endif
+ assert(!(R->h_tid & GCFLAG_STUB));
R->h_tid |= GCFLAG_PUBLIC_TO_PRIVATE;
/* note that stmgc_duplicate() usually returns a young object, but may
@@ -610,8 +618,12 @@
static inline void record_write_barrier(gcptr P)
{
+ assert(is_private(P));
+ assert(IMPLIES(!(P->h_tid & GCFLAG_OLD),
+ stmgc_is_in_nursery(thread_descriptor, P)));
if (P->h_tid & GCFLAG_WRITE_BARRIER)
{
+ assert(P->h_tid & GCFLAG_OLD);
P->h_tid &= ~GCFLAG_WRITE_BARRIER;
gcptrlist_insert(&thread_descriptor->old_objects_to_trace, P);
}
@@ -619,6 +631,9 @@
gcptr stm_RepeatWriteBarrier(gcptr P)
{
+ assert(IMPLIES(!(P->h_tid & GCFLAG_OLD),
+ stmgc_is_in_nursery(thread_descriptor, P)));
+
assert(!(P->h_tid & GCFLAG_IMMUTABLE));
assert(is_private(P));
assert(P->h_tid & GCFLAG_WRITE_BARRIER);
@@ -637,6 +652,9 @@
over it. However such objects are so small that they contain no field
at all, and so no write barrier should occur on them. */
+ assert(IMPLIES(!(P->h_tid & GCFLAG_OLD),
+ stmgc_is_in_nursery(thread_descriptor, P)));
+
if (is_private(P))
{
/* If we have GCFLAG_WRITE_BARRIER in P, then list it into
diff --git a/c4/extra.c b/c4/extra.c
--- a/c4/extra.c
+++ b/c4/extra.c
@@ -178,6 +178,8 @@
if (p->h_tid & GCFLAG_PRIVATE_FROM_PROTECTED) {
gcptr B = (gcptr)p->h_revision;
+ /* not stolen already: */
+ assert(!(B->h_tid & GCFLAG_PUBLIC));
B->h_original = (revision_t)O;
}
diff --git a/c4/gcpage.c b/c4/gcpage.c
--- a/c4/gcpage.c
+++ b/c4/gcpage.c
@@ -415,6 +415,7 @@
}
else if (obj != original) {
/* copy obj over original */
+ assert(obj->h_original == (revision_t)original);
copy_over_original(obj, original);
}
diff --git a/c4/nursery.c b/c4/nursery.c
--- a/c4/nursery.c
+++ b/c4/nursery.c
@@ -94,6 +94,7 @@
{
/* XXX inline the fast path */
assert(tid == (tid & STM_USER_TID_MASK));
+ assert(thread_descriptor->active > 0);
gcptr P = allocate_nursery(size, tid);
P->h_revision = stm_private_rev_num;
assert(P->h_original == 0); /* null-initialized already */
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
http://mail.python.org/mailman/listinfo/pypy-commit
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic