Merge branch 'charm' into development
[charm.git] / src / ck-core / init.C
index 695e3410d11ab777e47b317604b9b33932c66c52..e587c1d2400e0c3b35e2cd6ee7b2e65cbe7a5e3f 100644 (file)
@@ -650,10 +650,15 @@ static void _roRestartHandler(void *msg)
  * together with all the other regular messages by _bufferHandler (and will be flushed
  * after all the initialization messages have been processed).
  */
-static void _initHandler(void *msg)
+static void _initHandler(void *msg, CkCoreState *ck)
 {
   CkAssert(CkMyPe()!=0);
   register envelope *env = (envelope *) msg;
+  
+  if (ck->watcher!=NULL) {
+    if (!ck->watcher->processMessage(env,ck)) return;
+  }
+  
   switch (env->getMsgtype()) {
     case BocInitMsg:
       if (env->getGroupEpoch()==0) {
@@ -916,9 +921,11 @@ void _initCharm(int unused_argc, char **argv)
 
        _charmHandlerIdx = CkRegisterHandler((CmiHandler)_bufferHandler);
        _initHandlerIdx = CkRegisterHandler((CmiHandler)_initHandler);
+       CkNumberHandlerEx(_initHandlerIdx, (CmiHandlerEx)_initHandler, CkpvAccess(_coreState));
        _roRestartHandlerIdx = CkRegisterHandler((CmiHandler)_roRestartHandler);
        _exitHandlerIdx = CkRegisterHandler((CmiHandler)_exitHandler);
        _bocHandlerIdx = CkRegisterHandler((CmiHandler)_initHandler);
+       CkNumberHandlerEx(_bocHandlerIdx, (CmiHandlerEx)_initHandler, CkpvAccess(_coreState));
        _infoIdx = CldRegisterInfoFn((CldInfoFn)_infoFn);
        _triggerHandlerIdx = CkRegisterHandler((CmiHandler)_triggerHandler);
        _ckModuleInit();
@@ -1089,7 +1096,7 @@ void _initCharm(int unused_argc, char **argv)
                }*/
        }       
        
-        if (faultFunc == NULL) {         // this is not restart
+        if (faultFunc == NULL && !replaySystem) {         // this is not restart
             // these two are blocking calls for non-bigsim
 #if ! CMK_BLUEGENE_CHARM
           CmiInitCPUAffinity(argv);