X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/dd7e84f3ee3a528f096e12508198c8cc5e404863..612f154fb83700bd9c58a2e72c2ce7d98db81824:/src/mc/sosp/RegionSnapshot.hpp diff --git a/src/mc/sosp/RegionSnapshot.hpp b/src/mc/sosp/RegionSnapshot.hpp index 7d335bc2ab..2284ffa420 100644 --- a/src/mc/sosp/RegionSnapshot.hpp +++ b/src/mc/sosp/RegionSnapshot.hpp @@ -97,7 +97,7 @@ public: static const RegionType HeapRegion = RegionType::Heap; static const RegionType DataRegion = RegionType::Data; -private: +protected: RegionType region_type_ = UnknownRegion; StorageType storage_type_ = StorageType::NoData; simgrid::mc::ObjectInformation* object_info_ = nullptr; @@ -121,7 +121,7 @@ private: Buffer flat_data_; ChunkedData page_numbers_; - std::vector privatized_regions_; + std::vector> privatized_regions_; public: RegionSnapshot() {} @@ -186,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; } @@ -230,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