From: Arnaud Giersch Date: Tue, 19 Feb 2019 14:19:18 +0000 (+0100) Subject: Remove superfluous refcounting. X-Git-Tag: v3_22~297 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/c217e2c9296581e5d2ab70fee58236fc66f90681 Remove superfluous refcounting. --- diff --git a/src/msg/msg_gos.cpp b/src/msg/msg_gos.cpp index 770bf52a84..c394c44774 100644 --- a/src/msg/msg_gos.cpp +++ b/src/msg/msg_gos.cpp @@ -576,13 +576,10 @@ int MSG_comm_waitany(xbt_dynar_t comms) int finished_index = -1; /* create the equivalent dynar with SIMIX objects */ - xbt_dynar_t s_comms = xbt_dynar_new(sizeof(smx_activity_t), [](void*ptr){ - intrusive_ptr_release(*(simgrid::kernel::activity::ActivityImpl**)ptr); - }); + xbt_dynar_t s_comms = xbt_dynar_new(sizeof(simgrid::kernel::activity::ActivityImpl*), nullptr); msg_comm_t comm; unsigned int cursor; xbt_dynar_foreach(comms, cursor, comm) { - intrusive_ptr_add_ref(comm->s_comm.get()); xbt_dynar_push_as(s_comms, simgrid::kernel::activity::ActivityImpl*, comm->s_comm.get()); } diff --git a/src/s4u/s4u_Comm.cpp b/src/s4u/s4u_Comm.cpp index 3f59ca2e34..b39648d097 100644 --- a/src/s4u/s4u_Comm.cpp +++ b/src/s4u/s4u_Comm.cpp @@ -32,15 +32,12 @@ Comm::~Comm() int Comm::wait_any_for(std::vector* comms_in, double timeout) { // Map to dynar: - xbt_dynar_t comms = xbt_dynar_new(sizeof(simgrid::kernel::activity::ActivityImpl*), [](void* ptr) { - intrusive_ptr_release(*(simgrid::kernel::activity::ActivityImpl**)ptr); - }); + xbt_dynar_t comms = xbt_dynar_new(sizeof(simgrid::kernel::activity::ActivityImpl*), nullptr); for (auto const& comm : *comms_in) { if (comm->state_ == Activity::State::INITED) comm->start(); xbt_assert(comm->state_ == Activity::State::STARTED); simgrid::kernel::activity::ActivityImpl* ptr = comm->pimpl_.get(); - intrusive_ptr_add_ref(ptr); xbt_dynar_push_as(comms, simgrid::kernel::activity::ActivityImpl*, ptr); } // Call the underlying simcall: diff --git a/src/smpi/mpi/smpi_request.cpp b/src/smpi/mpi/smpi_request.cpp index f93d5f1d2c..dd82ce6929 100644 --- a/src/smpi/mpi/smpi_request.cpp +++ b/src/smpi/mpi/smpi_request.cpp @@ -848,9 +848,7 @@ int Request::waitany(int count, MPI_Request requests[], MPI_Status * status) if(count > 0) { int size = 0; // Wait for a request to complete - xbt_dynar_init(&comms, sizeof(smx_activity_t), [](void*ptr){ - intrusive_ptr_release(*(simgrid::kernel::activity::ActivityImpl**)ptr); - }); + xbt_dynar_init(&comms, sizeof(simgrid::kernel::activity::ActivityImpl*), nullptr); int *map = xbt_new(int, count); XBT_DEBUG("Wait for one of %d", count); for(int i = 0; i < count; i++) { @@ -858,7 +856,6 @@ int Request::waitany(int count, MPI_Request requests[], MPI_Status * status) not(requests[i]->flags_ & MPI_REQ_FINISHED)) { if (requests[i]->action_ != nullptr) { XBT_DEBUG("Waiting any %p ", requests[i]); - intrusive_ptr_add_ref(requests[i]->action_.get()); xbt_dynar_push_as(&comms, simgrid::kernel::activity::ActivityImpl*, requests[i]->action_.get()); map[size] = i; size++;