From 7c71e60dc8020a0a89f5ca36bd6487ed30a749d7 Mon Sep 17 00:00:00 2001 From: Martin Quinson Date: Sun, 7 Aug 2022 18:51:55 +0200 Subject: [PATCH] Small cleanups in mc::Snapshot --- include/xbt/range.hpp | 3 +-- src/mc/remote/RemoteProcess.cpp | 2 -- src/mc/remote/RemoteProcess.hpp | 2 +- src/mc/sosp/Snapshot.cpp | 27 +++++++++++++-------------- src/mc/sosp/Snapshot.hpp | 2 ++ 5 files changed, 17 insertions(+), 19 deletions(-) diff --git a/include/xbt/range.hpp b/include/xbt/range.hpp index e5fd1efa0c..86de02c3dd 100644 --- a/include/xbt/range.hpp +++ b/include/xbt/range.hpp @@ -1,5 +1,4 @@ -/* Copyright (c) 2016-2022. The SimGrid Team. - * All rights reserved. */ +/* Copyright (c) 2016-2022. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ diff --git a/src/mc/remote/RemoteProcess.cpp b/src/mc/remote/RemoteProcess.cpp index 324e5edaa1..75a610d44d 100644 --- a/src/mc/remote/RemoteProcess.cpp +++ b/src/mc/remote/RemoteProcess.cpp @@ -145,8 +145,6 @@ RemoteProcess::~RemoteProcess() void RemoteProcess::refresh_heap() { // Read/dereference/refresh the std_heap pointer: - if (not this->heap) - this->heap = std::make_unique(); this->read(this->heap.get(), this->heap_address); this->cache_flags_ |= RemoteProcess::cache_heap; } diff --git a/src/mc/remote/RemoteProcess.hpp b/src/mc/remote/RemoteProcess.hpp index c2244f35a2..4dc3dfd9bb 100644 --- a/src/mc/remote/RemoteProcess.hpp +++ b/src/mc/remote/RemoteProcess.hpp @@ -204,7 +204,7 @@ public: * This is not used if the process is the current one: * use `get_heap_info()` in order to use it. */ - std::unique_ptr heap; + std::unique_ptr heap = std::make_unique(); /** Copy of the allocation info structure * diff --git a/src/mc/sosp/Snapshot.cpp b/src/mc/sosp/Snapshot.cpp index bf91e7c82e..eb1fca1b52 100644 --- a/src/mc/sosp/Snapshot.cpp +++ b/src/mc/sosp/Snapshot.cpp @@ -173,37 +173,36 @@ void Snapshot::snapshot_stacks(RemoteProcess* process) } } -static void snapshot_handle_ignore(Snapshot* snapshot) +void Snapshot::handle_ignore() { - xbt_assert(snapshot->get_remote_process()); + xbt_assert(get_remote_process()); // Copy the memory: - for (auto const& region : snapshot->get_remote_process()->ignored_regions()) { + for (auto const& region : get_remote_process()->ignored_regions()) { s_mc_snapshot_ignored_data_t ignored_data; ignored_data.start = (void*)region.addr; ignored_data.data.resize(region.size); // TODO, we should do this once per privatization segment: - snapshot->get_remote_process()->read_bytes(ignored_data.data.data(), region.size, remote(region.addr)); - snapshot->ignored_data_.push_back(std::move(ignored_data)); + get_remote_process()->read_bytes(ignored_data.data.data(), region.size, remote(region.addr)); + ignored_data_.push_back(std::move(ignored_data)); } // Zero the memory: - for (auto const& region : snapshot->get_remote_process()->ignored_regions()) - snapshot->get_remote_process()->clear_bytes(remote(region.addr), region.size); + for (auto const& region : get_remote_process()->ignored_regions()) + get_remote_process()->clear_bytes(remote(region.addr), region.size); } -static void snapshot_ignore_restore(const simgrid::mc::Snapshot* snapshot) +void Snapshot::ignore_restore() const { - for (auto const& ignored_data : snapshot->ignored_data_) - snapshot->get_remote_process()->write_bytes(ignored_data.data.data(), ignored_data.data.size(), - remote(ignored_data.start)); + for (auto const& ignored_data : ignored_data_) + get_remote_process()->write_bytes(ignored_data.data.data(), ignored_data.data.size(), remote(ignored_data.start)); } Snapshot::Snapshot(long num_state, RemoteProcess* process) : AddressSpace(process), num_state_(num_state) { XBT_DEBUG("Taking snapshot %ld", num_state); - snapshot_handle_ignore(this); + handle_ignore(); /* Save the std heap and the writable mapped pages of libsimgrid and binary */ snapshot_regions(process); @@ -215,7 +214,7 @@ Snapshot::Snapshot(long num_state, RemoteProcess* process) : AddressSpace(proces hash_ = simgrid::mc::hash(*this); } - snapshot_ignore_restore(this); + ignore_restore(); } void Snapshot::add_region(RegionType type, ObjectInformation* object_info, void* start_addr, std::size_t size) @@ -281,7 +280,7 @@ void Snapshot::restore(RemoteProcess* process) const region.get()->restore(); } - snapshot_ignore_restore(this); + ignore_restore(); process->clear_cache(); } diff --git a/src/mc/sosp/Snapshot.hpp b/src/mc/sosp/Snapshot.hpp index 2548423462..008334bffc 100644 --- a/src/mc/sosp/Snapshot.hpp +++ b/src/mc/sosp/Snapshot.hpp @@ -91,6 +91,8 @@ private: void add_region(RegionType type, ObjectInformation* object_info, void* start_addr, std::size_t size); void snapshot_regions(RemoteProcess* process); void snapshot_stacks(RemoteProcess* process); + void handle_ignore(); + void ignore_restore() const; }; } // namespace simgrid::mc -- 2.20.1