extern struct RuntimeHash *fdtoobject;
#endif
+#ifdef GARBAGESTATS
+#define MAXSTATS 500
+long garbagearray[MAXSTATS];
+#endif
+
#if defined(THREADS) || defined(DSTM) || defined(STM)
int needtocollect=0;
struct listitem * list=NULL;
}
#endif
+#ifdef GARBAGESTATS
+ {
+ int i;
+ for(i=0;i<MAXSTATS;i++)
+ garbagearray[i]=0;
+ }
+#endif
+
if (head==NULL) {
headindex=0;
tailindex=0;
printf("Garbage collected: Old bytes: %u\n", curr_heapptr-curr_heapbase);
printf("New space: %u\n", to_heapptr-to_heapbase);
printf("Total space: %u\n", to_heaptop-to_heapbase);
+ {
+ int i;
+ for(i=0;i<MAXSTATS;i++) {
+ if (garbagearray[i]!=0)
+ printf("Type=%d Size=%u\n", i, garbagearray[i]);
+ }
+ }
#endif
/* Flip to/curr heaps */
{
int size=classsize[type];
void *newobj=tomalloc(size);
memcpy(newobj, orig, size);
+#endif
+#ifdef GARBAGESTATS
+ garbagearray[type]+=size;
#endif
((int *)orig)[0]=-1;
((void **)orig)[1]=newobj;
void *newobj=tomalloc(size);
memcpy(newobj, orig, size);
#endif
-
+#ifdef GARBAGESTATS
+ garbagearray[type]+=size;
+#endif
((int *)orig)[0]=-1;
((void **)orig)[1]=newobj;
*copy_ptr=newobj;