public class CfgWaitBackend extends CfgDefaultVisitor
The transformation result does not contain
Wait
nodes.
The visitor substitutes them by sub-processes
which are 'guarded' by predicates on new variables.
The situations when the same sequence of graph nodes
can be executed both after and not after
Wait
node are also supported.
There is Zamia IG feature which is taken into account in this backend.
The IG builder creates objects (that can be treated as
Wait
objects)
every time when it detects some process' sensitivity list.
The builder puts this node just before the
Sink
node. Such nodes are treated
by the backend as finalizing and are substituted by sensitivity list.
CfgVisitor.Status
Constructor and Description |
---|
CfgWaitBackend()
Default constructor.
|
Modifier and Type | Method and Description |
---|---|
void |
onBasicBlockBegin(BasicBlock basicBlock)
Starts visiting
BasicBlock node. |
void |
onBasicBlockEnd(BasicBlock basicBlock)
Finishes visiting
BasicBlock node. |
void |
onCaseBegin(Case caseNode)
Starts visiting
Case node. |
void |
onCaseEnd(Case caseNode)
Finishes visiting
Case node. |
void |
onCfgModelBegin()
Starts visiting
CfgModel object. |
void |
onCfgModelEnd()
Finishes visiting
CfgModel object. |
void |
onMergeBegin(Merge merge)
Starts visiting
Merge node. |
void |
onMergeEnd(Merge merge)
Finishes visiting
Merge node. |
void |
onModuleBegin(Module module)
Starts visiting
Module node. |
void |
onProcessBegin(Process process)
Starts visiting
Process node. |
void |
onProcessEnd(Process process)
Finishes visiting
Process node. |
void |
onSink(Sink sink)
Notifies that a
Sink node has been visited. |
void |
onSrcBegin(Source source)
Starts visiting
Source node. |
void |
onSwitchBegin(Switch switchNode)
Starts visiting
Switch node. |
void |
onSwitchEnd(Switch switchNode)
Finishes visiting
Switch node. |
void |
onWaitBegin(Wait wait)
Starts visiting
Wait node. |
void |
onWaitEnd(Wait wait)
Finishes visiting
Wait node. |
getStatus, onModuleEnd, onRootBegin, onRootEnd, onSrcEnd
public void onCfgModelBegin()
CfgVisitor
CfgModel
object.onCfgModelBegin
in interface CfgVisitor
onCfgModelBegin
in class CfgDefaultVisitor
public void onCfgModelEnd()
CfgVisitor
CfgModel
object.onCfgModelEnd
in interface CfgVisitor
onCfgModelEnd
in class CfgDefaultVisitor
public void onModuleBegin(Module module)
CfgVisitor
Module
node.onModuleBegin
in interface CfgVisitor
onModuleBegin
in class CfgDefaultVisitor
module
- Module
nodepublic void onProcessBegin(Process process)
CfgVisitor
Process
node.onProcessBegin
in interface CfgVisitor
onProcessBegin
in class CfgDefaultVisitor
process
- Process
nodepublic void onProcessEnd(Process process)
CfgVisitor
Process
node.onProcessEnd
in interface CfgVisitor
onProcessEnd
in class CfgDefaultVisitor
process
- Process
nodepublic void onBasicBlockBegin(BasicBlock basicBlock)
CfgVisitor
BasicBlock
node.onBasicBlockBegin
in interface CfgVisitor
onBasicBlockBegin
in class CfgDefaultVisitor
basicBlock
- BasicBlock
nodepublic void onBasicBlockEnd(BasicBlock basicBlock)
CfgVisitor
BasicBlock
node.onBasicBlockEnd
in interface CfgVisitor
onBasicBlockEnd
in class CfgDefaultVisitor
basicBlock
- BasicBlock
nodepublic void onCaseBegin(Case caseNode)
CfgVisitor
Case
node.onCaseBegin
in interface CfgVisitor
onCaseBegin
in class CfgDefaultVisitor
caseNode
- Case
nodepublic void onCaseEnd(Case caseNode)
CfgVisitor
Case
node.onCaseEnd
in interface CfgVisitor
onCaseEnd
in class CfgDefaultVisitor
caseNode
- Case
nodepublic void onSwitchBegin(Switch switchNode)
CfgVisitor
Switch
node.onSwitchBegin
in interface CfgVisitor
onSwitchBegin
in class CfgDefaultVisitor
switchNode
- switch nodepublic void onSwitchEnd(Switch switchNode)
CfgVisitor
Switch
node.onSwitchEnd
in interface CfgVisitor
onSwitchEnd
in class CfgDefaultVisitor
switchNode
- switch nodepublic void onMergeBegin(Merge merge)
CfgVisitor
Merge
node.onMergeBegin
in interface CfgVisitor
onMergeBegin
in class CfgDefaultVisitor
merge
- merge nodepublic void onMergeEnd(Merge merge)
CfgVisitor
Merge
node.onMergeEnd
in interface CfgVisitor
onMergeEnd
in class CfgDefaultVisitor
merge
- merge nodepublic void onSrcBegin(Source source)
CfgVisitor
Source
node.onSrcBegin
in interface CfgVisitor
onSrcBegin
in class CfgDefaultVisitor
source
- source nodepublic void onSink(Sink sink)
CfgVisitor
Sink
node has been visited.onSink
in interface CfgVisitor
onSink
in class CfgDefaultVisitor
sink
- sink nodepublic void onWaitBegin(Wait wait)
CfgVisitor
Wait
node.onWaitBegin
in interface CfgVisitor
onWaitBegin
in class CfgDefaultVisitor
wait
- wait nodepublic void onWaitEnd(Wait wait)
CfgVisitor
Wait
node.onWaitEnd
in interface CfgVisitor
onWaitEnd
in class CfgDefaultVisitor
wait
- wait node