Source

pypy / pypy / translator / stm / src_stm / rpyintf.c

Diff from to

pypy/translator/stm/src_stm/rpyintf.c

   struct tx_descriptor *d = thread_descriptor;
   wlog_t *item;
   void *tls = stm_get_tls();
-  gcptr *gcroots = FindRootsForLocalCollect();
+  gcptr *gcroots = FindRootsForLocalCollect(d);
 
   while (gcroots[0] != NULL)
     {
 }
 void stm_nogc_stop_transaction(void)
 {
-    struct gcroot_s *gcroots;
+    gcptr *gcroots;
     gcptr W = stm_nogc_chained_list;
     stm_nogc_chained_list = NULL;
     while (W) {
         W = W_next;
     }
 
-    gcroots = FindRootsForLocalCollect();
-    while (gcroots->R != NULL) {
-        W = gcroots->L;
+    gcroots = FindRootsForLocalCollect(thread_descriptor);
+    while (gcroots[0] != NULL) {
+        W = gcroots[0];
         assert((W->h_tid & (GCFLAG_GLOBAL |
                             GCFLAG_NOT_WRITTEN |
                             GCFLAG_LOCAL_COPY)) == GCFLAG_LOCAL_COPY);
         W->h_tid |= GCFLAG_GLOBAL | GCFLAG_NOT_WRITTEN;
-        gcroots++;
+        gcroots += 2;
     }
 }
 void *pypy_g__stm_duplicate(void *src)