XBT_DEBUG("Found a matching communication synchro %p", comm);
if (remove_matching)
deque->erase(it);
- SIMIX_comm_ref(comm);
+ comm->ref();
#if SIMGRID_HAVE_MC
comm->mbox_cpy = comm->mbox;
#endif
//this mailbox is for small messages, which have to be sent right now
other_comm->state = SIMIX_READY;
other_comm->dst_proc=mbox->permanent_receiver.get();
- other_comm = static_cast<simgrid::kernel::activity::CommImpl*>(SIMIX_comm_ref(other_comm));
+ other_comm->ref();
mbox->done_comm_queue.push_back(other_comm);
XBT_DEBUG("pushing a message into the permanent receive list %p, comm %p", mbox, other_comm);
}
} else {
XBT_DEBUG("Receive already pushed");
- SIMIX_comm_unref(this_comm);
- SIMIX_comm_unref(this_comm);
+ this_comm->unref();
+ this_comm->unref();
other_comm->state = SIMIX_READY;
other_comm->type = SIMIX_COMM_READY;
-
}
src_proc->comms.push_back(other_comm);
//communication already done, get it inside the list of completed comms
if (mbox->permanent_receiver != nullptr && not mbox->done_comm_queue.empty()) {
- SIMIX_comm_unref(this_synchro);
+ this_synchro->unref();
XBT_DEBUG("We have a comm that has probably already been received, trying to match it, to skip the communication");
//find a match in the list of already received comms
other_comm = _find_matching_comm(&mbox->done_comm_queue, SIMIX_COMM_SEND, match_fun, data, this_synchro,
other_comm->state = SIMIX_DONE;
other_comm->type = SIMIX_COMM_DONE;
other_comm->mbox = nullptr;
- SIMIX_comm_unref(other_comm);
+ other_comm->unref();
}
- SIMIX_comm_unref(other_comm);
- SIMIX_comm_unref(this_synchro);
+ other_comm->unref();
+ this_synchro->unref();
}
} else {
/* Prepare a comm describing us, so that it gets passed to the user-provided filter of other side */
other_comm->state = SIMIX_READY;
other_comm->type = SIMIX_COMM_READY;
- SIMIX_comm_unref(this_synchro);
- SIMIX_comm_unref(this_synchro);
+ this_synchro->unref();
+ this_synchro->unref();
}
dst_proc->comms.push_back(other_comm);
}
}
if(other_synchro)
- SIMIX_comm_unref(other_synchro);
+ other_synchro->unref();
- SIMIX_comm_unref(this_comm);
+ this_comm->unref();
return other_synchro;
}
/* (this function might be called from both communication ends) */
comm->copied = 1;
}
-
-/** Increase the refcount for this comm */
-smx_activity_t SIMIX_comm_ref(smx_activity_t comm)
-{
- if (comm != nullptr)
- intrusive_ptr_add_ref(comm);
- return comm;
-}
-
-/** Decrease the refcount for this comm */
-void SIMIX_comm_unref(smx_activity_t comm)
-{
- if (comm != nullptr)
- intrusive_ptr_release(comm);
-}