|
From: <lko...@us...> - 2016-01-08 14:31:28
|
Revision: 1907
http://sourceforge.net/p/scstudio/code/1907
Author: lkorenciak
Date: 2016-01-08 14:31:25 +0000 (Fri, 08 Jan 2016)
Log Message:
-----------
=fixing race cchecker on actions 1-st part
Modified Paths:
--------------
trunk/src/check/race/race_checker.cpp
trunk/src/check/race/race_checker.h
Modified: trunk/src/check/race/race_checker.cpp
===================================================================
--- trunk/src/check/race/race_checker.cpp 2015-12-14 23:57:15 UTC (rev 1906)
+++ trunk/src/check/race/race_checker.cpp 2016-01-08 14:31:25 UTC (rev 1907)
@@ -488,7 +488,10 @@
//mark elements
e.get_first()->get_complete_message()->set_marked();
- e.get_second()->get_complete_message()->set_marked();
+ MessageEvent* me = dynamic_cast<MessageEvent*>(e.get_second());
+ if (me != NULL) {
+ me->get_complete_message()->set_marked();
+ }
e.get_first()->set_marked();
e.get_second()->set_marked();
@@ -498,7 +501,9 @@
//Unmark elements in the original BMsc
e.get_first()->get_complete_message()->set_marked(NONE);
- e.get_second()->get_complete_message()->set_marked(NONE);
+ if (me != NULL) {
+ me->get_complete_message()->set_marked(NONE);
+ }
e.get_first()->set_marked(NONE);
e.get_second()->set_marked(NONE);
@@ -617,15 +622,32 @@
for(a=fooprint_edi[i].begin();a!=fooprint_edi[i].end();a++)
{
MessageEvent* a_event = dynamic_cast<MessageEvent*>((*a)->get_event());
- if (a_event == NULL)
+ if (a_event != NULL) {
+ if(a_event->is_receive() && !m_mapper->same_channel(a_event,b_event))
+ {
+ m_counterexamples.push_back(RaceInHMscException(f,b_event,a_event,get_reached_elements().back()));
+ }
+ else if(a_event->is_send())
+ {
+ const BoolVector& a_instances = (*a)->get_instances();
+ size_t j = 0;
+ for(; j<a_instances.size(); j++)
+ {
+ if(a_instances[j] && b_instances[j])
+ {
+ break;
+ }
+ }
+ if(j==a_instances.size())
+ {
+ m_counterexamples.push_back(RaceInHMscException(f,b_event,a_event,get_reached_elements().back()));
+ }
+ }
continue;
+ }
- if(a_event->is_receive() && !m_mapper->same_channel(a_event,b_event))
- {
- m_counterexamples.push_back(RaceInHMscException(f,b_event,a_event,get_reached_elements().back()));
- }
- else if(a_event->is_send())
- {
+ LocalActionEvent* la_event = dynamic_cast<LocalActionEvent*>((*a)->get_event());
+ if (la_event != NULL) {
const BoolVector& a_instances = (*a)->get_instances();
size_t j = 0;
for(; j<a_instances.size(); j++)
@@ -637,8 +659,9 @@
}
if(j==a_instances.size())
{
- m_counterexamples.push_back(RaceInHMscException(f,b_event,a_event,get_reached_elements().back()));
+ m_counterexamples.push_back(RaceInHMscException(f,b_event,la_event,get_reached_elements().back()));
}
+ continue;
}
}
}
@@ -648,7 +671,7 @@
////////////////////////////////////////////////////////////////////////////////
-RaceInHMscException::RaceInHMscException(FootprintPtr& footprint,MessageEvent* first, MessageEvent* second,
+RaceInHMscException::RaceInHMscException(FootprintPtr& footprint,MessageEvent* first, Event* second,
const MscElementPList& path_to_second):
m_footprint(footprint),m_first(first),
m_second(second),m_path_to_second(path_to_second)
@@ -665,7 +688,7 @@
return m_first;
}
-MessageEvent* RaceInHMscException::get_second()
+Event* RaceInHMscException::get_second()
{
return m_second;
}
Modified: trunk/src/check/race/race_checker.h
===================================================================
--- trunk/src/check/race/race_checker.h 2015-12-14 23:57:15 UTC (rev 1906)
+++ trunk/src/check/race/race_checker.h 2016-01-08 14:31:25 UTC (rev 1907)
@@ -380,12 +380,12 @@
FootprintPtr m_footprint;
MessageEvent* m_first;
- MessageEvent* m_second;
+ Event* m_second;
MscElementPList m_path_to_second;
public:
- RaceInHMscException(FootprintPtr& footprint,MessageEvent* first, MessageEvent* second,
+ RaceInHMscException(FootprintPtr& footprint,MessageEvent* first, Event* second,
const MscElementPList& path_to_second);
~RaceInHMscException() throw ()
@@ -395,7 +395,7 @@
FootprintPtr& get_footprint();
MessageEvent* get_first();
- MessageEvent* get_second();
+ Event* get_second();
MscElementPList& get_path_to_second();
};
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|