public ExecutionState(StateImpl s, TraversalInfo predecessor, Via bt)
: base(s, StateType.ExecutionState, predecessor, bt)
{
Debug.Assert(ProcessInfo != null &&
ProcessInfo.Length == NumProcesses);
hasMultipleSuccessors = NumSuccessors() > 1;
stateImpl = s;
currProcess = 0;
receipt = s.CheckIn();
#if true
//dont fingerprint during random sampling
if (!ZingerConfiguration.DoRandomSampling)
{
if (ZingerConfiguration.FingerprintSingleTransitionStates)
{
if (this.NumProcesses > 1)
{
this.fingerprint = s.Fingerprint;
this.IsFingerPrinted = true;
}
else
{
// Fingerprint with probability p
if (ZingerUtilities.rand.NextDouble() <= ZingerConfiguration.NonChooseProbability)
{
this.fingerprint = s.Fingerprint;
this.IsFingerPrinted = true;
}
else
{
this.fingerprint = null;
this.IsFingerPrinted = false;
}
}
}
else
{
this.fingerprint = s.Fingerprint;
this.IsFingerPrinted = true;
}
}
#endif
}