pup machineInfo byte by byte instead of by size, to support backward compatibility...
authorGengbin Zheng <gzheng@illinois.edu>
Tue, 9 Oct 2012 17:12:12 +0000 (12:12 -0500)
committerGengbin Zheng <gzheng@illinois.edu>
Tue, 9 Oct 2012 17:12:12 +0000 (12:12 -0500)
src/langs/bluegene/bigsim_read.C
src/util/pup.h
src/util/pup_xlater.C

index 7bb7b62eeb9c4459e8a158d126d742a43378944b..a7e3efe15999fe3c6bd7a0cb3d568c0912cffff3 100644 (file)
@@ -30,7 +30,8 @@ int BgReadProc(int procNum, int numWth ,int numEmulatingPes, int totalWorkerProc
 //  PUP::fromDisk p(f);
   PUP::fromDisk pd(f);
   PUP::machineInfo machInfo;
 //  PUP::fromDisk p(f);
   PUP::fromDisk pd(f);
   PUP::machineInfo machInfo;
-  pd((char *)&machInfo, sizeof(machInfo));
+  //pd((char *)&machInfo, sizeof(machInfo));
+  pd | machInfo;
   if (!machInfo.valid()) CmiAbort("Invalid machineInfo on disk file!\n");
   PUP::xlater p(machInfo, pd);
 
   if (!machInfo.valid()) CmiAbort("Invalid machineInfo on disk file!\n");
   PUP::xlater p(machInfo, pd);
 
@@ -66,7 +67,8 @@ int BgReadProcWindow(int procNum, int numWth ,int numEmulatingPes, int totalWork
   }
   PUP::fromDisk pd(f);
   PUP::machineInfo machInfo;
   }
   PUP::fromDisk pd(f);
   PUP::machineInfo machInfo;
-  pd((char *)&machInfo, sizeof(machInfo));
+  //pd((char *)&machInfo, sizeof(machInfo));
+  pd | machInfo;
   if (!machInfo.valid()) CmiAbort("Invalid machineInfo on disk file!\n");
   PUP::xlater p(machInfo, pd);
 
   if (!machInfo.valid()) CmiAbort("Invalid machineInfo on disk file!\n");
   PUP::xlater p(machInfo, pd);
 
@@ -117,7 +119,8 @@ int* BgLoadOffsets(int totalProcs, int numPes){
       CmiAbort("BgLoadOffsets failed!\n");
     }  
     PUP::fromDisk pd(f);
       CmiAbort("BgLoadOffsets failed!\n");
     }  
     PUP::fromDisk pd(f);
-    pd((char *)&machInfo, sizeof(machInfo));
+    //pd((char *)&machInfo, sizeof(machInfo));
+    pd | machInfo;
     PUP::xlater p(machInfo, pd);
     if (!machInfo.valid()) CmiAbort("Invalid machineInfo on disk file!\n");
     p|procsInPe;
     PUP::xlater p(machInfo, pd);
     if (!machInfo.valid()) CmiAbort("Invalid machineInfo on disk file!\n");
     p|procsInPe;
@@ -143,7 +146,8 @@ int BgLoadTraceSummary(const char *fname, int &totalWorkerProcs, int &numX, int
   }
 
   PUP::fromDisk pd(f);
   }
 
   PUP::fromDisk pd(f);
-  pd((char *)&machInfo, sizeof(machInfo));     // load machine info
+//  pd((char *)&machInfo, sizeof(machInfo));   // load machine info
+  pd | machInfo;
   if (!machInfo.valid()) CmiAbort("Invalid machineInfo on disk file!\n");
   PUP::xlater p(machInfo, pd);
   p|totalWorkerProcs;
   if (!machInfo.valid()) CmiAbort("Invalid machineInfo on disk file!\n");
   PUP::xlater p(machInfo, pd);
   p|totalWorkerProcs;
index 5134b07da6f8c25002de82c16ac11e3cf7f4c12c..47dbef0fd8efc0301cdef6b450f8366e46384383 100644 (file)
@@ -564,7 +564,7 @@ class machineInfo {
   myByte boolBytes;
   myByte pointerBytes;
 
   myByte boolBytes;
   myByte pointerBytes;
 
-  myByte padding[1];//Padding to 16 bytes
+//  myByte padding[1];//Padding to 16 bytes
 
   //Return true if our magic number is valid.
   CmiBool valid(void) const;
 
   //Return true if our magic number is valid.
   CmiBool valid(void) const;
@@ -573,6 +573,19 @@ class machineInfo {
   
   //Get a machineInfo for the current machine
   static const machineInfo &current(void);
   
   //Get a machineInfo for the current machine
   static const machineInfo &current(void);
+
+  void pup(er &p) {
+      myByte  padding;
+
+      p(magic, 4);
+      p(version);
+      if (version == 0) p(intBytes, 4);
+      else p(intBytes, 5);
+      p(intFormat);
+      p(floatBytes); p(doubleBytes); p(floatFormat);
+      p(boolBytes); p(pointerBytes);
+      if (version == 0) p(padding);
+  }
 };
 
 /// "Wrapped" PUP::er: forwards requests to another PUP::er.
 };
 
 /// "Wrapped" PUP::er: forwards requests to another PUP::er.
index 76d864b117c777d28eedf1be66c016b1e4a300c6..5eea389b9e17c8315f2895de851d8df7c1535217 100644 (file)
@@ -90,7 +90,7 @@ const PUP::machineInfo &PUP::machineInfo::current(void)
                m=new machineInfo();
                for (int i=0;i<4;i++)
                        m->magic[i]=machInfo_magic[i];
                m=new machineInfo();
                for (int i=0;i<4;i++)
                        m->magic[i]=machInfo_magic[i];
-               m->version=0;
+               m->version=1;
                m->intBytes[0]=sizeof(char);
                m->intBytes[1]=sizeof(short);
                m->intBytes[2]=sizeof(int);
                m->intBytes[0]=sizeof(char);
                m->intBytes[1]=sizeof(short);
                m->intBytes[2]=sizeof(int);
@@ -104,7 +104,7 @@ const PUP::machineInfo &PUP::machineInfo::current(void)
                m->floatFormat=getFloatFormat();
                m->boolBytes=sizeof(CmiBool);
                m->pointerBytes=sizeof(void*);
                m->floatFormat=getFloatFormat();
                m->boolBytes=sizeof(CmiBool);
                m->pointerBytes=sizeof(void*);
-               m->padding[0]=0;
+               //m->padding[0]=0;
        }
        return *m;
 }
        }
        return *m;
 }