1- bug fix
authorbdemsky <bdemsky>
Thu, 14 Jul 2011 11:48:25 +0000 (11:48 +0000)
committerbdemsky <bdemsky>
Thu, 14 Jul 2011 11:48:25 +0000 (11:48 +0000)
2- pad out empty objects...

Robust/src/Runtime/bamboo/pmc_forward.c
Robust/src/Runtime/bamboo/pmc_refupdate.c

index 14788db45ba6434b7bf8175637dd491b294f5183..d886b552f13d3a93f03d4f898882f5a3cb60c536 100644 (file)
@@ -21,6 +21,8 @@ void pmc_count() {
 void pmc_countbytes(struct pmc_unit * unit, void *bottomptr, void *topptr) {
   void *tmpptr=bottomptr;
   unsigned int totalbytes=0;
+  void * lastunmarked=NULL;
+  bool padokay=false;
   while(tmpptr<topptr) {
     unsigned int type;
     unsigned int size;
@@ -31,8 +33,18 @@ void pmc_countbytes(struct pmc_unit * unit, void *bottomptr, void *topptr) {
       continue;
     }
     size=((size-1)&(~(ALIGNMENTSIZE-1)))+ALIGNMENTSIZE;
-    if (((struct ___Object___ *)tmpptr)->marked)
+    if (((struct ___Object___ *)tmpptr)->marked) {
+      if (lastunmarked!=NULL) {
+       if (padokay)
+         padspace(lastunmarked, (unsigned INTPTR) (tmpptr-lastunmarked));
+       padokay=false;
+       lastunmarked=NULL;
+      }
       totalbytes+=size;
+    } else if (lastunmarked!=NULL)
+      lastunmarked=tmpptr;
+    else
+      padokay=true;
     tmpptr+=size;
   }
   unit->numbytes=totalbytes;
index 603dc9c9ee06e103f691021eb74d02ba0b7a967f..078c227031c42b75deaefdcc9beb78625f846254 100644 (file)
@@ -245,8 +245,8 @@ void movebackward(void *dstptr, void *origptr, unsigned int length) {
   void *endtoptr=dstptr+length;
 
   if(origptr < endtoptr&&dstptr < origptr+length) {
-    unsigned int *sptr=origptr+length;
-    unsigned int *dptr=endtoptr;
+    unsigned int *sptr=origptr+length-4;
+    unsigned int *dptr=endtoptr-4;
     unsigned int len=length;
     //we will never have an object of size 0....