X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/9616e469135a02323c3ca9d9e60e5a2e4958efbf..cc1eb8c4e293f75ccddc257ebc44bfcd0883073e:/src/mc/mc_checkpoint.cpp diff --git a/src/mc/mc_checkpoint.cpp b/src/mc/mc_checkpoint.cpp index 51b9e586f2..cda2505020 100644 --- a/src/mc/mc_checkpoint.cpp +++ b/src/mc/mc_checkpoint.cpp @@ -165,17 +165,16 @@ static void MC_snapshot_add_region(int index, mc_snapshot_t snapshot, region.object_info(object_info); snapshot->snapshot_regions[index] - = new simgrid::mc::RegionSnapshot(std::move(region)); + = std::unique_ptr( + new simgrid::mc::RegionSnapshot(std::move(region))); return; } static void MC_get_memory_regions(mc_process_t process, mc_snapshot_t snapshot) { const size_t n = process->object_infos_size; - snapshot->snapshot_regions_count = n + 1; - snapshot->snapshot_regions = xbt_new0(mc_mem_region_t, n + 1); - - for (size_t i = 0; i!=n; ++i) { + snapshot->snapshot_regions.resize(n + 1); + for (size_t i = 0; i != n; ++i) { mc_object_info_t object_info = process->object_infos[i]; MC_snapshot_add_region(i, snapshot, simgrid::mc::RegionType::Data, object_info, object_info->start_rw, object_info->start_rw, @@ -477,31 +476,26 @@ static xbt_dynar_t MC_take_snapshot_stacks(mc_snapshot_t * snapshot) } -static xbt_dynar_t MC_take_snapshot_ignore() +static std::vector MC_take_snapshot_ignore() { + std::vector res; if (mc_heap_comparison_ignore == NULL) - return NULL; - - xbt_dynar_t cpy = - xbt_dynar_new(sizeof(mc_heap_ignore_region_t), - heap_ignore_region_free_voidp); + return std::move(res); unsigned int cursor = 0; mc_heap_ignore_region_t current_region; xbt_dynar_foreach(mc_heap_comparison_ignore, cursor, current_region) { - mc_heap_ignore_region_t new_region = NULL; - new_region = xbt_new0(s_mc_heap_ignore_region_t, 1); - new_region->address = current_region->address; - new_region->size = current_region->size; - new_region->block = current_region->block; - new_region->fragment = current_region->fragment; - xbt_dynar_push(cpy, &new_region); + s_mc_heap_ignore_region_t new_region; + new_region.address = current_region->address; + new_region.size = current_region->size; + new_region.block = current_region->block; + new_region.fragment = current_region->fragment; + res.push_back(std::move(new_region)); } - return cpy; - + return std::move(res); } static void MC_snapshot_handle_ignore(mc_snapshot_t snapshot) @@ -656,11 +650,10 @@ mc_snapshot_t MC_take_snapshot(int num_state) static inline void MC_restore_snapshot_regions(mc_snapshot_t snapshot) { - const size_t n = snapshot->snapshot_regions_count; - for (size_t i = 0; i < n; i++) { + for(std::unique_ptr const& region : snapshot->snapshot_regions) { // For privatized, variables we decided it was not necessary to take the snapshot: - if (snapshot->snapshot_regions[i]) - MC_region_restore(snapshot->snapshot_regions[i]); + if (region) + MC_region_restore(region.get()); } #ifdef HAVE_SMPI