X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/351f33cd435ca4f01717f0b8a4fe7a77ba16edbf..1ffd336de7f3917df1d0cbbacc0e077b4b5c1363:/src/mc/sosp/RegionSnapshot.hpp diff --git a/src/mc/sosp/RegionSnapshot.hpp b/src/mc/sosp/RegionSnapshot.hpp index 5f425d5b55..2284ffa420 100644 --- a/src/mc/sosp/RegionSnapshot.hpp +++ b/src/mc/sosp/RegionSnapshot.hpp @@ -97,16 +97,16 @@ public: static const RegionType HeapRegion = RegionType::Heap; static const RegionType DataRegion = RegionType::Data; -private: - RegionType region_type_; - StorageType storage_type_; - simgrid::mc::ObjectInformation* object_info_; +protected: + RegionType region_type_ = UnknownRegion; + StorageType storage_type_ = StorageType::NoData; + simgrid::mc::ObjectInformation* object_info_ = nullptr; /** @brief Virtual address of the region in the simulated process */ - void* start_addr_; + void* start_addr_ = nullptr; /** @brief Size of the data region in bytes */ - std::size_t size_; + std::size_t size_ = 0; /** @brief Permanent virtual address of the region * @@ -117,26 +117,16 @@ private: * on the region of the global variables. * * */ - void* permanent_addr_; + void* permanent_addr_ = nullptr; Buffer flat_data_; ChunkedData page_numbers_; - std::vector privatized_regions_; + std::vector> privatized_regions_; public: - RegionSnapshot() - : region_type_(UnknownRegion) - , storage_type_(StorageType::NoData) - , object_info_(nullptr) - , start_addr_(nullptr) - , size_(0) - , permanent_addr_(nullptr) - { - } + RegionSnapshot() {} RegionSnapshot(RegionType type, void* start_addr, void* permanent_addr, size_t size) : region_type_(type) - , storage_type_(StorageType::NoData) - , object_info_(nullptr) , start_addr_(start_addr) , size_(size) , permanent_addr_(permanent_addr) @@ -196,34 +186,13 @@ public: privatized_regions_.clear(); } - void flat_data(Buffer data) - { - storage_type_ = StorageType::Flat; - flat_data_ = std::move(data); - page_numbers_.clear(); - privatized_regions_.clear(); - } const Buffer& flat_data() const { return flat_data_; } Buffer& flat_data() { return flat_data_; } - void page_data(ChunkedData&& page_data) - { - storage_type_ = StorageType::Chunked; - flat_data_.clear(); - page_numbers_ = std::move(page_data); - privatized_regions_.clear(); - } ChunkedData const& page_data() const { return page_numbers_; } - void privatized_data(std::vector data) - { - storage_type_ = StorageType::Privatized; - flat_data_.clear(); - page_numbers_.clear(); - privatized_regions_ = std::move(data); - } - std::vector const& privatized_data() const { return privatized_regions_; } - std::vector& privatized_data() { return privatized_regions_; } + std::vector> const& privatized_data() const { return privatized_regions_; } + std::vector>& privatized_data() { return privatized_regions_; } simgrid::mc::ObjectInformation* object_info() const { return object_info_; } void object_info(simgrid::mc::ObjectInformation* info) { object_info_ = info; } @@ -240,10 +209,20 @@ public: bool contain(RemotePtr p) const { return p >= start() && p < end(); } }; -RegionSnapshot privatized_region(RegionType region_type, void* start_addr, void* permanent_addr, std::size_t size); -RegionSnapshot dense_region(RegionType type, void* start_addr, void* data_addr, std::size_t size); -simgrid::mc::RegionSnapshot sparse_region(RegionType type, void* start_addr, void* data_addr, std::size_t size); -simgrid::mc::RegionSnapshot region(RegionType type, void* start_addr, void* data_addr, std::size_t size); +class RegionDense : public RegionSnapshot { +public: + RegionDense(RegionType type, void* start_addr, void* data_addr, std::size_t size); +}; +class RegionSparse : public RegionSnapshot { +public: + RegionSparse(RegionType type, void* start_addr, void* data_addr, std::size_t size); +}; +class RegionPrivatized : public RegionSnapshot { +public: + RegionPrivatized(RegionType type, void* start_addr, void* data_addr, std::size_t size); +}; + +RegionSnapshot* region(RegionType type, void* start_addr, void* data_addr, std::size_t size); } // namespace mc } // namespace simgrid