rhs = fen.getSrc();
}
+ // jjenista - I think the following code is WRONG!!!
+ // We are looking at some non-task FlatNode fn that is a stall site and
+ // considering what conflicts it might have with CHILDREN of the CURRENT TASK
+ // that contains fn. WE SHOULD NOT BE GETTING THE PARENT OF currentSESE
+ // because in this scenario currentSESE IS the parent in relation to other
+ // tasks that might conflict with this fn.
+ // OK, why not fix it? Because code all over the place is built on
+ // being able to retrieve the correct conflict graph, which is associated
+ // with the wrong task, but at least consistently, SO LEAVE IT BUT REALIZE
+ // WHAT IS HAPPENING
+
Set<FlatSESEEnterNode> parentSet = currentSESE.getSESEParent();
for (Iterator iterator = parentSet.iterator(); iterator.hasNext();) {
FlatSESEEnterNode parent = (FlatSESEEnterNode) iterator.next();
rhs = fsen.getSrc();
}
+ // jjenista - I think the following code is WRONG!!!
+ // We are looking at some non-task FlatNode fn that is a stall site and
+ // considering what conflicts it might have with CHILDREN of the CURRENT TASK
+ // that contains fn. WE SHOULD NOT BE GETTING THE PARENT OF currentSESE
+ // because in this scenario currentSESE IS the parent in relation to other
+ // tasks that might conflict with this fn.
+ // OK, why not fix it? Because code all over the place is built on
+ // being able to retrieve the correct conflict graph, which is associated
+ // with the wrong task, but at least consistently, SO LEAVE IT BUT REALIZE
+ // WHAT IS HAPPENING
+
// collects effects of stall site and generates stall site node
Set<FlatSESEEnterNode> parentSet = currentSESE.getSESEParent();
for (Iterator iterator = parentSet.iterator(); iterator.hasNext();) {
// collects effects of stall site and generates stall site node
Hashtable<Taint, Set<Effect>> taint2Effects = effectsAnalysis.get(fn);
+ // jjenista - I think the following code is WRONG!!!
+ // We are looking at some non-task FlatNode fn that is a stall site and
+ // considering what conflicts it might have with CHILDREN of the CURRENT TASK
+ // that contains fn. WE SHOULD NOT BE GETTING THE PARENT OF currentSESE
+ // because in this scenario currentSESE IS the parent in relation to other
+ // tasks that might conflict with this fn.
+ // OK, why not fix it? Because code all over the place is built on
+ // being able to retrieve the correct conflict graph, which is associated
+ // with the wrong task, but at least consistently, SO LEAVE IT BUT REALIZE
+ // WHAT IS HAPPENING
+
Set<FlatSESEEnterNode> parentSet = currentSESE.getSESEParent();
for (Iterator iterator = parentSet.iterator(); iterator.hasNext();) {
FlatSESEEnterNode parent = (FlatSESEEnterNode) iterator.next();
CodePlan cp = oooa.getCodePlan(fn);
fsen = cp.getCurrentSESE();
+ // jjenista - I think the following code is WRONG!!! (but right... :( )
+ // see note in OoOJavaAnalysis.java explaining that conflict graphs are
+ // correct but stored in a parent's parent by mistake, and then in places
+ // like this we look to the parent's parent for the correct conflict graph.
+ // It should be oooa.getConflictGraph(fsen) which is the task enclosing the
+ // stall site, and who's children might conflict with the stall site.
+ // DON'T CHANGE IT unless you are willing to find the many, many dependent
+ // code sections based on this behavior, but understand what is happening.
+
if( fsen.getSESEParent().size() != 0 &&
(parentSESE = (FlatSESEEnterNode)fsen.getSESEParent().iterator().next()) != null &&
(conflictGraph = oooa.getConflictGraph(parentSESE)) != null &&
(conflicts = conflictGraph.getConflictEffectSet(fn)) != null &&
- //TODO this still uses the old method of getting reachGraphs.
- (rg = disjointAnaylsis.getReachGraph(fsen.getmdEnclosing())) != null ){
+ (rg = disjointAnaylsis.getEnterReachGraph(fn)) != null ){
Set<SESELock> seseLockSet = oooa.getLockMappings(conflictGraph);
Set<WaitingElement> waitingElementSet =
for (Taint t : taints) {
flatnode = (isStallSite) ? t.getStallSite():t.getSESE();
-
+
if( flatnode != null &&
flatnode.equals(fn) &&
t.getVar().equals(var.getTempDescriptor())) {