From 3583fe58f1855bcca81866d7dee9d311e272b351 Mon Sep 17 00:00:00 2001 From: jzhou Date: Thu, 27 Mar 2008 19:34:54 +0000 Subject: [PATCH] fix bug in ScheduleAnalysis.splitSNode() --- .../Analysis/Scheduling/ScheduleAnalysis.java | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/Robust/src/Analysis/Scheduling/ScheduleAnalysis.java b/Robust/src/Analysis/Scheduling/ScheduleAnalysis.java index 73243fc3..1ca15645 100644 --- a/Robust/src/Analysis/Scheduling/ScheduleAnalysis.java +++ b/Robust/src/Analysis/Scheduling/ScheduleAnalysis.java @@ -576,9 +576,37 @@ public class ScheduleAnalysis { sEdge.setTransTime(cNode.getTransTime()); se.getSource().addEdge(sEdge); scheduleEdges.add(sEdge); + // remove the ClassNodes and internal ScheduleEdges out of this subtree to the new ScheduleNode + ScheduleNode oldSNode = (ScheduleNode)se.getSource(); + Iterator it_isEdges = oldSNode.getScheduleEdgesIterator(); + Vector toremove = new Vector(); + Vector rCNodes = new Vector(); + rCNodes.addElement(sCNode); + if(it_isEdges != null){ + while(it_isEdges.hasNext()) { + ScheduleEdge tse = (ScheduleEdge)it_isEdges.next(); + if(rCNodes.contains(tse.getSourceCNode())) { + if(sCNode == tse.getSourceCNode()) { + if ((tse.getSourceFState() != fs) && (sFStates.contains(tse.getSourceFState()))) { + tse.setSource(cNode); + tse.setSourceCNode(cNode); + } else { + continue; + } + } + sNode.getScheduleEdges().addElement(tse); + sNode.getClassNodes().addElement(tse.getTargetCNode()); + rCNodes.addElement(tse.getTargetCNode()); + oldSNode.getClassNodes().removeElement(tse.getTargetCNode()); + toremove.addElement(tse); + } + } + } + oldSNode.getScheduleEdges().removeAll(toremove); + toremove.clear(); // redirect ScheudleEdges out of this subtree to the new ScheduleNode Iterator it_sEdges = se.getSource().edges(); - Vector toremove = new Vector(); + //Vector toremove = new Vector(); while(it_sEdges.hasNext()) { ScheduleEdge tse = (ScheduleEdge)it_sEdges.next(); if((tse != se) && (tse != sEdge) && (tse.getSourceCNode() == sCNode)) { -- 2.34.1