#include "src/mc/mc_config.hpp"
#include "src/mc/mc_private.hpp"
#include "src/mc/mc_smx.hpp"
-#include "src/mc/sosp/mc_snapshot.hpp"
+#include "src/mc/sosp/Snapshot.hpp"
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_compare, xbt, "Logging specific to mc_compare in mc");
}
// TODO, have a robust way to find it in O(1)
-static inline RegionSnapshot* MC_get_heap_region(Snapshot* snapshot)
+static inline Region* MC_get_heap_region(Snapshot* snapshot)
{
for (auto const& region : snapshot->snapshot_regions_)
if (region->region_type() == simgrid::mc::RegionType::Heap)
malloc_info heapinfo_temp2;
malloc_info heapinfo_temp2b;
- simgrid::mc::RegionSnapshot* heap_region1 = MC_get_heap_region(snapshot1);
- simgrid::mc::RegionSnapshot* heap_region2 = MC_get_heap_region(snapshot2);
+ simgrid::mc::Region* heap_region1 = MC_get_heap_region(snapshot1);
+ simgrid::mc::Region* heap_region2 = MC_get_heap_region(snapshot2);
// This is the address of std_heap->heapinfo in the application process:
void* heapinfo_address = &((xbt_mheap_t) process->heap_address)->heapinfo;
while (i1 < state.heaplimit) {
- const malloc_info* heapinfo1 = (const malloc_info*) MC_region_read(heap_region1, &heapinfo_temp1, &heapinfos1[i1], sizeof(malloc_info));
- const malloc_info* heapinfo2 = (const malloc_info*) MC_region_read(heap_region2, &heapinfo_temp2, &heapinfos2[i1], sizeof(malloc_info));
+ const malloc_info* heapinfo1 =
+ (const malloc_info*)heap_region1->read(&heapinfo_temp1, &heapinfos1[i1], sizeof(malloc_info));
+ const malloc_info* heapinfo2 =
+ (const malloc_info*)heap_region2->read(&heapinfo_temp2, &heapinfos2[i1], sizeof(malloc_info));
if (heapinfo1->type == MMALLOC_TYPE_FREE || heapinfo1->type == MMALLOC_TYPE_HEAPINFO) { /* Free block */
i1 ++;
continue;
}
- const malloc_info* heapinfo2b = (const malloc_info*) MC_region_read(heap_region2, &heapinfo_temp2b, &heapinfos2[i2], sizeof(malloc_info));
+ const malloc_info* heapinfo2b =
+ (const malloc_info*)heap_region2->read(&heapinfo_temp2b, &heapinfos2[i2], sizeof(malloc_info));
if (heapinfo2b->type != MMALLOC_TYPE_UNFRAGMENTED) {
i2++;
while (i2 < state.heaplimit && not equal) {
- const malloc_info* heapinfo2b = (const malloc_info*) MC_region_read(
- heap_region2, &heapinfo_temp2b, &heapinfos2[i2],
- sizeof(malloc_info));
+ const malloc_info* heapinfo2b =
+ (const malloc_info*)heap_region2->read(&heapinfo_temp2b, &heapinfos2[i2], sizeof(malloc_info));
if (heapinfo2b->type == MMALLOC_TYPE_FREE || heapinfo2b->type == MMALLOC_TYPE_HEAPINFO) {
i2 ++;
/* All blocks/fragments are equal to another block/fragment_ ? */
for (size_t i = 1; i < state.heaplimit; i++) {
- const malloc_info* heapinfo1 = (const malloc_info*) MC_region_read(
- heap_region1, &heapinfo_temp1, &heapinfos1[i], sizeof(malloc_info));
+ const malloc_info* heapinfo1 =
+ (const malloc_info*)heap_region1->read(&heapinfo_temp1, &heapinfos1[i], sizeof(malloc_info));
if (heapinfo1->type == MMALLOC_TYPE_UNFRAGMENTED && i1 == state.heaplimit && heapinfo1->busy_block.busy_size > 0 &&
not state.equals_to1_(i, 0).valid_) {
XBT_DEBUG("Number of blocks/fragments not found in heap1: %d", nb_diff1);
for (size_t i = 1; i < state.heaplimit; i++) {
- const malloc_info* heapinfo2 = (const malloc_info*) MC_region_read(
- heap_region2, &heapinfo_temp2, &heapinfos2[i], sizeof(malloc_info));
+ const malloc_info* heapinfo2 =
+ (const malloc_info*)heap_region2->read(&heapinfo_temp2, &heapinfos2[i], sizeof(malloc_info));
if (heapinfo2->type == MMALLOC_TYPE_UNFRAGMENTED && i1 == state.heaplimit && heapinfo2->busy_block.busy_size > 0 &&
not state.equals_to2_(i, 0).valid_) {
XBT_DEBUG("Block %zu not found (size used = %zu)", i,
int check_ignore)
{
simgrid::mc::RemoteClient* process = &mc_model_checker->process();
- simgrid::mc::RegionSnapshot* heap_region1 = MC_get_heap_region(snapshot1);
- simgrid::mc::RegionSnapshot* heap_region2 = MC_get_heap_region(snapshot2);
+ simgrid::mc::Region* heap_region1 = MC_get_heap_region(snapshot1);
+ simgrid::mc::Region* heap_region2 = MC_get_heap_region(snapshot2);
for (int i = 0; i < size; ) {
const void* addr_pointed1;
const void* addr_pointed2;
- simgrid::mc::RegionSnapshot* heap_region1 = MC_get_heap_region(snapshot1);
- simgrid::mc::RegionSnapshot* heap_region2 = MC_get_heap_region(snapshot2);
+ simgrid::mc::Region* heap_region1 = MC_get_heap_region(snapshot1);
+ simgrid::mc::Region* heap_region2 = MC_get_heap_region(snapshot2);
switch (type->type) {
case DW_TAG_unspecified_type:
}
- simgrid::mc::RegionSnapshot* heap_region1 = MC_get_heap_region(snapshot1);
- simgrid::mc::RegionSnapshot* heap_region2 = MC_get_heap_region(snapshot2);
+ simgrid::mc::Region* heap_region1 = MC_get_heap_region(snapshot1);
+ simgrid::mc::Region* heap_region2 = MC_get_heap_region(snapshot2);
- const malloc_info* heapinfo1 = (const malloc_info*) MC_region_read(
- heap_region1, &heapinfo_temp1, &heapinfos1[block1], sizeof(malloc_info));
- const malloc_info* heapinfo2 = (const malloc_info*) MC_region_read(
- heap_region2, &heapinfo_temp2, &heapinfos2[block2], sizeof(malloc_info));
+ const malloc_info* heapinfo1 =
+ (const malloc_info*)heap_region1->read(&heapinfo_temp1, &heapinfos1[block1], sizeof(malloc_info));
+ const malloc_info* heapinfo2 =
+ (const malloc_info*)heap_region2->read(&heapinfo_temp2, &heapinfos2[block2], sizeof(malloc_info));
if ((heapinfo1->type == MMALLOC_TYPE_FREE || heapinfo1->type==MMALLOC_TYPE_HEAPINFO)
&& (heapinfo2->type == MMALLOC_TYPE_FREE || heapinfo2->type ==MMALLOC_TYPE_HEAPINFO)) {
/******************************************************************************/
static int compare_areas_with_type(simgrid::mc::StateComparator& state, void* real_area1,
- simgrid::mc::Snapshot* snapshot1, simgrid::mc::RegionSnapshot* region1,
- void* real_area2, simgrid::mc::Snapshot* snapshot2,
- simgrid::mc::RegionSnapshot* region2, simgrid::mc::Type* type, int pointer_level)
+ simgrid::mc::Snapshot* snapshot1, simgrid::mc::Region* region1, void* real_area2,
+ simgrid::mc::Snapshot* snapshot2, simgrid::mc::Region* region2,
+ simgrid::mc::Type* type, int pointer_level)
{
simgrid::mc::RemoteClient* process = &mc_model_checker->process();
for (simgrid::mc::Member& member : type->members) {
void* member1 = simgrid::dwarf::resolve_member(real_area1, type, &member, snapshot1);
void* member2 = simgrid::dwarf::resolve_member(real_area2, type, &member, snapshot2);
- simgrid::mc::RegionSnapshot* subregion1 = snapshot1->get_region(member1, region1); // region1 is hinted
- simgrid::mc::RegionSnapshot* subregion2 = snapshot2->get_region(member2, region2); // region2 is hinted
+ simgrid::mc::Region* subregion1 = snapshot1->get_region(member1, region1); // region1 is hinted
+ simgrid::mc::Region* subregion2 = snapshot2->get_region(member2, region2); // region2 is hinted
res = compare_areas_with_type(state, member1, snapshot1, subregion1, member2, snapshot2, subregion2,
member.type, pointer_level);
if (res == 1)
}
static int compare_global_variables(simgrid::mc::StateComparator& state, simgrid::mc::ObjectInformation* object_info,
- simgrid::mc::RegionSnapshot* r1, simgrid::mc::RegionSnapshot* r2,
- simgrid::mc::Snapshot* snapshot1, simgrid::mc::Snapshot* snapshot2)
+ simgrid::mc::Region* r1, simgrid::mc::Region* r2, simgrid::mc::Snapshot* snapshot1,
+ simgrid::mc::Snapshot* snapshot2)
{
xbt_assert(r1 && r2, "Missing region.");
xbt_assert(regions_count == s2->snapshot_regions_.size());
for (size_t k = 0; k != regions_count; ++k) {
- RegionSnapshot* region1 = s1->snapshot_regions_[k].get();
- RegionSnapshot* region2 = s2->snapshot_regions_[k].get();
+ Region* region1 = s1->snapshot_regions_[k].get();
+ Region* region2 = s2->snapshot_regions_[k].get();
// Preconditions:
if (region1->region_type() != RegionType::Data)