From: bdemsky Date: Sat, 23 Jul 2011 21:11:02 +0000 (+0000) Subject: this should fix dtlb misses X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=1ed4289ac4f9826f13840379441519fafefb5af4;p=IRC.git this should fix dtlb misses --- diff --git a/Robust/src/Runtime/bamboo/pmc_forward.c b/Robust/src/Runtime/bamboo/pmc_forward.c index 746d947f..c2c158af 100644 --- a/Robust/src/Runtime/bamboo/pmc_forward.c +++ b/Robust/src/Runtime/bamboo/pmc_forward.c @@ -23,6 +23,7 @@ void pmc_countbytes(struct pmc_unit * unit, void *bottomptr, void *topptr) { unsigned int totalbytes=0; void * lastunmarked=NULL; bool padokay=false; + while(tmpptrhighunit-1:region->highunit-2; void * lastunitend=pmc_unitend(lastunit); - while(lastunitend>=region->lastptr) { + //move units that are nominally supposed to be in free area back to the right location + while(lastunitend>=region->lastptr&&lastunit>=region->lowunit) { pmc_heapptr->units[lastunit].endptr=lastunitend; //tprintf("Ch3: %u -> %x\n", lastunit, lastunitend); lastunit--; lastunitend=pmc_unitend(lastunit); } + //move units that are actually in the free area (but nominaly not supposed to be) to the end pointer + while(lastunit>=region->lowunit&&pmc_heapptr->units[lastunit].endptr>region->lastptr) { + pmc_heapptr->units[lastunit].endptr=region->lastptr; + lastunit--; + } } + while(tmpptr