From d21164220a0d87ae931bf50d0e97ebf838742659 Mon Sep 17 00:00:00 2001 From: Brian Demsky Date: Sun, 14 Apr 2013 00:57:55 -0700 Subject: [PATCH] clean up printing a little for cycle cases... --- scanalysis.cc | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/scanalysis.cc b/scanalysis.cc index 83a8227..b1b6a05 100644 --- a/scanalysis.cc +++ b/scanalysis.cc @@ -65,6 +65,31 @@ ModelAction * SCAnalysis::getNextAction() { act=first; } } + if (act==NULL) + return act; + //print cycles in a nice way to avoid confusion + //make sure thread starts appear after the create + if (act->is_thread_start()) { + ModelAction *createact=model->get_thread(act)->get_creation(); + if (createact) { + action_list_t *threadlist=&(*threadlists)[id_to_int(createact->get_tid())]; + if (!threadlist->empty()) { + ModelAction *first=threadlist->front(); + if (first->get_seq_number() <= createact->get_seq_number()) + act=first; + } + } + } + + //make sure that joins appear after the thread is finished + if (act->is_thread_join()) { + int jointhread=id_to_int(act->get_thread_operand()->get_id()); + action_list_t *threadlist=&(*threadlists)[jointhread]; + if (!threadlist->empty()) { + act=threadlist->front(); + } + } + return act; } -- 2.34.1