7 #include "jni-private.h"
14 struct pointerblock *next;
17 //Need to check if pointers are transaction pointers
18 //this also catches the special flag value of 1 for local copies
20 #define ENQUEUE(orig, dst) \
21 if ((!(((unsigned int)orig)&0x1))) { \
22 if (orig>=curr_heapbase&&orig<curr_heaptop) { \
24 if (gc_createcopy(orig,©)) \
30 #define ENQUEUE(orig, dst) \
31 if (orig>=curr_heapbase&&orig<curr_heaptop) { \
33 if (gc_createcopy(orig,©)) \
37 #define SENQUEUE(orig, dst) \
40 if (gc_createcopy(orig,©)) \
44 #elif defined(FASTCHECK)
45 #define ENQUEUE(orig, dst) \
46 if (((unsigned int)orig)!=1) { \
48 if (gc_createcopy(orig,©)) \
52 #define ENQUEUE(orig, dst) \
55 if (gc_createcopy(orig,©)) \
63 struct garbagelist *next;
67 extern void * curr_heapbase;
68 extern void * curr_heapptr;
69 extern void * curr_heapgcpoint;
70 extern void * curr_heaptop;
72 extern void * to_heapbase;
73 extern void * to_heapptr;
74 extern void * to_heaptop;
77 struct listitem * prev;
78 struct listitem * next;
79 struct garbagelist * stackptr;
81 struct lockvector * lvector;
84 struct jnireferences ** jnirefs;
88 cliststruct_t **tc_structs;
89 chashlistnode_t **tc_table;
90 chashlistnode_t **tc_list;
91 struct objlist * objlist;
93 struct objlist * lockedlist;
96 #if defined(THREADS)||defined(STM)||defined(MLP)
106 extern struct pointerblock *taghead;
110 #if defined(THREADS)||defined(DSTM)||defined(STM)||defined(MLP)
111 extern int needtocollect;
112 void checkcollect(void * ptr);
113 void stopforgc(struct garbagelist * ptr);
114 void restartaftergc();
116 void * tomalloc(int size);
117 void collect(struct garbagelist *stackptr);
118 int gc_createcopy(void * orig, void **);
119 void * mygcmalloc(struct garbagelist * ptr, int size);
122 void fixtable(chashlistnode_t **, chashlistnode_t **, cliststruct_t **, unsigned int);
125 int within(void *ptr);