[pypy-commit] pypy stmgc-static-barrier: import stmgc/d2e01fce511f
arigo
noreply at buildbot.pypy.org
Fri Aug 23 20:11:22 CEST 2013
Author: Armin Rigo <arigo at tunes.org>
Branch: stmgc-static-barrier
Changeset: r66308:5904f9845d8c
Date: 2013-08-23 20:10 +0200
http://bitbucket.org/pypy/pypy/changeset/5904f9845d8c/
Log: import stmgc/d2e01fce511f
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 @@
-f614fd3a4080
+d2e01fce511f
diff --git a/rpython/translator/stm/src_stm/steal.c b/rpython/translator/stm/src_stm/steal.c
--- a/rpython/translator/stm/src_stm/steal.c
+++ b/rpython/translator/stm/src_stm/steal.c
@@ -218,11 +218,12 @@
dprintf(("already stolen: %p -> %p\n", P, L));
/* note that we should follow h_revision at least one more
- step: it is necessary if L is public but young (and then
- has GCFLAG_MOVED), but it is fine to do it more
- generally. */
- v = ACCESS_ONCE(L->h_revision);
- if (IS_POINTER(v)) {
+ step: in the case where L is public but young (and then
+ has GCFLAG_MOVED). Don't do it generally! L might be
+ a stub again. */
+ if (L->h_tid & GCFLAG_MOVED) {
+ v = ACCESS_ONCE(L->h_revision);
+ assert(IS_POINTER(v));
L = (gcptr)v;
dprintf(("\t---> %p\n", L));
}
More information about the pypy-commit
mailing list