X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/cc96213b38543567f85c88be37be5c50c1f9e6e9..3f9b311ec56db95ec539001a860ae3c838c48312:/src/mc/transition/TransitionActor.cpp diff --git a/src/mc/transition/TransitionActor.cpp b/src/mc/transition/TransitionActor.cpp index 70608f14da..3e1027b576 100644 --- a/src/mc/transition/TransitionActor.cpp +++ b/src/mc/transition/TransitionActor.cpp @@ -47,7 +47,16 @@ bool ActorJoinTransition::depends(const Transition* other) const return false; } -ActorSleepTransition::ActorSleepTransition(aid_t issuer, int times_considered, std::stringstream& stream) +bool ActorJoinTransition::reversible_race(const Transition* other) const +{ + xbt_assert(type_ == Type::ACTOR_JOIN, "Unexpected transition type %s", to_c_str(type_)); + + // ActorJoin races with another event iff its target `T` is the same as the actor executing the other transition. + // Clearly, then, we could not join on that actor `T` and then run a transition by `T`, so no race is reversible + return false; +} + +ActorSleepTransition::ActorSleepTransition(aid_t issuer, int times_considered, std::stringstream&) : Transition(Type::ACTOR_SLEEP, issuer, times_considered) { XBT_DEBUG("ActorSleepTransition()"); @@ -66,4 +75,11 @@ bool ActorSleepTransition::depends(const Transition* other) const return false; } +bool ActorSleepTransition::reversible_race(const Transition* other) const +{ + xbt_assert(type_ == Type::ACTOR_SLEEP, "Unexpected transition type %s", to_c_str(type_)); + + return true; // Always enabled +} + } // namespace simgrid::mc