finally fix bug...after a full day on this one.
[IRC.git] / Robust / src / Runtime / garbage.h
1 #ifndef GARBAGE_H
2 #define GARBAGE_H
3 #ifdef STM
4 #include "stmlookup.h"
5 #endif
6 struct garbagelist {
7   int size;
8   struct garbagelist *next;
9   void * array[];
10 };
11
12 struct listitem {
13   struct listitem * prev;
14   struct listitem * next;
15   struct garbagelist * stackptr;
16 #ifdef THREADS
17   struct ___Object___ * locklist;
18 #endif
19 #ifdef STM
20   unsigned int tc_size;
21   cliststruct_t **tc_structs;
22   chashlistnode_t **tc_table;
23   chashlistnode_t **tc_list;
24   struct objlist * objlist;
25   char **base;
26 #endif
27 };
28
29 #ifdef TASK
30 void fixtags();
31 #endif
32
33 #if defined(THREADS)||defined(DSTM)||defined(STM)
34 extern int needtocollect;
35 void checkcollect(void * ptr);
36 struct listitem * stopforgc(struct garbagelist * ptr);
37 void restartaftergc(struct listitem * litem);
38 #endif
39 void * tomalloc(int size);
40 void collect(struct garbagelist *stackptr);
41 int gc_createcopy(void * orig, void **);
42 void * mygcmalloc(struct garbagelist * ptr, int size);
43 #endif
44 #ifdef STM
45 void fixtable(chashlistnode_t **, chashlistnode_t **, cliststruct_t **, unsigned int);
46 #endif