Making msgpacker faster by reducing short envelope size and making fewer calls to...
[charm.git] / src / ck-com / MsgPacker.C
index 0bf75196b868b5074f324a74362101aea11df7bc..8f326e515ae314385ce8f24e6476a265859b22c9 100644 (file)
@@ -1,35 +1,7 @@
-#include "ComlibManager.h"
 #include "MsgPacker.h"
-#include "register.h"
-#include "pup_cmialloc.h"
 
 CkpvExtern(int, RecvCombinedShortMsgHdlrIdx);
 
-void short_envelope::pup(PUP::er &p){
-    p | idx;
-    p | epIdx;
-    p | size;
-    
-    //if(p.isUnpacking()) 
-    //  data = new char[size];
-
-    p.pupCmiAllocBuf((void **)&data, size);
-}
-
-short_envelope::short_envelope(){
-    epIdx = 0;
-    data = NULL;
-}
-
-short_envelope::~short_envelope(){
-    /*
-      if(data) 
-      CmiFree(data);        
-      data = NULL;
-    */
-}
-
-
 MsgPacker::MsgPacker(){
     nShortMsgs = 0;
     msgList = 0;    
@@ -101,78 +73,3 @@ void MsgPacker::getMessage(CombinedMessage *&cmb_msg, int &total_size){
 
     CmiSetHandler(cmb_msg, CkpvAccess(RecvCombinedShortMsgHdlrIdx));
 }
-
-
-void MsgPacker::deliver(CombinedMessage *cmb_msg){
-
-    CombinedMessage cmb_hdr;
-
-    PUP_fromCmiAllocMem fp(cmb_msg);
-    fp | cmb_hdr;
-
-    int nmsgs = cmb_hdr.nmsgs;
-
-    ComlibPrintf("In MsgPacker::deliver\n");
-    CkArrayID aid = cmb_hdr.aid;
-    int src_pe = cmb_hdr.srcPE;
-
-    for(int count = 0; count < nmsgs; count ++){
-        short_envelope senv;
-        fp | senv;
-        
-        int ep = senv.epIdx;
-        CkArrayIndexMax idx = senv.idx;
-        int size = senv.size;
-
-        CProxyElement_ArrayBase ap(aid, idx);
-        ArrayElement *a_elem = ap.ckLocal();
-        CkArray *a=(CkArray *)_localBranch(aid);
-
-        int msgIdx = _entryTable[ep]->msgIdx;
-        if(_entryTable[ep]->noKeep && a_elem != NULL) {
-            //Unpack the message
-            senv.data = (char *)_msgTable[msgIdx]->unpack(senv.data); 
-            CkDeliverMessageReadonly(ep, senv.data, a_elem);            
-            CmiFree(senv.data);
-        }
-        else {
-            //envelope *env = (envelope *)CmiAlloc(sizeof(envelope) + size);
-            envelope *env = _allocEnv(ForArrayEltMsg, 
-                                      sizeof(envelope) + size);
-
-            void *data = EnvToUsr(env);
-            memcpy(data, senv.data, size);
-            
-            //Unpack the message
-            data = (char *)_msgTable[msgIdx]->unpack(data); 
-            
-            env->getsetArrayMgr() = aid;
-            env->getsetArrayIndex() = idx;
-            env->getsetArrayEp() = ep;
-            env->setPacked(0); 
-            env->getsetArraySrcPe()=src_pe;  
-            env->getsetArrayHops()=1;  
-            env->setQueueing(CK_QUEUEING_FIFO);            
-            env->setUsed(0);
-            env->setMsgIdx(msgIdx);
-
-            env->setTotalsize(sizeof(envelope) + size);
-
-            //if(a_elem)
-            //  CkDeliverMessageFree(ep, data, a_elem);                     
-            //else
-            //ap.ckSend((CkArrayMessage *)data, ep);
-            
-            a->deliver((CkArrayMessage *)data, CkDeliver_queue);
-
-            CmiFree(senv.data);
-        }        
-    }      
-        
-    CmiFree(cmb_msg);
-}
-
-
-
-
-