Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Kill the now useless type xbt::string
[simgrid.git] / src / kernel / actor / ActorImpl.cpp
index 8f3b373..c863647 100644 (file)
@@ -3,6 +3,7 @@
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
+#include "src/mc/mc_replay.hpp"
 #include <simgrid/Exception.hpp>
 #include <simgrid/s4u/Actor.hpp>
 #include <simgrid/s4u/Host.hpp>
@@ -33,7 +34,7 @@ ActorImpl* ActorImpl::self()
   return (self_context != nullptr) ? self_context->get_actor() : nullptr;
 }
 
-ActorImpl::ActorImpl(xbt::string name, s4u::Host* host, aid_t ppid)
+ActorImpl::ActorImpl(std::string name, s4u::Host* host, aid_t ppid)
     : ActorIDTrait(std::move(name), ppid), host_(host), piface_(this)
 {
   simcall_.issuer_ = this;
@@ -65,7 +66,7 @@ ActorImplPtr ActorImpl::attach(const std::string& name, void* data, s4u::Host* h
     throw HostFailureException(XBT_THROW_POINT, "Cannot attach actor on failed host.");
   }
 
-  auto* actor = new ActorImpl(xbt::string(name), host, /*ppid*/ -1);
+  auto* actor = new ActorImpl(std::string(name), host, /*ppid*/ -1);
   /* Actor data */
   actor->piface_.set_data(data);
   actor->code_ = nullptr;
@@ -279,6 +280,8 @@ void ActorImpl::yield()
   if (not wannadie())
     smpi_switch_data_segment(get_iface());
 #endif
+  if (simgrid_mc_replay_show_backtraces)
+    xbt_backtrace_display_current();
 }
 
 /** This actor will be terminated automatically when the last non-daemon actor finishes */
@@ -415,7 +418,7 @@ void ActorImpl::set_host(s4u::Host* dest)
 
 ActorImplPtr ActorImpl::init(const std::string& name, s4u::Host* host) const
 {
-  auto* actor = new ActorImpl(xbt::string(name), host, get_pid());
+  auto* actor = new ActorImpl(name, host, get_pid());
 
   intrusive_ptr_add_ref(actor);
   /* The on_creation() signal must be delayed until there, where the pid and everything is set */
@@ -458,9 +461,9 @@ ActorImplPtr ActorImpl::create(const std::string& name, const ActorCode& code, v
 
   ActorImplPtr actor;
   if (parent_actor != nullptr)
-    actor = parent_actor->init(xbt::string(name), host);
+    actor = parent_actor->init(name, host);
   else
-    actor = self()->init(xbt::string(name), host);
+    actor = self()->init(name, host);
 
   actor->piface_.set_data(data); /* actor data */
 
@@ -493,7 +496,7 @@ void create_maestro(const std::function<void()>& code)
 {
   auto* engine = EngineImpl::get_instance();
   /* Create maestro actor and initialize it */
-  auto* maestro = new ActorImpl(xbt::string(""), /*host*/ nullptr, /*ppid*/ -1);
+  auto* maestro = new ActorImpl(/*name*/ "", /*host*/ nullptr, /*ppid*/ -1);
 
   if (not code) {
     maestro->context_.reset(engine->get_context_factory()->create_context(ActorCode(), maestro));