Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
no more need to pass issuer to suspend
[simgrid.git] / src / kernel / actor / ActorImpl.cpp
index 8cd4120470be01f6c671090aa274d1f377aea75f..4c8322878498923e6b1dd09164147347ef2c8b93 100644 (file)
@@ -19,6 +19,7 @@
 #include "src/surf/cpu_interface.hpp"
 
 #include <boost/range/algorithm.hpp>
+#include <utility>
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(simix_process, simix, "Logging specific to SIMIX (process)");
 
@@ -57,10 +58,10 @@ int get_maxpid()
   return maxpid;
 }
 
-ActorImpl::ActorImpl(const simgrid::xbt::string& name, s4u::Host* host) : host_(host), name_(name), piface_(this)
+ActorImpl::ActorImpl(simgrid::xbt::string name, s4u::Host* host) : host_(host), name_(std::move(name)), piface_(this)
 {
   pid_           = maxpid++;
-  simcall.issuer = this;
+  simcall.issuer_ = this;
 }
 
 ActorImpl::~ActorImpl()
@@ -296,7 +297,7 @@ void ActorImpl::yield()
 
     xbt_assert(exception_ == nullptr, "Gasp! This exception may be lost by subsequent calls.");
     suspended_ = false;
-    suspend(this);
+    suspend();
   }
 
   if (exception_ != nullptr) {
@@ -356,7 +357,7 @@ s4u::Actor* ActorImpl::restart()
   return actor->ciface();
 }
 
-void ActorImpl::suspend(ActorImpl* issuer)
+void ActorImpl::suspend()
 {
   if (suspended_) {
     XBT_DEBUG("Actor '%s' is already suspended", get_cname());
@@ -367,7 +368,7 @@ void ActorImpl::suspend(ActorImpl* issuer)
 
   /* If the suspended actor is waiting on a sync, suspend its synchronization. */
   if (waiting_synchro == nullptr) {
-    activity::ExecImpl* exec = new activity::ExecImpl();
+    auto exec = new activity::ExecImpl();
     exec->set_name("suspend").set_host(host_).set_flops_amount(0.0).start();
     waiting_synchro = activity::ExecImplPtr(exec);
 
@@ -412,8 +413,8 @@ activity::ActivityImplPtr ActorImpl::sleep(double duration)
     throw_exception(std::make_exception_ptr(simgrid::HostFailureException(
         XBT_THROW_POINT, std::string("Host ") + host_->get_cname() + " failed, you cannot sleep there.")));
 
-  activity::SleepImpl* sleep = new activity::SleepImpl();
-  (*sleep).set_name("sleep").set_host(host_).set_duration(duration).start();
+  auto sleep = new activity::SleepImpl();
+  sleep->set_name("sleep").set_host(host_).set_duration(duration).start();
   return activity::SleepImplPtr(sleep);
 }
 
@@ -440,9 +441,9 @@ void ActorImpl::throw_exception(std::exception_ptr e)
 void ActorImpl::simcall_answer()
 {
   if (this != simix_global->maestro_process){
-    XBT_DEBUG("Answer simcall %s (%d) issued by %s (%p)", SIMIX_simcall_name(simcall.call), (int)simcall.call,
+    XBT_DEBUG("Answer simcall %s (%d) issued by %s (%p)", SIMIX_simcall_name(simcall.call_), (int)simcall.call_,
               get_cname(), this);
-    simcall.call = SIMCALL_NONE;
+    simcall.call_ = SIMCALL_NONE;
     xbt_assert(not XBT_LOG_ISENABLED(simix_process, xbt_log_priority_debug) ||
                    std::find(begin(simix_global->actors_to_run), end(simix_global->actors_to_run), this) ==
                        end(simix_global->actors_to_run),
@@ -531,7 +532,7 @@ void create_maestro(const std::function<void()>& code)
     maestro->context_.reset(simix_global->context_factory->create_maestro(simix::ActorCode(code), maestro));
   }
 
-  maestro->simcall.issuer       = maestro;
+  maestro->simcall.issuer_      = maestro;
   simix_global->maestro_process = maestro;
 }