diff --git a/AlgebraicDataflowArchitectureModel/src/algorithm/DataStorageNecessity.java b/AlgebraicDataflowArchitectureModel/src/algorithm/DataStorageNecessity.java index 9f72b5f..5a6a8d1 100644 --- a/AlgebraicDataflowArchitectureModel/src/algorithm/DataStorageNecessity.java +++ b/AlgebraicDataflowArchitectureModel/src/algorithm/DataStorageNecessity.java @@ -10,16 +10,18 @@ ResourceDependencyGraph graph = model.getResourceDependencyGraph(); DataConstraintModel dcmodel = (DataConstraintModel) model; for (ChannelGenerator generator : dcmodel.getChannelGenerators()) { + boolean flag = false; for (ChannelMember member : ((DataflowChannelGenerator) generator).getOutputChannelMembers()) { Expression curexp = member.getStateTransition().getCurStateExpression(); Expression nextexp = member.getStateTransition().getNextStateExpression(); - boolean flag = false; for (Position pos : curexp.getVariables().keySet()) { if (nextexp.contains(curexp.getVariables().get(pos))) { flag = true; } } - for (Node node : graph.getNodes()) { + } + for (Node node : graph.getNodes()) { + for (ChannelMember member : generator.getChannelMembers()) { if (((ResourceNode) node).getIdentifierTemplate().equals(member.getIdentifierTemplate())) { StoreAttribute store = new StoreAttribute(); store.setNeeded(flag); @@ -29,7 +31,11 @@ } } for (Node node : graph.getNodes()) { - if (((ResourceNode) node).getAttribute() == null) { + if (((ResourceNode) node).getPredecessors().size() > 1) { + StoreAttribute store = new StoreAttribute(); + store.setNeeded(true); + ((ResourceNode) node).setAttribute(store); + } else if (((ResourceNode) node).getAttribute() == null) { StoreAttribute store = new StoreAttribute(); store.setNeeded(false); ((ResourceNode) node).setAttribute(store); diff --git a/AlgebraicDataflowArchitectureModel/src/algorithm/UpdateConflictCheck.java b/AlgebraicDataflowArchitectureModel/src/algorithm/UpdateConflictCheck.java index 109dd6f..d80202b 100644 --- a/AlgebraicDataflowArchitectureModel/src/algorithm/UpdateConflictCheck.java +++ b/AlgebraicDataflowArchitectureModel/src/algorithm/UpdateConflictCheck.java @@ -63,6 +63,7 @@ } } System.out.println(strong.size() + " " +model.getResourceDependencyGraph().getNodes().size()); + /* for(ChannelGenerator cg:model.getChannelGenerators()) { DataflowChannelGenerator data = (DataflowChannelGenerator)cg; for(ChannelMember channel:data.getChannelMembers()) { @@ -72,7 +73,7 @@ } } } - } + }*/ return strong.size() == 0 && check; } }