- simix_global->process_list.erase(process->pid);
- if (process->host)
- xbt_swag_remove(process, process->host->extension<simgrid::simix::Host>()->process_list);
- xbt_swag_insert(process, simix_global->process_to_destroy);
- process->context->iwannadie = 0;
+ simix_global->process_list.erase(process->pid_);
+ if (process->host_ && process->host_process_list_hook.is_linked())
+ simgrid::xbt::intrusive_erase(process->host_->pimpl_->process_list_, *process);
+ if (not process->smx_destroy_list_hook.is_linked()) {
+#if SIMGRID_HAVE_MC
+ xbt_dynar_push_as(simix_global->dead_actors_vector, smx_actor_t, process);
+#endif
+ simix_global->process_to_destroy.push_back(*process);
+ }
+ process->context_->iwannadie = false;