X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/d4cffd7edd2269eb55baf61bee016bd7cb4a107d..1398fa7c21c0d81f808108e0803d875c6fce9b8e:/src/mc/LocationList.hpp diff --git a/src/mc/LocationList.hpp b/src/mc/LocationList.hpp index bfc53c5d42..1e1ed75c5f 100644 --- a/src/mc/LocationList.hpp +++ b/src/mc/LocationList.hpp @@ -7,7 +7,7 @@ #ifndef SIMGRID_MC_OBJECT_LOCATION_H #define SIMGRID_MC_OBJECT_LOCATION_H -#include +#include #include @@ -15,11 +15,12 @@ #include #include -#include -#include "mc_base.h" -#include "mc_forward.hpp" -#include "mc/AddressSpace.hpp" -#include "mc/DwarfExpression.hpp" +#include +#include + +#include "src/mc/mc_base.h" +#include "src/mc/mc_forward.hpp" +#include "src/mc/DwarfExpression.hpp" namespace simgrid { namespace dwarf { @@ -27,20 +28,30 @@ namespace dwarf { /** \brief A DWARF expression with optional validity contraints */ class LocationListEntry { public: - simgrid::dwarf::DwarfExpression expression; - void* lowpc, *highpc; - - LocationListEntry() : lowpc(nullptr), highpc(nullptr) {} - - bool always_valid() const + typedef simgrid::xbt::Range range_type; +private: + DwarfExpression expression_; + range_type range_ = {0, UINT64_MAX}; +public: + LocationListEntry() {} + LocationListEntry(DwarfExpression expression, range_type range) + : expression_(std::move(expression)), range_(range) + {} + LocationListEntry(DwarfExpression expression) + : expression_(std::move(expression)), range_({0, UINT64_MAX}) + {} + + DwarfExpression& expression() + { + return expression_; + } + DwarfExpression const& expression() const { - return this->lowpc == nullptr && this->highpc == nullptr; + return expression_; } bool valid_for_ip(unw_word_t ip) const { - return always_valid() || ( - ip >= (unw_word_t) this->lowpc && - ip < (unw_word_t) this->highpc); + return range_.contain(ip); } };