int reached(xbt_state_t st){
+ raw_mem_set = (mmalloc_get_current_heap() == raw_heap);
+
if(xbt_dynar_is_empty(reached_pairs)){
xbt_dynar_reset(prop_ato);
xbt_free(prop_ato);
MC_UNSET_RAW_MEM;
+
+ if(raw_mem_set)
+ MC_SET_RAW_MEM;
+ else
+ MC_UNSET_RAW_MEM;
+
return 1;
}
/* }
xbt_dynar_reset(prop_ato);
xbt_free(prop_ato);
MC_UNSET_RAW_MEM;
+
+ if(raw_mem_set)
+ MC_SET_RAW_MEM;
+ else
+ MC_UNSET_RAW_MEM;
+
return 0;
}
void set_pair_reached(xbt_state_t st){
+ raw_mem_set = (mmalloc_get_current_heap() == raw_heap);
MC_SET_RAW_MEM;
xbt_dynar_push(reached_pairs, &pair);
MC_UNSET_RAW_MEM;
-
+
+ if(raw_mem_set)
+ MC_SET_RAW_MEM;
+ else
+ MC_UNSET_RAW_MEM;
+
}
int reached_hash(xbt_state_t st){
+ raw_mem_set = (mmalloc_get_current_heap() == raw_heap);
if(xbt_dynar_is_empty(reached_pairs_hash)){
xbt_dynar_reset(prop_ato);
xbt_free(prop_ato);
MC_UNSET_RAW_MEM;
+
+ if(raw_mem_set)
+ MC_SET_RAW_MEM;
+ else
+ MC_UNSET_RAW_MEM;
+
return 1;
}else{
XBT_INFO("Different snapshot");
xbt_dynar_reset(prop_ato);
xbt_free(prop_ato);
MC_UNSET_RAW_MEM;
+
+ if(raw_mem_set)
+ MC_SET_RAW_MEM;
+ else
+ MC_UNSET_RAW_MEM;
+
return 0;
}
}
void set_pair_reached_hash(xbt_state_t st){
+
+ raw_mem_set = (mmalloc_get_current_heap() == raw_heap);
MC_SET_RAW_MEM;
MC_free_snapshot(sn);
MC_UNSET_RAW_MEM;
-
+
+ if(raw_mem_set)
+ MC_SET_RAW_MEM;
+ else
+ MC_UNSET_RAW_MEM;
+
}
int visited(xbt_state_t st, int sc){
+ raw_mem_set = (mmalloc_get_current_heap() == raw_heap);
if(xbt_dynar_is_empty(visited_pairs)){
xbt_free(prop_ato);
MC_UNSET_RAW_MEM;
+ if(raw_mem_set)
+ MC_SET_RAW_MEM;
+ else
+ MC_UNSET_RAW_MEM;
+
return 1;
}else{
xbt_dynar_reset(prop_ato);
xbt_free(prop_ato);
MC_UNSET_RAW_MEM;
+
+ if(raw_mem_set)
+ MC_SET_RAW_MEM;
+ else
+ MC_UNSET_RAW_MEM;
+
return 0;
}
int visited_hash(xbt_state_t st, int sc){
+ raw_mem_set = (mmalloc_get_current_heap() == raw_heap);
if(xbt_dynar_is_empty(visited_pairs_hash)){
xbt_dynar_reset(prop_ato);
xbt_free(prop_ato);
MC_UNSET_RAW_MEM;
+
+ if(raw_mem_set)
+ MC_SET_RAW_MEM;
+ else
+ MC_UNSET_RAW_MEM;
+
return 1;
}else{
//XBT_INFO("Different snapshot");
xbt_dynar_reset(prop_ato);
xbt_free(prop_ato);
MC_UNSET_RAW_MEM;
+
+ if(raw_mem_set)
+ MC_SET_RAW_MEM;
+ else
+ MC_UNSET_RAW_MEM;
+
return 0;
}
}
void set_pair_visited_hash(xbt_state_t st, int sc){
+
+ raw_mem_set = (mmalloc_get_current_heap() == raw_heap);
MC_SET_RAW_MEM;
MC_UNSET_RAW_MEM;
+ if(raw_mem_set)
+ MC_SET_RAW_MEM;
+ else
+ MC_UNSET_RAW_MEM;
+
}
void set_pair_visited(xbt_state_t st, int sc){
+ raw_mem_set = (mmalloc_get_current_heap() == raw_heap);
MC_SET_RAW_MEM;
MC_UNSET_RAW_MEM;
+ if(raw_mem_set)
+ MC_SET_RAW_MEM;
+ else
+ MC_UNSET_RAW_MEM;
}
void MC_ddfs_init(void){
+ raw_mem_set = (mmalloc_get_current_heap() == raw_heap);
+
XBT_INFO("**************************************************");
XBT_INFO("Double-DFS init");
XBT_INFO("**************************************************");
reached_pairs = xbt_dynar_new(sizeof(mc_pair_reached_t), NULL);
//reached_pairs_hash = xbt_dynar_new(sizeof(mc_pair_reached_hash_t), NULL);
//visited_pairs = xbt_dynar_new(sizeof(mc_pair_visited_t), NULL);
- visited_pairs_hash = xbt_dynar_new(sizeof(mc_pair_visited_hash_t), NULL);
+ //visited_pairs_hash = xbt_dynar_new(sizeof(mc_pair_visited_hash_t), NULL);
successors = xbt_dynar_new(sizeof(mc_pair_stateless_t), NULL);
/* Save the initial state */
}
}
- }
+ }
+
+ if(raw_mem_set)
+ MC_SET_RAW_MEM;
+ else
+ MC_UNSET_RAW_MEM;
+
}
void MC_ddfs(int search_cycle){
+ raw_mem_set = (mmalloc_get_current_heap() == raw_heap);
+
smx_process_t process;
mc_pair_stateless_t current_pair = NULL;
if(xbt_fifo_size(mc_stack_liveness) < MAX_DEPTH_LIVENESS){
//set_pair_visited(current_pair->automaton_state, search_cycle);
- set_pair_visited_hash(current_pair->automaton_state, search_cycle);
+ //set_pair_visited_hash(current_pair->automaton_state, search_cycle);
//XBT_INFO("Visited pairs : %lu", xbt_dynar_length(visited_pairs));
- XBT_INFO("Visited pairs : %lu", xbt_dynar_length(visited_pairs_hash));
+ //XBT_INFO("Visited pairs : %lu", xbt_dynar_length(visited_pairs_hash));
if(current_pair->requests > 0){
}else{
- if(!visited_hash(pair_succ->automaton_state, search_cycle)){
+ //if(!visited_hash(pair_succ->automaton_state, search_cycle)){
//if(!visited(pair_succ->automaton_state, search_cycle)){
MC_SET_RAW_MEM;
MC_ddfs(search_cycle);
- }else{
+ /*}else{
XBT_INFO("Next pair already visited ! ");
- }
+ }*/
}
}
- if(!visited_hash(pair_succ->automaton_state, search_cycle)){
+ //if(!visited_hash(pair_succ->automaton_state, search_cycle)){
//if(!visited(pair_succ->automaton_state, search_cycle)){
MC_SET_RAW_MEM;
MC_ddfs(search_cycle);
- }else{
+ /*}else{
XBT_INFO("Next pair already visited ! ");
- }
+ }*/
}
}else{
- if(!visited_hash(pair_succ->automaton_state, search_cycle)){
+ //if(!visited_hash(pair_succ->automaton_state, search_cycle)){
//if(!visited(pair_succ->automaton_state, search_cycle)){
MC_SET_RAW_MEM;
MC_ddfs(search_cycle);
- }else{
+ /*}else{
XBT_INFO("Next pair already visited ! ");
- }
+ }*/
}
}
- if(!visited_hash(pair_succ->automaton_state, search_cycle)){
+ //if(!visited_hash(pair_succ->automaton_state, search_cycle)){
//if(!visited(pair_succ->automaton_state, search_cycle)){
MC_SET_RAW_MEM;
MC_ddfs(search_cycle);
- }else{
+ /*}else{
XBT_INFO("Next pair already visited ! ");
- }
+ }*/
}
//xbt_dynar_pop(reached_pairs_hash, NULL);
}
MC_UNSET_RAW_MEM;
-
-
+
+ if(raw_mem_set)
+ MC_SET_RAW_MEM;
+ else
+ MC_UNSET_RAW_MEM;
}