From 0c3264b01d2bbcb14bd29cc50456a400c7c1076f Mon Sep 17 00:00:00 2001 From: yeom Date: Mon, 12 Oct 2009 23:10:01 +0000 Subject: [PATCH] decompose parameter regions into caller regions without regarding method context. --- Robust/src/Analysis/MLP/MLPAnalysis.java | 70 +++++++++++++----------- 1 file changed, 37 insertions(+), 33 deletions(-) diff --git a/Robust/src/Analysis/MLP/MLPAnalysis.java b/Robust/src/Analysis/MLP/MLPAnalysis.java index b41e3c49..8b79cd9c 100644 --- a/Robust/src/Analysis/MLP/MLPAnalysis.java +++ b/Robust/src/Analysis/MLP/MLPAnalysis.java @@ -942,47 +942,51 @@ public class MLPAnalysis { MethodContext calleeMCfromOG = ownAnalysis.getCalleeMethodContext( callerMC, fc); - if (calleeMC.equals(calleeMCfromOG)) { - // in this case, this method context calls corresponding callee. - int base; - if (((MethodDescriptor) calleeMC.getDescriptor()).isStatic()) { - base = 0; - } else { - base = 1; - } + // disable below condition. currently collect all possible + // allocation sites without regarding method context - for (Iterator iterator = paramIndexSet.iterator(); iterator - .hasNext();) { - Integer integer = (Integer) iterator.next(); - - int paramIdx = integer - base; - if (paramIdx >= 0) { - // if paramIdx is less than 0, assumes that it is - // related with wrong method contexts. - TempDescriptor arg = fc.getArg(paramIdx); - LabelNode argLN = og.td2ln.get(arg); - if (argLN != null) { - Iterator iterEdge = argLN - .iteratorToReferencees(); - while (iterEdge.hasNext()) { - ReferenceEdge referenceEdge = (ReferenceEdge) iterEdge - .next(); + // if (calleeMC.equals(calleeMCfromOG)) { // in this case, this + // method context calls corresponding callee. + + int base; + if (((MethodDescriptor) calleeMC.getDescriptor()).isStatic()) { + base = 0; + } else { + base = 1; + } + + for (Iterator iterator = paramIndexSet.iterator(); iterator + .hasNext();) { + Integer integer = (Integer) iterator.next(); + + int paramIdx = integer - base; + if (paramIdx >= 0) { + // if paramIdx is less than 0, assumes that it is + // related with wrong method contexts. + TempDescriptor arg = fc.getArg(paramIdx); + LabelNode argLN = og.td2ln.get(arg); + if (argLN != null) { + Iterator iterEdge = argLN + .iteratorToReferencees(); + while (iterEdge.hasNext()) { + ReferenceEdge referenceEdge = (ReferenceEdge) iterEdge + .next(); - HeapRegionNode dstHRN = referenceEdge.getDst(); - if (dstHRN.isParameter()) { - if(!visitedHRN.contains(dstHRN)){ - setupRelatedAllocSiteAnalysis(og, callerMC, - dstHRN, visitedHRN); - } - } else { - addLiveInAllocationSite(callerMC, dstHRN - .getAllocationSite()); + HeapRegionNode dstHRN = referenceEdge.getDst(); + if (dstHRN.isParameter()) { + if (!visitedHRN.contains(dstHRN)) { + setupRelatedAllocSiteAnalysis(og, callerMC, + dstHRN, visitedHRN); } + } else { + addLiveInAllocationSite(callerMC, dstHRN + .getAllocationSite()); } } } } } + // } } break; -- 2.34.1