boolean updateEdge(Node parentNode, Node currentNode) {
ArrayList<NameValuePair> setSet = currentNode.getSetSetMap().get(parentNode);
HashSet<String> updatedVarNames = new HashSet<String>();
+ HashMap<Integer, String> writerLastValue = new HashMap<Integer, String>();
+
boolean isChanged = false;
if (setSet != null) {
for (int i = 0;i < setSet.size();i++) {
updatedVarNames.add(setSet.get(i).getVarName());
+ writerLastValue.put(setSet.get(i).getAppNum(), setSet.get(i).getValue());
}
}
if (setSet != null) {
for (int i = 0;i < setSet.size();i++) {
- isChanged |= currentNode.getOutSet().add(setSet.get(i));
+ if (setSet.get(i).getValue().equals(writerLastValue.get(setSet.get(i).getAppNum()))) {
+ isChanged |= currentNode.getOutSet().add(setSet.get(i));
+ }
}
}