From: Frederic Suter Date: Thu, 3 Aug 2017 08:36:18 +0000 (+0200) Subject: dict -- X-Git-Tag: v3_17~279 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/9451efc97c14403a6f030ce37a2269b2b9491b7e?hp=ef69c519d691f79b5bcaa2db924781d4d0f15297 dict -- --- diff --git a/src/smpi/internals/smpi_shared.cpp b/src/smpi/internals/smpi_shared.cpp index a213733c8f..c2a55cd2f4 100644 --- a/src/smpi/internals/smpi_shared.cpp +++ b/src/smpi/internals/smpi_shared.cpp @@ -7,7 +7,7 @@ * Associated data and metadata are used as follows: * * mmap #1 - * `allocs' dict ---- -. + * `allocs' map ---- -. * ---------- shared_data_t shared_metadata_t / | | | * .->| | ---> -------------------- <--. ----------------- | | | | * | ---------- | fd of | | | size of mmap | --| | | | @@ -15,7 +15,7 @@ * `----------------- | | | ----------------- ---- | * -------------------- | ^ | * | | | - * | | `allocs_metadata' dict | + * | | `allocs_metadata' map | * | | ---------------------- | * | `-- | |<-' * | .-- | |<-. @@ -122,7 +122,8 @@ typedef struct { } shared_metadata_t; std::map allocs_metadata; -xbt_dict_t calls = nullptr; /* Allocated on first use */ +std::map calls; + #ifndef WIN32 static int smpi_shared_malloc_bogusfile = -1; static int smpi_shared_malloc_bogusfile_huge_page = -1; @@ -135,7 +136,7 @@ void smpi_shared_destroy() { allocs.clear(); allocs_metadata.clear(); - xbt_dict_free(&calls); + calls.clear(); } static size_t shm_size(int fd) { @@ -487,46 +488,18 @@ void smpi_shared_free(void *ptr) int smpi_shared_known_call(const char* func, const char* input) { - char* loc = bprintf("%s:%s", func, input); - int known = 0; - - if (calls==nullptr) { - calls = xbt_dict_new_homogeneous(nullptr); - } - try { - xbt_dict_get(calls, loc); /* Succeed or throw */ - known = 1; - xbt_free(loc); - } - catch (xbt_ex& ex) { - xbt_free(loc); - if (ex.category != not_found_error) - throw; - } - catch(...) { - xbt_free(loc); - throw; - } - return known; + std::string loc = std::string(func) + ":" + input; + return calls.find(loc) != calls.end(); } void* smpi_shared_get_call(const char* func, const char* input) { - char* loc = bprintf("%s:%s", func, input); + std::string loc = std::string(func) + ":" + input; - if (calls == nullptr) - calls = xbt_dict_new_homogeneous(nullptr); - void* data = xbt_dict_get(calls, loc); - xbt_free(loc); - return data; + return calls.at(loc); } void* smpi_shared_set_call(const char* func, const char* input, void* data) { - char* loc = bprintf("%s:%s", func, input); - - if (calls == nullptr) - calls = xbt_dict_new_homogeneous(nullptr); - xbt_dict_set(calls, loc, data, nullptr); - xbt_free(loc); + std::string loc = std::string(func) + ":" + input; + calls[loc] = data; return data; } -