Author: Armin Rigo <[email protected]>
Branch: copy-over-original2
Changeset: r430:5c385b2b629a
Date: 2013-07-24 16:49 +0200
http://bitbucket.org/pypy/stmgc/changeset/5c385b2b629a/
Log: Tweak the code for the case of a stub in h_original (tested by run
#931 of test_more_multi_thread)
diff --git a/c4/gcpage.c b/c4/gcpage.c
--- a/c4/gcpage.c
+++ b/c4/gcpage.c
@@ -264,7 +264,10 @@
where backup is stolen and its h-original
points to it. */
- assert(stmgc_size(id_copy) == stmgc_size(obj));
+ /* id_copy may be a stub, but in this case, as the original, it
+ should have been allocated with a big enough chunk of memory */
+ assert((id_copy->h_tid & GCFLAG_STUB) ||
+ stmgc_size(id_copy) == stmgc_size(obj));
/* prehash may be specific hash value for prebuilts, or 0 */
revision_t prehash = id_copy->h_original;
assert(IMPLIES(prehash, id_copy->h_tid & GCFLAG_PREBUILT_ORIGINAL));
@@ -277,7 +280,8 @@
| GCFLAG_PUBLIC | GCFLAG_HAS_ID
| GCFLAG_PRIVATE_FROM_PROTECTED)));
id_copy->h_original = prehash;
- id_copy->h_tid = old_tid & ~GCFLAG_VISITED; /* will be visited next */
+ id_copy->h_tid = old_tid & ~(GCFLAG_VISITED |/* will be visited next */
+ GCFLAG_STUB); /* no longer a stub */
dprintf(("copy %p over %p\n", obj, id_copy));
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit