Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
simplify writing in model setup + may fix issue with unit-tests
[simgrid.git] / src / kernel / actor / ActorImpl.cpp
index d3b4ebf..93549a5 100644 (file)
@@ -73,7 +73,7 @@ ActorImpl::ActorImpl(xbt::string name, s4u::Host* host) : host_(host), name_(std
 
 ActorImpl::~ActorImpl()
 {
-  if (not EngineImpl::get_instance()->is_maestro(this))
+  if (EngineImpl::has_instance() && not EngineImpl::get_instance()->is_maestro(this))
     s4u::Actor::on_destruction(*get_ciface());
 }
 
@@ -234,7 +234,8 @@ void ActorImpl::exit()
 
 void ActorImpl::kill(ActorImpl* actor) const
 {
-  xbt_assert(not EngineImpl::get_instance()->is_maestro(actor), "Killing maestro is a rather bad idea");
+  auto* engine = EngineImpl::get_instance();
+  xbt_assert(not engine->is_maestro(actor), "Killing maestro is a rather bad idea");
   if (actor->finished_) {
     XBT_DEBUG("Ignoring request to kill actor %s@%s that is already dead", actor->get_cname(),
               actor->host_->get_cname());
@@ -249,7 +250,7 @@ void ActorImpl::kill(ActorImpl* actor) const
   if (actor == this) {
     XBT_DEBUG("Go on, this is a suicide,");
   } else
-    EngineImpl::get_instance()->add_actor_to_run_list(actor);
+    engine->add_actor_to_run_list(actor);
 }
 
 void ActorImpl::kill_all() const
@@ -518,7 +519,7 @@ void create_maestro(const std::function<void()>& code)
   }
 
   maestro->simcall_.issuer_ = maestro;
-  EngineImpl::get_instance()->set_maestro(maestro);
+  engine->set_maestro(maestro);
 }
 
 } // namespace actor