Fixing memory leak in a debugging routine.
[charm.git] / src / ck-com / RectMulticastStrategy.C
index 444ef95e5df68f32e9f7c6a94f32948e43ed24a8..0b06a91ae611e8d91c72e1ca8f84177a8ed080db 100644 (file)
@@ -1,4 +1,13 @@
-//#define COMMLIB_RECT_DEBUG
+/**
+   @addtogroup ComlibCharmStrategy
+*/
+/*@{*/
+
+/** @file */
+
+
+
+//#define COMLIB_RECT_DEBUG
 //#define LOCAL_MULTI_OFF
 /********************************************************
         Section multicast strategy sgetRectGeometryuite. DirectMulticast and its
  *   If the root is inside the rectangle do this on the root
  *   else forward to (preferably a corner) something in the rectangle.
  *
- *   This latter case is the only use of a forwarding commlib
+ *   This latter case is the only use of a forwarding comlib
  *   object in this strategy.  Remote delivery is otherwise handled by
  *   the converse machine level and BG/L.  There is no other use of
- *   commlib forwarding schemes.
+ *   comlib forwarding schemes.
  *
  *   The all cases the rectangle sender will not receive a copy from the
  *   interface so it will need to do its own local multicast.
@@ -95,22 +104,18 @@ void *sourceOffRectstrategyHandler(void *msg) {
 
 void * rectRequest (int comm) {
   //  fprintf(stderr,"[%d] rectRequest for %d gives %p\n",CkMyPe(),comm,CkpvAccess(com_rect_ptr)->get(comm));
-#ifdef COMMLIB_RECT_DEBUG
+#ifdef COMLIB_RECT_DEBUG
   CkAssert(CkpvAccess(com_rect_ptr)->get(comm)!=NULL);
   isSane(CkpvAccess(com_rect_ptr)->get(comm),comm);
 #endif
   return CkpvAccess(com_rect_ptr)->get(comm);
 }
 
-RectMulticastStrategy::RectMulticastStrategy(CkArrayID aid, 
-                                                int isPersistent)
-    :  CharmStrategy() {
+RectMulticastStrategy::RectMulticastStrategy(CkArrayID aid)
+    : Strategy(), CharmStrategy() {
 
     ainfo.setDestinationArray(aid);
     setType(ARRAY_STRATEGY);
-
-    //    this->isPersistent = isPersistent;
-    this->isPersistent = 0;  //force off for now
 }
 
 //Destroy all old built routes
@@ -133,13 +138,15 @@ RectMulticastStrategy::~RectMulticastStrategy() {
 }
 
 void RectMulticastStrategy::insertMessage(CharmMessageHolder *cmsg){
-    
+  cmsg->checkme();
+
+  
   //    ComlibPrintf("[%d] Comlib Rect Section Multicast: insertMessage \n", 
 
 
     if(cmsg->dest_proc == IS_SECTION_MULTICAST && cmsg->sec_id != NULL) { 
         CkSectionID *sid = cmsg->sec_id;
-        int cur_sec_id = ComlibSectionInfo::getSectionID(*sid);
+        int cur_sec_id = sid->getSectionID();
        ComlibPrintf("[%d] Comlib Rect Section Multicast: insertMessage section id %d\n", CkMyPe(), cur_sec_id);           
         if(cur_sec_id > 0) {        
             sinfo.processOldSectionMessage(cmsg);            
@@ -301,14 +308,14 @@ RectMulticastStrategy::createObjectOnSrcPe(int nindices, CkArrayIndexMax *idxlis
            request=bgl_machine_RectBcastInit(comm, geometry);
            ComlibPrintf("[%d] csrc init comm %d section %d srcpe %d request %p\n",CkMyPe(), comm, thisSectionID, rootpe, request);
            CkpvAccess(com_rect_ptr)->put(comm)= request;
-#ifdef COMMLIB_RECT_DEBUG
+#ifdef COMLIB_RECT_DEBUG
            isSane(request,comm);
 #endif
          }
        else{
          ComlibPrintf("[%d] csrc already init comm %d section %d srcpe %d\n",CkMyPe(), comm, thisSectionID, rootpe);
        }
-#ifdef COMMLIB_RECT_DEBUG
+#ifdef COMLIB_RECT_DEBUG
        void *getrequest =     CkpvAccess(com_rect_ptr)->get(comm);
        CkAssert(*((char *) request)==*((char *)getrequest));
        isSane(getrequest,comm);
@@ -545,7 +552,7 @@ RectMulticastStrategy::createObjectOnIntermediatePe(int nindices,
     // we don't actually need the request on a typical intermediate
     // only the forwarding case cares.
     CkpvAccess(com_rect_ptr)->put(comm)= request;
-#ifdef COMMLIB_RECT_DEBUG
+#ifdef COMLIB_RECT_DEBUG
     void *getrequest =     CkpvAccess(com_rect_ptr)->get(comm);
     CkAssert(*((char *) request)==*((char *)getrequest));
     isSane(getrequest,comm);
@@ -567,11 +574,6 @@ void RectMulticastStrategy::localMulticast(envelope *env,
                                           ComlibRectSectionHashObject *obj) {
     int nIndices = obj->indices.size();
     
-    //If the library is set to persistent. 
-    //The message is stored in the library. The applications should 
-    //use the message as a readonly and it exists till the next one 
-    //comes along
-    
     if(obj->msg != NULL) {
         CmiFree(obj->msg);
        obj->msg = NULL;
@@ -583,12 +585,6 @@ void RectMulticastStrategy::localMulticast(envelope *env,
         
         msg1 = CkCopyMsg(&msg);
        
-       if(isPersistent) {
-         CkAbort("persistent not supported in Rectangle yet");
-           CmiReference(UsrToEnv(msg1));
-           obj->msg = (void *)UsrToEnv(msg1);
-       }
-       
         ComlibArrayInfo::localMulticast(&(obj->indices), UsrToEnv(msg1));
     }    
 }
@@ -630,7 +626,7 @@ void RectMulticastStrategy::remoteMulticast(envelope *env,
     // per multicast
     int comm=computeKey(sectionID, srcpe, destid);
     ComlibPrintf("[%d] rectbcast using comm %d section %d srcpe %d request %p\n",CkMyPe(), comm, sectionID, srcpe, CkpvAccess(com_rect_ptr)->get(comm));
-#ifdef COMMLIB_RECT_DEBUG
+#ifdef COMLIB_RECT_DEBUG
     isSane(CkpvAccess(com_rect_ptr)->get(comm),comm);
 #endif
     bgl_machine_RectBcast(comm  , (char*)env, env->getTotalsize());
@@ -672,7 +668,6 @@ void RectMulticastStrategy::forwardMulticast(envelope *env,
 void RectMulticastStrategy::pup(PUP::er &p){
 
     CharmStrategy::pup(p);
-    p | isPersistent; 
 }
 
 void RectMulticastStrategy::beginProcessing(int numElements){
@@ -819,3 +814,6 @@ void RectMulticastStrategy::handleNewMulticastMessage(envelope *env) {
     CmiFree(newenv);  //NEED this
 }
 #endif
+
+
+/*@}*/