Author: Remi Meier <[email protected]>
Branch: stmgc-c4
Changeset: r66390:a9503a4c6217
Date: 2013-08-27 15:28 +0200
http://bitbucket.org/pypy/pypy/changeset/a9503a4c6217/
Log: import stmgc
diff --git a/rpython/translator/stm/src_stm/gcpage.c
b/rpython/translator/stm/src_stm/gcpage.c
--- a/rpython/translator/stm/src_stm/gcpage.c
+++ b/rpython/translator/stm/src_stm/gcpage.c
@@ -496,15 +496,24 @@
static void mark_registered_stubs(void)
{
wlog_t *item;
+ gcptr L;
+
G2L_LOOP_FORWARD(registered_stubs, item) {
gcptr R = item->addr;
assert(R->h_tid & GCFLAG_SMALLSTUB);
R->h_tid |= (GCFLAG_MARKED | GCFLAG_VISITED);
- gcptr L = (gcptr)(R->h_revision - 2);
- L = stmgcpage_visit(L);
- R->h_revision = ((revision_t)L) | 2;
+ if (R->h_revision & 2) {
+ L = (gcptr)(R->h_revision - 2);
+ L = stmgcpage_visit(L);
+ R->h_revision = ((revision_t)L) | 2;
+ }
+ else {
+ L = (gcptr)R->h_revision;
+ L = stmgcpage_visit(L);
+ R->h_revision = (revision_t)L;
+ }
/* h_original will be kept up-to-date because
it is either == L or L's h_original. And
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 @@
-cb61cf4e30a9
+63c2673c2045
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit