From: bdemsky Date: Wed, 6 Jul 2011 21:18:26 +0000 (+0000) Subject: changes X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=4dad6ddf72e5d93daae3b481ddb4a98e73dfa0f7;p=IRC.git changes --- diff --git a/Robust/src/Runtime/bamboo/pmc_forward.c b/Robust/src/Runtime/bamboo/pmc_forward.c index e073b365..94d3fd90 100644 --- a/Robust/src/Runtime/bamboo/pmc_forward.c +++ b/Robust/src/Runtime/bamboo/pmc_forward.c @@ -1,12 +1,16 @@ #include "pmc_forward.h" +#include "runtime_arch.h" +#include "bambooalign.h" +#include "pmc_garbage.h" +#include "multicoregc.h" void pmc_count() { for(int i=0;iunits[i].lock)) { //got lock - 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); + void *unitbase=(i==0)?gcbaseva:pmc_heapptr->units[i-1]->endptr; + void *unittop=pmc_heapptr->units[i]->endptr; + pmc_countbytes(&pmc_heapptr->units[i], unitbase, unittop); } } } @@ -132,7 +136,7 @@ void pmc_forward(struct pmc_region *region, unsigned int totalbytes, void *botto ((struct ___Object___ *)tmpptr)->marked=forwardptr; void *newforwardptr=forwardptr+size; while(newforwardptr>endunit) { - pmc_heapptr->region[currunit].endptr=newforwardptr; + pmc_heapptr->regions[currunit].endptr=newforwardptr; currunit++; endunit=pmc_unitend(currunit); } diff --git a/Robust/src/Runtime/bamboo/pmc_forward.h b/Robust/src/Runtime/bamboo/pmc_forward.h index c8514792..7f63bbb8 100644 --- a/Robust/src/Runtime/bamboo/pmc_forward.h +++ b/Robust/src/Runtime/bamboo/pmc_forward.h @@ -7,7 +7,7 @@ void pmc_count(); void pmc_countbytes(struct pmc_unit * region, void *bottomptr, void *topptr); void pmc_processunits(); void pmc_doforward(); -void pmc_forward(unsigned int totalbytes, void *bottomptr, void *topptr, bool fwddirection); +void pmc_forward(struct pmc_region *region, unsigned int totalbytes, void *bottomptr, void *topptr, bool fwddirection); #endif diff --git a/Robust/src/Runtime/bamboo/pmc_garbage.c b/Robust/src/Runtime/bamboo/pmc_garbage.c index 0b8301a9..46285737 100644 --- a/Robust/src/Runtime/bamboo/pmc_garbage.c +++ b/Robust/src/Runtime/bamboo/pmc_garbage.c @@ -1,4 +1,6 @@ #include "pmc_garbage.h" +#include "multicoregc.h" +#inclued "runtime_arch.h" struct pmc_queue * pmc_localqueue; diff --git a/Robust/src/Runtime/bamboo/pmc_garbage.h b/Robust/src/Runtime/bamboo/pmc_garbage.h index 9f565252..1662f0c1 100644 --- a/Robust/src/Runtime/bamboo/pmc_garbage.h +++ b/Robust/src/Runtime/bamboo/pmc_garbage.h @@ -1,6 +1,8 @@ #ifndef PMC_GARBAGE_H #define PMC_GARBAGE_H #include +#include "pmc_queue.h" +#include "structdefs.h" #define PMC_MINALLOC 131072 #define NUMPMCUNITS (4*NUMCORES4GC) @@ -26,10 +28,11 @@ struct pmc_region { }; struct pmc_heap { - struct pmc_region units[NUMPMCUNITS]; + struct pmc_unit units[NUMPMCUNITS]; struct pmc_region regions[NUMCORES4GC]; tmc_spin_mutex_t lock; volatile unsigned int numthreads; + tmc_spin_barrier_t barrier; }; extern struct pmc_heap * pmc_heapptr; diff --git a/Robust/src/Runtime/bamboo/pmc_mark.c b/Robust/src/Runtime/bamboo/pmc_mark.c index 894c6516..dc933ed0 100644 --- a/Robust/src/Runtime/bamboo/pmc_mark.c +++ b/Robust/src/Runtime/bamboo/pmc_mark.c @@ -1,4 +1,7 @@ #include "pmc_mark.h" +#include "pmc_garbage.h" +#include "multicoremgc.h" +#include #define PMC_MARKOBJ(objptr) {void * marktmpptr=objptr; if (marktmpptr!=NULL) {pmc_markObj(marktmpptr);}} diff --git a/Robust/src/Runtime/bamboo/pmc_mark.h b/Robust/src/Runtime/bamboo/pmc_mark.h index 2c1c8739..dbe18924 100644 --- a/Robust/src/Runtime/bamboo/pmc_mark.h +++ b/Robust/src/Runtime/bamboo/pmc_mark.h @@ -1,5 +1,8 @@ #ifndef PMC_MARK_H #define PMC_MARK_H +#include "multicore.h" +#include "multicoregc.h" +#include "structdefs.h" void pmc_markObj(struct ___Object___ *ptr); void pmc_scanPtrsInObj(void * ptr, int type); diff --git a/Robust/src/Runtime/bamboo/pmc_mem.c b/Robust/src/Runtime/bamboo/pmc_mem.c index a939bf30..6179a3b7 100644 --- a/Robust/src/Runtime/bamboo/pmc_mem.c +++ b/Robust/src/Runtime/bamboo/pmc_mem.c @@ -1,3 +1,4 @@ +#include "pmc_garbage.h" #include "pmc_mem.h" void * pmc_alloc(unsigned int * numbytesallocated, unsigned int minimumbytes) { diff --git a/Robust/src/Runtime/bamboo/pmc_queue.c b/Robust/src/Runtime/bamboo/pmc_queue.c index 82fbcc1d..c2d51b9f 100644 --- a/Robust/src/Runtime/bamboo/pmc_queue.c +++ b/Robust/src/Runtime/bamboo/pmc_queue.c @@ -1,7 +1,8 @@ +#include #include "pmc_queue.h" void pmc_queueinit(struct pmc_queue *queue) { - queue->head=queue->tail=RUNMALLOC(struct pmc_queue_segment); + queue->head=queue->tail=RUNMALLOC(sizeof(struct pmc_queue_segment)); queue->headindex=queue->tailindex=0; } @@ -21,12 +22,12 @@ void * pmc_dequeue(struct pmc_queue *queue) { } //now try to decrement if (queue->tailindex!=queue->headindex) { - value=queue->tail[queue->tailindex]; + value=queue->tail->objects[queue->tailindex]; queue->tailindex++; } } while(false); tmc_spin_mutex_unlock(&queue->lock); - return status; + return value; } void pmc_enqueue(struct pmc_queue* queue, void *ptr) { @@ -37,7 +38,7 @@ void pmc_enqueue(struct pmc_queue* queue, void *ptr) { queue->headindex++; return; } else { - struct pmc_queue_segment * seg=RUNMALLOC(struct pmc_queue_segment); + struct pmc_queue_segment * seg=RUNMALLOC(sizeof(struct pmc_queue_segment)); seg->objects[0]=ptr; //simplify everything by grabbing a lock on segment change tmc_spin_mutex_lock(&queue->lock); diff --git a/Robust/src/Runtime/bamboo/pmc_queue.h b/Robust/src/Runtime/bamboo/pmc_queue.h index 692019a7..dda1350d 100644 --- a/Robust/src/Runtime/bamboo/pmc_queue.h +++ b/Robust/src/Runtime/bamboo/pmc_queue.h @@ -1,5 +1,6 @@ #ifndef PMC_QUEUE_H #define PMC_QUEUE_H +#include "multicore.h" #include #define NUM_PMC_QUEUE_OBJECTS 256 @@ -14,7 +15,6 @@ struct pmc_queue { volatile int headindex; volatile int tailindex; tmc_spin_mutex_t lock; - tmc_spin_barrier_t barrier; }; void * pmc_dequeue(struct pmc_queue *queue); diff --git a/Robust/src/Runtime/bamboo/pmc_refupdate.c b/Robust/src/Runtime/bamboo/pmc_refupdate.c index c5dff1ca..be58e88c 100644 --- a/Robust/src/Runtime/bamboo/pmc_refupdate.c +++ b/Robust/src/Runtime/bamboo/pmc_refupdate.c @@ -1,6 +1,9 @@ +#include +#include "structdefs.h" #include "pmc_forward.h" #include "pmc_refupdate.h" + #define pmcupdateObj(objptr) ((void *)((struct ___Object___ *)objptr)->marked) #define PMCUPDATEOBJ(obj) {void *updatetmpptr=obj; if (updatetmpptr!=NULL) {obj=pmcupdateObj(updatetmpptr);}}