- req->print_request("Finishing");
- MPI_Datatype datatype = req->old_type_;
-
-// FIXME Handle the case of a partial shared malloc.
- if (((req->flags_ & MPI_REQ_ACCUMULATE) != 0) ||
- (datatype->flags() & DT_FLAG_DERIVED)) { // && (not smpi_is_shared(req->old_buf_))){
-
- if (not smpi_process()->replaying() && smpi_privatize_global_variables != SmpiPrivStrategies::NONE &&
- static_cast<char*>(req->old_buf_) >= smpi_data_exe_start &&
- static_cast<char*>(req->old_buf_) < smpi_data_exe_start + smpi_data_exe_size) {
- XBT_VERB("Privatization : We are unserializing to a zone in global memory Switch data segment ");
- smpi_switch_data_segment(simgrid::s4u::Actor::self());
- }
-
- if(datatype->flags() & DT_FLAG_DERIVED){
- // This part handles the problem of non-contignous memory the unserialization at the reception
- if ((req->flags_ & MPI_REQ_RECV) && datatype->size() != 0)
- datatype->unserialize(req->buf_, req->old_buf_, req->real_size_/datatype->size() , req->op_);
- xbt_free(req->buf_);
- } else if (req->flags_ & MPI_REQ_RECV) { // apply op on contiguous buffer for accumulate
- if (datatype->size() != 0) {
- int n = req->real_size_ / datatype->size();
- req->op_->apply(req->buf_, req->old_buf_, &n, datatype);
+ if(datatype->flags() & DT_FLAG_DERIVED){
+ // This part handles the problem of non-contignous memory the unserialization at the reception
+ if ((req->flags_ & MPI_REQ_RECV) && datatype->size() != 0)
+ datatype->unserialize(req->buf_, req->old_buf_, req->real_size_/datatype->size() , req->op_);
+ xbt_free(req->buf_);
+ } else if (req->flags_ & MPI_REQ_RECV) { // apply op on contiguous buffer for accumulate
+ if (datatype->size() != 0) {
+ int n = req->real_size_ / datatype->size();
+ req->op_->apply(req->buf_, req->old_buf_, &n, datatype);
+ }
+ xbt_free(req->buf_);