Example #1
0
        public void ReceiveExecutor(Executor executor)
        {
            this.Executor = executor;
            // Guard just in case the Executor calls us again. This can
            // happen if there are multiple entry points.
            if (this.ProgramLoopInfo == null)
            {
                this.ProgramLoopInfo = new ProgramLoopInfo(executor.TheProgram);

                // Register the callbacks we need
                executor.BasicBlockChanged     += Executor_BasicBlockChanged;
                executor.ForkOccurred          += Executor_ForkOccurred;
                executor.ImplementationEntered += Executor_ImplementationEntered;
            }

            // Give the underlying executor access to the scheduler
            UnderlyingScheduler.ReceiveExecutor(executor);
        }
Example #2
0
 public void ReceiveExecutor(Executor executor)
 {
     this.TheExecutor = executor;
     Debug.Assert(TheExecutor != null, "TheExecutor cannot be null");
     UnderlyingStateScheduler.ReceiveExecutor(executor);
 }