X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/8f29d9411160cd90ee8d2541c741daafb3f396c6..371d168e21b83e2364c2ac2dbff3847588769c2b:/src/smpi/mpi/smpi_f2c.cpp diff --git a/src/smpi/mpi/smpi_f2c.cpp b/src/smpi/mpi/smpi_f2c.cpp index ff101983d0..a1e6be788b 100644 --- a/src/smpi/mpi/smpi_f2c.cpp +++ b/src/smpi/mpi/smpi_f2c.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2007-2021. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2007-2023. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -6,28 +6,28 @@ #include "smpi_f2c.hpp" #include "private.hpp" #include "src/smpi/include/smpi_actor.hpp" +#include "src/instr/instr_smpi.hpp" -int mpi_in_place_; -int mpi_bottom_; -int mpi_status_ignore_; -int mpi_statuses_ignore_; +const int mpi_in_place_ = -222; +const int mpi_bottom_ = -111; +const int mpi_status_ignore_ = 0; +const int mpi_statuses_ignore_ = 0; -namespace simgrid{ -namespace smpi{ +namespace simgrid::smpi { -std::unordered_map* F2C::f2c_lookup_ = nullptr; +std::unique_ptr F2C::f2c_lookup_ = nullptr; int F2C::f2c_id_ = 0; -std::unordered_map::size_type F2C::num_default_handles_ = 0; +F2C::f2c_lookup_type::size_type F2C::num_default_handles_ = 0; // Keep it non trivially-constructible, or it will break MC+smpi on FreeBSD with Clang (don't ask why) F2C::F2C() = default; int F2C::add_f() { - if (f2c_lookup_ == nullptr) - f2c_lookup_ = new std::unordered_map(); - - my_f2c_id_ = f2c_id(); + allocate_lookup(); + if (auto const* loc = smpi_process()->call_location(); loc && loc->linenumber != 0) + call_location_= std::string (loc->filename + ":" + std::to_string(loc->linenumber)); + my_f2c_id_ = global_f2c_id(); (*f2c_lookup_)[my_f2c_id_] = this; f2c_id_increment(); return my_f2c_id_; @@ -35,9 +35,7 @@ int F2C::add_f() int F2C::c2f() { - if (f2c_lookup_ == nullptr) { - f2c_lookup_ = new std::unordered_map(); - } + allocate_lookup(); if(my_f2c_id_==-1) /* this function wasn't found, add it */ @@ -48,8 +46,7 @@ int F2C::c2f() F2C* F2C::f2c(int id) { - if (f2c_lookup_ == nullptr) - f2c_lookup_ = new std::unordered_map(); + allocate_lookup(); if(id >= 0){ auto comm = f2c_lookup_->find(id); @@ -58,5 +55,4 @@ F2C* F2C::f2c(int id) return nullptr; } -} -} +} // namespace simgrid::smpi