size_t* mc_take_page_snapshot_region(void* data, size_t page_count, uint64_t* pagemap, size_t* reference_pages);
void mc_free_page_snapshot_region(size_t* pagenos, size_t page_count);
-void mc_restore_page_snapshot_region(mc_mem_region_t region, size_t page_count, uint64_t* pagemap, mc_mem_region_t reference_region);
+void mc_restore_page_snapshot_region(void* start_addr, size_t page_count, size_t* pagenos, uint64_t* pagemap, size_t* reference_pagenos);
mc_mem_region_t mc_region_new_sparse(int type, void *start_addr, size_t size, mc_mem_region_t ref_reg);
void MC_region_destroy(mc_mem_region_t reg);
}s_mc_visited_state_t, *mc_visited_state_t;
extern xbt_dynar_t visited_states;
-int is_visited_state(void);
+mc_visited_state_t is_visited_state(void);
void visited_state_free(mc_visited_state_t state);
void visited_state_free_voidp(void *s);
void *data;
}s_mc_comm_pattern_t, *mc_comm_pattern_t;
+extern xbt_dynar_t initial_communications_pattern;
extern xbt_dynar_t communications_pattern;
extern xbt_dynar_t incomplete_communications_pattern;
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:
// Fragmented memory region:
else if (region->page_numbers) {
+ // Last byte of the region:
void* end = (char*) addr + size - 1;
if( mc_same_page(addr, end) ) {
// The memory is contained in a single page: