X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=Robust%2Fsrc%2FAnalysis%2FSSJava%2FGlobalFlowGraph.java;h=9e8d26d845b2dacbb7056e1eafce391ec43515ec;hb=c4e15379352959519956d9b77b723f441aa237b3;hp=490ab5853be7baff49658065ef718bd1446772b4;hpb=965d1b1d7db7d231cdecfaec438165ba4ccb9c16;p=IRC.git diff --git a/Robust/src/Analysis/SSJava/GlobalFlowGraph.java b/Robust/src/Analysis/SSJava/GlobalFlowGraph.java index 490ab585..9e8d26d8 100644 --- a/Robust/src/Analysis/SSJava/GlobalFlowGraph.java +++ b/Robust/src/Analysis/SSJava/GlobalFlowGraph.java @@ -11,6 +11,7 @@ import java.util.Set; import IR.Descriptor; import IR.MethodDescriptor; +import IR.Tree.MethodInvokeNode; public class GlobalFlowGraph { @@ -21,15 +22,19 @@ public class GlobalFlowGraph { Map mapLocationToInferCompositeLocation; - Map, NTuple>> mapCalleeToMapCallerArgToCalleeArg; - public GlobalFlowGraph(MethodDescriptor md) { this.md = md; this.mapLocTupleToNode = new HashMap, GlobalFlowNode>(); this.mapFlowNodeToOutNodeSet = new HashMap>(); this.mapLocationToInferCompositeLocation = new HashMap(); - this.mapCalleeToMapCallerArgToCalleeArg = - new HashMap, NTuple>>(); + } + + public MethodDescriptor getMethodDescriptor() { + return md; + } + + public Map getMapLocationToInferCompositeLocation() { + return mapLocationToInferCompositeLocation; } public GlobalFlowNode getFlowNode(NTuple locTuple) { @@ -39,7 +44,7 @@ public class GlobalFlowGraph { } return mapLocTupleToNode.get(locTuple); } - + private GlobalFlowNode createNewGlobalFlowNode(NTuple locTuple) { GlobalFlowNode node = new GlobalFlowNode(locTuple); return node; @@ -53,7 +58,7 @@ public class GlobalFlowGraph { // if both old and new do not share the prefix, throw error CompositeLocation oldCompLoc = mapLocationToInferCompositeLocation.get(loc); - if (newCompLoc.getSize() > oldCompLoc.getSize()) { + if (newCompLoc.getSize() == oldCompLoc.getSize()) { for (int i = 0; i < oldCompLoc.getSize(); i++) { Location oldLocElement = oldCompLoc.get(i); Location newLocElement = newCompLoc.get(i); @@ -62,6 +67,7 @@ public class GlobalFlowGraph { throw new Error("Failed to generate a composite location"); } } + } else if (newCompLoc.getSize() > oldCompLoc.getSize()) { mapLocationToInferCompositeLocation.put(loc, newCompLoc); }