Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Remove superfluous refcounting.
authorArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Tue, 19 Feb 2019 14:19:18 +0000 (15:19 +0100)
committerArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Wed, 20 Feb 2019 08:33:33 +0000 (09:33 +0100)
src/msg/msg_gos.cpp
src/s4u/s4u_Comm.cpp
src/smpi/mpi/smpi_request.cpp

index 770bf52..c394c44 100644 (file)
@@ -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());
   }
 
index 3f59ca2..b39648d 100644 (file)
@@ -32,15 +32,12 @@ Comm::~Comm()
 int Comm::wait_any_for(std::vector<CommPtr>* comms_in, double timeout)
 {
   // Map to dynar<Synchro*>:
-  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:
index f93d5f1..dd82ce6 100644 (file)
@@ -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++;