int reached(xbt_state_t st){
+ raw_mem_set = (mmalloc_get_current_heap() == raw_heap);
+
if(xbt_dynar_is_empty(reached_pairs)){
/* Get values of propositional symbols */
unsigned int cursor = 0;
xbt_propositional_symbol_t ps = NULL;
- xbt_dynar_foreach(automaton->propositional_symbols, cursor, ps){
+ xbt_dynar_foreach(_mc_property_automaton->propositional_symbols, cursor, ps){
f = (int_f_void_t)ps->function;
res = (*f)();
xbt_dynar_push_as(prop_ato, int, res);
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;
int res;
int_f_void_t f;
- xbt_dynar_foreach(automaton->propositional_symbols, cursor, ps){
+ xbt_dynar_foreach(_mc_property_automaton->propositional_symbols, cursor, ps){
f = (int_f_void_t)ps->function;
res = (*f)();
xbt_dynar_push_as(pair->prop_ato, int, res);
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)){
int res;
int_f_void_t f;
- xbt_dynar_foreach(automaton->propositional_symbols, cursor, ps){
+ xbt_dynar_foreach(_mc_property_automaton->propositional_symbols, cursor, ps){
f = (int_f_void_t)ps->function;
res = (*f)();
xbt_dynar_push_as(prop_ato, int, res);
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;
int res;
int_f_void_t f;
- xbt_dynar_foreach(automaton->propositional_symbols, cursor, ps){
+ xbt_dynar_foreach(_mc_property_automaton->propositional_symbols, cursor, ps){
f = (int_f_void_t)ps->function;
res = (*f)();
xbt_dynar_push_as(pair->prop_ato, int, res);
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)){
int res;
int_f_void_t f;
- xbt_dynar_foreach(automaton->propositional_symbols, cursor, ps){
+ xbt_dynar_foreach(_mc_property_automaton->propositional_symbols, cursor, ps){
f = (int_f_void_t)ps->function;
res = (*f)();
xbt_dynar_push_as(prop_ato, int, res);
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)){
int res;
int_f_void_t f;
- xbt_dynar_foreach(automaton->propositional_symbols, cursor, ps){
+ xbt_dynar_foreach(_mc_property_automaton->propositional_symbols, cursor, ps){
f = (int_f_void_t)ps->function;
res = (*f)();
xbt_dynar_push_as(prop_ato, int, res);
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;
int res;
int_f_void_t f;
- xbt_dynar_foreach(automaton->propositional_symbols, cursor, ps){
+ xbt_dynar_foreach(_mc_property_automaton->propositional_symbols, cursor, ps){
f = (int_f_void_t)ps->function;
res = (*f)();
xbt_dynar_push_as(pair->prop_ato, int, res);
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;
int res;
int_f_void_t f;
- xbt_dynar_foreach(automaton->propositional_symbols, cursor, ps){
+ xbt_dynar_foreach(_mc_property_automaton->propositional_symbols, cursor, ps){
f = (int_f_void_t)ps->function;
res = (*f)();
xbt_dynar_push_as(pair->prop_ato, int, res);
MC_UNSET_RAW_MEM;
+ if(raw_mem_set)
+ MC_SET_RAW_MEM;
+ else
+ MC_UNSET_RAW_MEM;
}
unsigned int cursor = 0;
xbt_propositional_symbol_t p = NULL;
int_f_void_t f;
- xbt_dynar_foreach(automaton->propositional_symbols, cursor, p){
+ xbt_dynar_foreach(_mc_property_automaton->propositional_symbols, cursor, p){
if(strcmp(p->pred, l->u.predicat) == 0){
f = (int_f_void_t)p->function;
return (*f)();
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 */
unsigned int cursor = 0;
xbt_state_t state;
- xbt_dynar_foreach(automaton->states, cursor, state){
+ xbt_dynar_foreach(_mc_property_automaton->states, cursor, state){
if(state->type == -1){
MC_SET_RAW_MEM;
}
}
- }
+ }
+
+ 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;
current_pair = (mc_pair_stateless_t)xbt_fifo_get_item_content(xbt_fifo_get_first_item(mc_stack_liveness));
/* Update current state in buchi automaton */
- automaton->current_state = current_pair->automaton_state;
+ _mc_property_automaton->current_state = current_pair->automaton_state;
XBT_INFO("********************* ( Depth = %d, search_cycle = %d )", xbt_fifo_size(mc_stack_liveness), search_cycle);
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;
}