-
- switch(s1->regions[i]->type){
- case 0 :
- /* Compare heapregion */
- if(s1->regions[i]->size != s2->regions[i]->size){
- XBT_INFO("Different size of heap (s1 = %zu, s2 = %zu)", s1->regions[i]->size, s2->regions[i]->size);
- xbt_dynar_free(&stacks1);
- xbt_dynar_free(&stacks2);
- xbt_dynar_free(&equals);
- return 1;
- }
- if(s1->regions[i]->start_addr != s2->regions[i]->start_addr){
- XBT_INFO("Different start addr of heap (s1 = %p, s2 = %p)", s1->regions[i]->start_addr, s2->regions[i]->start_addr);
- xbt_dynar_free(&stacks1);
- xbt_dynar_free(&stacks2);
- xbt_dynar_free(&equals);
- return 1;
- }
- if(mmalloc_compare_heap((xbt_mheap_t)s1->regions[i]->data, (xbt_mheap_t)s2->regions[i]->data, &stacks1, &stacks2, &equals)){
- XBT_INFO("Different heap (mmalloc_compare)");
- xbt_dynar_free(&stacks1);
- xbt_dynar_free(&stacks2);
- xbt_dynar_free(&equals);
- return 1;
- }
- heap1 = s1->regions[i]->data;
- heap2 = s2->regions[i]->data;
- break;
- case 1 :
- /* Compare data libsimgrid region */
- if(s1->regions[i]->size != s2->regions[i]->size){
- XBT_INFO("Different size of libsimgrid (data) (s1 = %zu, s2 = %zu)", s1->regions[i]->size, s2->regions[i]->size);
- xbt_dynar_free(&stacks1);
- xbt_dynar_free(&stacks2);
- xbt_dynar_free(&equals);
- return 1;
- }
- if(s1->regions[i]->start_addr != s2->regions[i]->start_addr){
- XBT_INFO("Different start addr of libsimgrid (data) (s1 = %p, s2 = %p)", s1->regions[i]->start_addr, s2->regions[i]->start_addr);
- xbt_dynar_free(&stacks1);
- xbt_dynar_free(&stacks2);
- xbt_dynar_free(&equals);
- return 1;
- }
- if(data_libsimgrid_region_compare(s1->regions[i]->data, s2->regions[i]->data, s1->regions[i]->size) != 0){
- XBT_INFO("Different memcmp for data in libsimgrid");
- xbt_dynar_free(&stacks1);
- xbt_dynar_free(&stacks2);
- xbt_dynar_free(&equals);
- return 1;
- }
- break;
+ i++;
+ }
+
+ #ifdef MC_DEBUG
+ if(is_diff == 0)
+ xbt_os_walltimer_stop(timer);
+ xbt_os_walltimer_start(timer);
+ #endif
+
+ /* Compare hash of global variables */
+ if(s1->hash_global != NULL && s2->hash_global != NULL){
+ if(strcmp(s1->hash_global, s2->hash_global) != 0){
+ #ifdef MC_DEBUG
+ xbt_os_walltimer_stop(timer);
+ mc_comp_times->hash_global_variables_comparison_time = xbt_os_timer_elapsed(timer);
+ XBT_DEBUG("Different hash of global variables : %s - %s", s1->hash_global, s2->hash_global);
+ errors++;
+ #else
+ #ifdef MC_VERBOSE
+ XBT_VERB("Different hash of global variables : %s - %s", s1->hash_global, s2->hash_global);
+ #endif
+
+ xbt_os_walltimer_stop(timer);
+ xbt_os_timer_free(timer);
+ xbt_os_walltimer_stop(global_timer);
+ mc_snapshot_comparison_time = xbt_os_timer_elapsed(global_timer);
+ xbt_os_timer_free(global_timer);