Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Convert enum smpi_process_state to enum class.
[simgrid.git] / src / mc / mc_snapshot.cpp
index c3a1cb8..27acf54 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2017. The SimGrid Team.
+/* Copyright (c) 2014-2018. The SimGrid Team.
  * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
 #include "xbt/sysdep.h"
 
 #include "src/internal_config.h"
-#include "src/smpi/include/private.h"
+#include "src/smpi/include/private.hpp"
 
-#include "src/mc/mc_snapshot.hpp"
-#include "src/mc/mc_private.hpp"
-#include "src/mc/mc_mmu.hpp"
 #include "src/mc/PageStore.hpp"
-
-extern "C" {
+#include "src/mc/mc_mmu.hpp"
+#include "src/mc/mc_private.hpp"
+#include "src/mc/mc_snapshot.hpp"
 
 /** @brief Find the snapshoted region from a pointer
  *
@@ -121,10 +119,12 @@ int MC_snapshot_region_memcmp(
   // Using alloca() for large allocations may trigger stack overflow:
   // use malloc if the buffer is too big.
   bool stack_alloc = size < 64;
-  const bool region1_need_buffer = region1==nullptr || region1->storage_type()==simgrid::mc::StorageType::Flat;
-  const bool region2_need_buffer = region2==nullptr || region2->storage_type()==simgrid::mc::StorageType::Flat;
-  void* buffer1a = region1_need_buffer ? nullptr : stack_alloc ? alloca(size) : malloc(size);
-  void* buffer2a = region2_need_buffer ? nullptr : stack_alloc ? alloca(size) : malloc(size);
+  void* buffer1a   = nullptr;
+  void* buffer2a   = nullptr;
+  if (region1 != nullptr && region1->storage_type() != simgrid::mc::StorageType::Flat)
+    buffer1a = stack_alloc ? alloca(size) : ::operator new(size);
+  if (region2 != nullptr && region2->storage_type() != simgrid::mc::StorageType::Flat)
+    buffer2a = stack_alloc ? alloca(size) : ::operator new(size);
   const void* buffer1 = MC_region_read(region1, buffer1a, addr1, size);
   const void* buffer2 = MC_region_read(region2, buffer2a, addr2, size);
   int res;
@@ -133,29 +133,12 @@ int MC_snapshot_region_memcmp(
   else
     res = memcmp(buffer1, buffer2, size);
   if (not stack_alloc) {
-    free(buffer1a);
-    free(buffer2a);
+    ::operator delete(buffer1a);
+    ::operator delete(buffer2a);
   }
   return res;
 }
 
-/** Compare memory between snapshots
- *
- * @param addr1 Address in the first snapshot
- * @param snapshot1 First snapshot
- * @param addr2 Address in the second snapshot
- * @param snapshot2 Second snapshot
- * @return same as memcmp
- * */
-int MC_snapshot_memcmp(
-  const void* addr1, simgrid::mc::Snapshot* snapshot1,
-  const void* addr2, simgrid::mc::Snapshot* snapshot2, int process_index, size_t size)
-{
-  mc_mem_region_t region1 = mc_get_snapshot_region(addr1, snapshot1, process_index);
-  mc_mem_region_t region2 = mc_get_snapshot_region(addr2, snapshot2, process_index);
-  return MC_snapshot_region_memcmp(addr1, region1, addr2, region2, size);
-}
-
 namespace simgrid {
 namespace mc {
 
@@ -192,8 +175,6 @@ const void* Snapshot::read_bytes(void* buffer, std::size_t size,
 }
 }
 
-}
-
 #ifdef SIMGRID_TEST
 
 #include <cstdlib>
@@ -201,9 +182,10 @@ const void* Snapshot::read_bytes(void* buffer, std::size_t size,
 
 #include <sys/mman.h>
 
+#include "src/mc/mc_config.hpp"
+#include "src/mc/mc_mmu.hpp"
 #include "src/mc/mc_private.hpp"
 #include "src/mc/mc_snapshot.hpp"
-#include "src/mc/mc_mmu.hpp"
 
 XBT_TEST_SUITE("mc_snapshot", "Snapshots");