From 84ff7e4d3d36a7cd8b4a018208f512a191a858dd Mon Sep 17 00:00:00 2001 From: weiyu Date: Tue, 1 Oct 2019 19:16:54 -0700 Subject: [PATCH] Reorganize codes --- history.cc | 44 ++++++++++++++++++++++++++++---------------- history.h | 2 ++ 2 files changed, 30 insertions(+), 16 deletions(-) diff --git a/history.cc b/history.cc index 989a2afd..faccdacb 100644 --- a/history.cc +++ b/history.cc @@ -135,7 +135,7 @@ void ModelHistory::resize_func_nodes(uint32_t new_size) void ModelHistory::process_action(ModelAction *act, thread_id_t tid) { ModelExecution * execution = model->get_execution(); - /* return if thread i has not entered any function or has exited + /* Return if thread i has not entered any function or has exited from all functions */ SnapVector * thrd_func_list = execution->get_thrd_func_list(); SnapVector< SnapList *> * @@ -145,7 +145,7 @@ void ModelHistory::process_action(ModelAction *act, thread_id_t tid) if ( thrd_func_list->size() <= id ) return; - /* get the function id that thread i is currently in */ + /* Get the function id that thread i is currently in */ uint32_t func_id = (*thrd_func_list)[id].back(); SnapList * func_act_lists = (*thrd_func_act_lists)[id]; @@ -167,30 +167,19 @@ void ModelHistory::process_action(ModelAction *act, thread_id_t tid) check_waiting_write(act); } - /* the following does not care about actions without a position */ + /* The following does not care about actions without a position */ if (func_id == 0 || act->get_position() == NULL) return; - bool second_part_of_rmw = act->is_rmwc() || act->is_rmw(); - action_list_t * curr_act_list = func_act_lists->back(); ASSERT(curr_act_list != NULL); - modelclock_t curr_seq_number = act->get_seq_number(); - /* Skip actions that are second part of a read modify write or actions with the same sequence number */ - if (curr_act_list->size() != 0) { - ModelAction * last_act = curr_act_list->back(); - if (second_part_of_rmw || last_act->get_seq_number() == curr_seq_number) - return; - } - - /* skip actions that are paused by fuzzer (sequence number is 0) */ - if (curr_seq_number == 0) + if (skip_action(act, curr_act_list)) return; FuncNode * func_node = func_nodes[func_id]; - /* add to curr_inst_list */ + /* Add to curr_inst_list */ curr_act_list->push_back(act); func_node->add_inst(act); @@ -375,6 +364,29 @@ SnapVector * ModelHistory::getThrdInstActMap(uint32_t func_id) return maps; } +bool ModelHistory::skip_action(ModelAction * act, SnapList * curr_act_list) +{ + bool second_part_of_rmw = act->is_rmwc() || act->is_rmw(); + modelclock_t curr_seq_number = act->get_seq_number(); + + /* Skip actions that are second part of a read modify write */ + if (second_part_of_rmw) + return true; + + /* Skip actions with the same sequence number */ + if (curr_act_list->size() != 0) { + ModelAction * last_act = curr_act_list->back(); + if (last_act->get_seq_number() == curr_seq_number) + return true; + } + + /* Skip actions that are paused by fuzzer (sequence number is 0) */ + if (curr_seq_number == 0) + return true; + + return false; +} + /* Reallocate some snapshotted memories when new executions start */ void ModelHistory::set_new_exec_flag() { diff --git a/history.h b/history.h index ad72cdfa..ce75e2ac 100644 --- a/history.h +++ b/history.h @@ -71,6 +71,8 @@ private: /* A run-time map from FuncInst to ModelAction per each FuncNode, per each thread. * Manipulated by FuncNode, and needed by NewFuzzer */ HashTable *, int, 0> * func_inst_act_maps; + + bool skip_action(ModelAction * act, SnapList * curr_act_list); }; #endif /* __HISTORY_H__ */ -- 2.34.1