}
bool ObjectAccessTransition::depends(const Transition* o) const
{
+ if (o->type_ < type_)
+ return o->depends(this);
+
+ // Actions executed by the same actor are always dependent
+ if (o->aid_ == aid_)
+ return true;
+
if (const auto* other = dynamic_cast<const ObjectAccessTransition*>(o))
return objaddr_ == other->objaddr_; // dependent only if it's an access to the same object
return false;
}
+bool ObjectAccessTransition::reversible_race(const Transition* other) const
+{
+ xbt_assert(type_ == Type::OBJECT_ACCESS, "Unexpected transition type %s", to_c_str(type_));
+
+ return true; // Object access is always enabled
+}
+
} // namespace simgrid::mc