[pypy-commit] stmgc non-zero-nursery: make demos initialize references with NULL after allocation

Raemi noreply at buildbot.pypy.org
Thu Mar 12 15:42:45 CET 2015


Author: Remi Meier <remi.meier at inf.ethz.ch>
Branch: non-zero-nursery
Changeset: r1722:a514aa39cef8
Date: 2015-03-11 11:49 +0100
http://bitbucket.org/pypy/stmgc/changeset/a514aa39cef8/

Log:	make demos initialize references with NULL after allocation

diff --git a/c8/demo/demo_random.c b/c8/demo/demo_random.c
--- a/c8/demo/demo_random.c
+++ b/c8/demo/demo_random.c
@@ -231,10 +231,14 @@
                            sizeof(struct node_s) + 4096*70};
         size_t size = sizes[get_rand(4)];
         p = stm_allocate(size);
-        ((nodeptr_t)p)->sig = SIGNATURE;
-        ((nodeptr_t)p)->my_size = size;
-        ((nodeptr_t)p)->my_id = 0;
-        ((nodeptr_t)p)->my_hash = 0;
+        nodeptr_t n = (nodeptr_t)p;
+        n->sig = SIGNATURE;
+        n->my_size = size;
+        n->my_id = 0;
+        n->my_hash = 0;
+        nodeptr_t TLPREFIX *last_next = (nodeptr_t TLPREFIX *)((stm_char*)n + n->my_size - sizeof(void*));
+        n->next = NULL;
+        *last_next = NULL;
         pop_roots();
         /* reload_roots not necessary, all are old after start_transaction */
         break;
diff --git a/c8/demo/demo_random2.c b/c8/demo/demo_random2.c
--- a/c8/demo/demo_random2.c
+++ b/c8/demo/demo_random2.c
@@ -240,10 +240,14 @@
             sizeof(struct node_s) + (get_rand(100000) & ~15)};
         size_t size = sizes[get_rand(sizeof(sizes) / sizeof(size_t))];
         p = stm_allocate(size);
-        ((nodeptr_t)p)->sig = SIGNATURE;
-        ((nodeptr_t)p)->my_size = size;
-        ((nodeptr_t)p)->my_id = 0;
-        ((nodeptr_t)p)->my_hash = 0;
+        nodeptr_t n = (nodeptr_t)p;
+        n->sig = SIGNATURE;
+        n->my_size = size;
+        n->my_id = 0;
+        n->my_hash = 0;
+        nodeptr_t TLPREFIX *last_next = (nodeptr_t TLPREFIX *)((stm_char*)n + n->my_size - sizeof(void*));
+        n->next = NULL;
+        *last_next = NULL;
         pop_roots(pushed);
         break;
     case 4:  // read and validate 'p'


More information about the pypy-commit mailing list