X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/3f5a22ee597719eb48bef0979b0628f7b76bfbe9..773cbe7c3a92faef15e6533eed36910a32dd1df1:/src/mc/mc_object_info.h diff --git a/src/mc/mc_object_info.h b/src/mc/mc_object_info.h index b195d47750..5e431eca31 100644 --- a/src/mc/mc_object_info.h +++ b/src/mc/mc_object_info.h @@ -113,7 +113,6 @@ public: size_t start_scope; mc_object_info_t object_info; - }; class Frame { @@ -132,10 +131,18 @@ public: mc_object_info_t object_info; }; +/** An entry in the functions index + * + * See the code of ObjectInformation::find_function. + */ +struct FunctionIndexEntry { + void* low_pc; + mc_frame_t function; +}; + class ObjectInformation { public: ObjectInformation(); - ~ObjectInformation(); ObjectInformation(ObjectInformation const&) = delete; ObjectInformation& operator=(ObjectInformation const&) = delete; @@ -155,10 +162,12 @@ public: std::unordered_map types; std::unordered_map full_types_by_name; - // Here we sort the minimal information for an efficient (and cache-efficient) - // lookup of a function given an instruction pointer. - // The entries are sorted by low_pc and a binary search can be used to look them up. - xbt_dynar_t functions_index; + /** Index of functions by IP + * + * The entries are sorted by low_pc and a binary search can be used to look + * them up. Should we used a binary tree instead? + */ + std::vector functions_index; bool executable() const { @@ -195,10 +204,4 @@ XBT_INTERNAL void* mc_member_resolve( const void* base, mc_type_t type, mc_type_t member, mc_address_space_t snapshot, int process_index); - -struct s_mc_function_index_item { - void* low_pc, *high_pc; - mc_frame_t function; -}; - #endif