From: bdemsky Date: Wed, 6 Jul 2011 01:25:09 +0000 (+0000) Subject: more changes X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=0000e064c7439815222702b56c520139e6acbd54;p=IRC.git more changes --- diff --git a/Robust/src/Runtime/bamboo/pmc_forward.c b/Robust/src/Runtime/bamboo/pmc_forward.c index 84c3e2a3..a7d14fcc 100644 --- a/Robust/src/Runtime/bamboo/pmc_forward.c +++ b/Robust/src/Runtime/bamboo/pmc_forward.c @@ -4,8 +4,8 @@ void pmc_count() { for(int i=0;iunits[i].lock)) { //got lock - void *unitbase=gcbaseva+i*UNITSIZE; - void *unittop=unitbase+UNITSIZE; + void *unitbase=(i==0)?gcbaseva:pmc_heapptr->unit[i-1]->endptr; + void *unittop=pmc_heapptr->unit[i]->endptr; pmc_countbytes(&pmc_heapptr->unit[i], unitbase, unittop); } } @@ -76,9 +76,18 @@ void pmc_doforward() { return; if (endregion==-1) endregion=NUMPMCUNITS; - region->startptr=gcbaseva+startregion*UNITSIZE; - region->endptr=gcbaseva+endregion*UNITSIZE; - pmc_forward(region, totalbytes, region->startptr, region->endptr, BAMBOO_NUM_OF_CORE&1); + region->startptr=(i==0)?gcbaseva:pmc_heapptr->units[i-1].endptr; + region->endptr=pmc_heapptr->units[i].endptr; + + if (BAMBOO_NUM_OF_CORE&1) { + //backward direction + region->lastptr=region->endptr-totalbytes; + } else { + //forward direction + region->lastptr=region->startptr+totalbytes; + } + + pmc_forward(region, totalbytes, region->startptr, region->endptr, !(BAMBOO_NUM_OF_CORE&1)); } diff --git a/Robust/src/Runtime/bamboo/pmc_garbage.h b/Robust/src/Runtime/bamboo/pmc_garbage.h index 58c0c065..2be0312e 100644 --- a/Robust/src/Runtime/bamboo/pmc_garbage.h +++ b/Robust/src/Runtime/bamboo/pmc_garbage.h @@ -9,12 +9,15 @@ struct pmc_unit { tmc_spin_mutex_t lock; unsigned int numbytes; unsigned int regionnum; + void * endptr; }; struct pmc_region { + void * allocptr; void * lastptr; void * startptr; void * endptr; + tmc_spin_mutex_t lock; struct ___Object___ * lastobj; struct pmc_queue markqueue; }; diff --git a/Robust/src/Runtime/bamboo/pmc_mem.c b/Robust/src/Runtime/bamboo/pmc_mem.c new file mode 100644 index 00000000..e69de29b diff --git a/Robust/src/Runtime/bamboo/pmc_mem.h b/Robust/src/Runtime/bamboo/pmc_mem.h new file mode 100644 index 00000000..caad0d0b --- /dev/null +++ b/Robust/src/Runtime/bamboo/pmc_mem.h @@ -0,0 +1,14 @@ +#ifndef PMC_MEM_H +#define PMC_MEM_H + +void * pmc_alloc(unsigned int * numbytesallocated, unsigned int minimumbytes) { + for(int i=0;iregions[i].lastptr; + void *finishptr=pmc_heapptr->regions[i+1].lastptr; + if ((finishptr-startptr)>minimumbytes) { + + } + } +} + +#endif diff --git a/Robust/src/Runtime/bamboo/pmc_refupdate.c b/Robust/src/Runtime/bamboo/pmc_refupdate.c index 1e4eaa87..d019b281 100644 --- a/Robust/src/Runtime/bamboo/pmc_refupdate.c +++ b/Robust/src/Runtime/bamboo/pmc_refupdate.c @@ -53,14 +53,13 @@ void pmc_referenceupdate(void *bottomptr, void *topptr) { void pmc_docompact() { struct pmc_region * region=&pmc_heapptr->regions[BAMBOO_NUM_OF_CORE]; - pmc_compact(region, BAMBOO_NUM_OF_CORE&1, region->startptr, region->endptr); + pmc_compact(region, !(BAMBOO_NUM_OF_CORE&1), region->startptr, region->endptr); } void pmc_compact(struct pmc_region * region, int forward, void *bottomptr, void *topptr) { if (forward) { void *tmpptr=bottomptr; - void *lastptr; while(tmpptrlastptr=lastptr; } else { struct ___Object___ *backward=region->lastobj; struct ___Object___ *lastobj=NULL;