Author: Remi Meier
Branch:
Changeset: r960:2c5fadc1a485
Date: 2014-03-05 10:54 +0100
http://bitbucket.org/pypy/stmgc/changeset/2c5fadc1a485/
Log: test hash/id in demo_random
diff --git a/c7/demo/demo_random.c b/c7/demo/demo_random.c
--- a/c7/demo/demo_random.c
+++ b/c7/demo/demo_random.c
@@ -24,6 +24,8 @@
struct object_s hdr;
int sig;
long my_size;
+ long my_id;
+ long my_hash;
nodeptr_t next;
};
@@ -202,7 +204,7 @@
objptr_t simple_events(objptr_t p, objptr_t _r)
{
- int k = get_rand(8);
+ int k = get_rand(10);
int num;
switch (k) {
@@ -230,6 +232,8 @@
p = stm_allocate(size);
((nodeptr_t)p)->sig = SIGNATURE;
((nodeptr_t)p)->my_size = size;
+ ((nodeptr_t)p)->my_id = -1;
+ ((nodeptr_t)p)->my_hash = -1;
pop_roots();
/* reload_roots not necessary, all are old after start_transaction */
break;
@@ -249,6 +253,32 @@
write_barrier(_r);
set_next(_r, p);
break;
+ case 8: // id checking
+ if (p) {
+ nodeptr_t n = (nodeptr_t)p;
+ if (n->my_id == -1) {
+ write_barrier(p);
+ n->my_id = stm_id(p);
+ }
+ else {
+ read_barrier(p);
+ assert(n->my_id == stm_id(p));
+ }
+ }
+ break;
+ case 9:
+ if (p) {
+ nodeptr_t n = (nodeptr_t)p;
+ if (n->my_hash == -1) {
+ write_barrier(p);
+ n->my_hash = stm_identityhash(p);
+ }
+ else {
+ read_barrier(p);
+ assert(n->my_hash == stm_identityhash(p));
+ }
+ }
+ break;
}
return p;
}
@@ -359,6 +389,8 @@
shared_roots[i] = stm_allocate(sizeof(struct node_s));
((nodeptr_t)shared_roots[i])->sig = SIGNATURE;
((nodeptr_t)shared_roots[i])->my_size = sizeof(struct node_s);
+ ((nodeptr_t)shared_roots[i])->my_id = -1;
+ ((nodeptr_t)shared_roots[i])->my_hash = -1;
STM_PUSH_ROOT(stm_thread_local, shared_roots[i]);
}
stm_commit_transaction();
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit