From: bdemsky Date: Sat, 24 Oct 2009 07:10:51 +0000 (+0000) Subject: bug fixes X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=87a2228b48ec20742bc275204af2d4663e40b34b;p=IRC.git bug fixes --- diff --git a/Robust/src/Runtime/garbage.c b/Robust/src/Runtime/garbage.c index 6f982525..55135b17 100644 --- a/Robust/src/Runtime/garbage.c +++ b/Robust/src/Runtime/garbage.c @@ -201,15 +201,25 @@ void fixtable(chashlistnode_t ** tc_table, chashlistnode_t **tc_list, cliststruc int i; SENQUEUE((void *)ao->___objlocation___, *((void **)&ao->___objlocation___)); #ifdef STMARRAY - int lowindex=(ao->lowindex)/sizeof(void *); - int highindex=(ao->highindex+INDEXLENGTH)/sizeof(void *); - for(i=lowindex; ilowindex>>INDEXSHIFT; + int highind=ao->highindex; + int highindex=(highind==-1)?-1:(highind>>INDEXSHIFT); + int j; + for(j=lowindex; j<=highindex; j++) { + unsigned int lockval; + if (GETLOCKVAL(lockval, ao, j)==STMDIRY) { + int lowi=(j<___length___)+sizeof(int)))[i]; + SENQUEUE(objptr, ((void **)(((char *)&ao->___length___)+sizeof(int)))[i]); + } +#ifdef STMARRAY + } #endif - void *objptr=((void **)(((char *)&ao->___length___)+sizeof(int)))[i]; - SENQUEUE(objptr, ((void **)(((char *)&ao->___length___)+sizeof(int)))[i]); - } } else { INTPTR size=pointer[0]; int i;