Author: Armin Rigo <[email protected]>
Branch: 
Changeset: r357:bca8a7e8a36a
Date: 2013-07-06 15:06 +0200
http://bitbucket.org/pypy/stmgc/changeset/bca8a7e8a36a/

Log:    Test and pass with integers

diff --git a/c4/extra.c b/c4/extra.c
--- a/c4/extra.c
+++ b/c4/extra.c
@@ -156,9 +156,6 @@
 size_t stm_decode_abort_info(struct tx_descriptor *d, long long elapsed_time,
                              int abort_reason, char *output)
 {
-    return 1;
-}
-#if 0
     /* re-encodes the abort info as a single string.
        For convenience (no escaping needed, no limit on integer
        sizes, etc.) we follow the bittorrent format. */
@@ -191,11 +188,11 @@
     WRITE_BUF(buffer, res_size);
     WRITE('e');
     for (i=0; i<d->abortinfo.size; i+=2) {
-        char *object = (char *)stm_RepeatReadBarrier(d->abortinfo.items[i+0]);
+        char *object = (char *)d->abortinfo.items[i+0];
         long *fieldoffsets = (long*)d->abortinfo.items[i+1];
         long kind, offset;
         size_t rps_size;
-        RPyString *rps;
+        char *rps;
 
         while (1) {
             kind = *fieldoffsets++;
@@ -222,13 +219,14 @@
                                    *(unsigned long*)(object + offset));
                 WRITE_BUF(buffer, res_size);
                 break;
-            case 3:    /* pointer to STR */
-                rps = *(RPyString **)(object + offset);
+            case 3:    /* a string of bytes from the target object */
+                rps = *(char **)(object + offset);
+                offset = *fieldoffsets++;
                 if (rps) {
-                    rps_size = RPyString_Size(rps);
+                    rps_size = stmcb_size((gcptr)rps) - offset;
                     res_size = sprintf(buffer, "%zu:", rps_size);
                     WRITE_BUF(buffer, res_size);
-                    WRITE_BUF(_RPyString_AsString(rps), rps_size);
+                    WRITE_BUF(rps + offset, rps_size);
                 }
                 else {
                     WRITE_BUF("0:", 2);
@@ -245,7 +243,6 @@
 #undef WRITE_BUF
     return totalsize;
 }
-#endif
 
 char *stm_inspect_abort_info(void)
 {
diff --git a/c4/test/test_extra.py b/c4/test/test_extra.py
--- a/c4/test/test_extra.py
+++ b/c4/test/test_extra.py
@@ -19,7 +19,6 @@
     # no real test here
 
 def test_inspect_abort_info_signed():
-    py.test.skip("in-progress")
     fo1 = ffi.new("long[]", [-2, 1, HDR, -1, 0])
     #
     @perform_transaction
@@ -32,4 +31,4 @@
         else:
             c = lib.stm_inspect_abort_info()
             assert c
-            assert ffi.string(c) == "???"
+            assert ffi.string(c).endswith("eli-421289712eee")
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to