Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[mc] Use mc_region_contain where it could be used
authorGabriel Corona <gabriel.corona@loria.fr>
Thu, 24 Jul 2014 12:43:13 +0000 (14:43 +0200)
committerGabriel Corona <gabriel.corona@loria.fr>
Thu, 24 Jul 2014 12:43:13 +0000 (14:43 +0200)
src/mc/mc_compare.cpp
src/mc/mc_private.h

index cbaedb5..0ab694a 100644 (file)
@@ -186,12 +186,10 @@ static int compare_areas_with_type(struct mc_compare_state& state,
         return compare_heap_area(addr_pointed1, addr_pointed2, snapshot1,
                                  snapshot2, NULL, type->subtype, pointer_level);
       }
+
       // The pointers are both in the current object R/W segment:
-      else if (addr_pointed1 > region1->start_addr
-               && (char *) addr_pointed1 <= (char *) region1->start_addr + region1->size) {
-        if (!
-            (addr_pointed2 > region2->start_addr
-             && (char *) addr_pointed2 <= (char *) region2->start_addr + region2->size))
+      else if (mc_region_contain(region1, addr_pointed1)) {
+        if (!mc_region_contain(region2, addr_pointed2))
           return 1;
         if (type->dw_type_id == NULL)
           return (addr_pointed1 != addr_pointed2);
@@ -203,6 +201,9 @@ static int compare_areas_with_type(struct mc_compare_state& state,
         }
       }
 
+      // TODO, We do not handle very well the case where
+      // it belongs to a different (non-heap) region from the current one.
+
       else {
         return (addr_pointed1 != addr_pointed2);
       }
index 6de0d59..cb229e9 100644 (file)
@@ -743,7 +743,7 @@ void* mc_snapshot_read_region(void* addr, mc_mem_region_t region, void* target,
 
   uintptr_t offset = (char*) addr - (char*) region->start_addr;
 
-  xbt_assert(addr >= region->start_addr && (char*) addr+size <= (char*)region->start_addr+region->size,
+  xbt_assert(mc_region_contain(region, addr),
     "Trying to read out of the region boundary.");
 
   // Linear memory region: