Author: Armin Rigo <[email protected]>
Branch: marker
Changeset: r1172:a07a3f22d422
Date: 2014-04-20 10:09 +0200
http://bitbucket.org/pypy/stmgc/changeset/a07a3f22d422/

Log:    Look for markers until one expand_marker() calls return a non-empty
        string

diff --git a/c7/stm/marker.c b/c7/stm/marker.c
--- a/c7/stm/marker.c
+++ b/c7/stm/marker.c
@@ -27,11 +27,8 @@
                 stmcb_expand_marker(pseg->pub.segment_base, x, current[1].ss,
                                     pseg->marker_self, _STM_MARKER_LEN);
 
-                if (pseg->marker_self[0] == 0) {
-                    pseg->marker_self[0] = '?';
-                    pseg->marker_self[1] = 0;
-                }
-                break;
+                if (pseg->marker_self[0] != 0)
+                    break;
             }
         }
     }
diff --git a/c7/test/test_marker.py b/c7/test/test_marker.py
--- a/c7/test/test_marker.py
+++ b/c7/test/test_marker.py
@@ -153,3 +153,25 @@
         self.abort_transaction()
         #
         assert seen == [("run aborted other", "time_ok", "<<<29>>>")]
+
+    def test_multiple_markers(self):
+        @ffi.callback("void(char *, uintptr_t, object_t *, char *, size_t)")
+        def expand_marker(base, number, ptr, outbuf, outbufsize):
+            seen.append(number)
+            if ptr == ffi.NULL:
+                return
+            s = '%d %r\x00' % (number, ptr)
+            assert len(s) <= outbufsize
+            outbuf[0:len(s)] = s
+        seen = []
+        lib.stmcb_expand_marker = expand_marker
+        #
+        self.start_transaction()
+        p = stm_allocate(16)
+        self.push_root(ffi.cast("object_t *", 27))
+        self.push_root(p)
+        self.push_root(ffi.cast("object_t *", 29))
+        self.push_root(ffi.cast("object_t *", ffi.NULL))
+        raw = lib._stm_expand_marker()
+        assert ffi.string(raw) == '27 %r' % (p,)
+        assert seen == [29, 27]
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to