diff --git a/src/org/ntlab/traceDebugger/analyzerProvider/DeltaAlias.java b/src/org/ntlab/traceDebugger/analyzerProvider/DeltaAlias.java index 381804c..10c433d 100644 --- a/src/org/ntlab/traceDebugger/analyzerProvider/DeltaAlias.java +++ b/src/org/ntlab/traceDebugger/analyzerProvider/DeltaAlias.java @@ -7,6 +7,7 @@ public DeltaAlias(AliasType aliasType, int index, String objectId, TracePoint occurrencePoint, boolean isSrcSide) { super(aliasType, index, objectId, occurrencePoint); + bSrcSide = isSrcSide; } public boolean isSrcSide() { diff --git a/src/org/ntlab/traceDebugger/analyzerProvider/DeltaRelatedAliasCollector.java b/src/org/ntlab/traceDebugger/analyzerProvider/DeltaRelatedAliasCollector.java index 4fa7c06..f933e4c 100644 --- a/src/org/ntlab/traceDebugger/analyzerProvider/DeltaRelatedAliasCollector.java +++ b/src/org/ntlab/traceDebugger/analyzerProvider/DeltaRelatedAliasCollector.java @@ -1,98 +1,108 @@ -package org.ntlab.traceDebugger.analyzerProvider; - -import java.util.ArrayList; -import java.util.List; - -public class DeltaRelatedAliasCollector implements IAliasCollector { - private List srcSideRelatedAliases = new ArrayList<>(); - private List dstSideRelatedAliases = new ArrayList<>(); - private List srcSideIdList = new ArrayList<>(); - private List dstSideIdList = new ArrayList<>(); - private List relatedAliases = new ArrayList<>(); - public static final String SRC_SIDE = "SrcSide"; - public static final String DST_SIDE = "DstSide"; - - public DeltaRelatedAliasCollector(String srcId, String dstId) { - srcSideIdList.add(srcId); - dstSideIdList.add(dstId); - } - - @Override - public void addAlias(Alias alias) { - if (alias == null) return; - relatedAliases.add(alias); - String objId = alias.getObjectId(); - String srcOrDst = ""; - if (srcSideIdList.contains(objId) && !(dstSideIdList.contains(objId))) { - if (alias.getAliasType().equals(Alias.AliasType.ACTUAL_ARGUMENT)) { - Alias formalParameterAlias = srcSideRelatedAliases.get(srcSideRelatedAliases.size() - 1); - alias.setIndex(formalParameterAlias.getIndex()); - } - srcSideRelatedAliases.add(alias); - srcOrDst = "Src "; - } else if (dstSideIdList.contains(objId) && !(srcSideIdList.contains(objId))) { - if (alias.getAliasType().equals(Alias.AliasType.ACTUAL_ARGUMENT)) { - Alias formalParameterAlias = dstSideRelatedAliases.get(dstSideRelatedAliases.size() - 1); - alias.setIndex(formalParameterAlias.getIndex()); - } - dstSideRelatedAliases.add(alias); - srcOrDst = "Dst "; - } else if (srcSideIdList.contains(objId) && dstSideIdList.contains(objId)) { - boolean hasSrcSide = false; - for (Alias ra : srcSideRelatedAliases) { - if (ra.getObjectId().equals(objId)) { - hasSrcSide = true; - break; - } - } - if (!hasSrcSide) { - srcSideRelatedAliases.add(alias); - srcOrDst = "Src "; - } else { - dstSideRelatedAliases.add(alias); - srcOrDst = "Dst "; - } - } - - try { - System.out.println(srcOrDst + alias.getAliasType() + ": " + alias.getMethodSignature() + " line" + alias.getLineNo() + " index" + alias.getIndex()); - } catch (Exception e) { - System.out.println(srcOrDst + alias.getAliasType() + ": " + alias.getMethodSignature()); - } - } - - @Override - public void changeTrackingObject(String from, String to, boolean isSrcSide) { - if (isSrcSide) { - srcSideIdList.add(to); - } else { - dstSideIdList.add(to); - } -// if (srcSideIdList.contains(from)) { -// srcSideIdList.add(to); -// } else if (dstSideIdList.contains(from)) { -// dstSideIdList.add(to); -// } - } - - public List getRelatedAliases() { - return relatedAliases; - } - - public List getSrcSideRelatedAliases() { - return srcSideRelatedAliases; - } - - public List getDstSideRelatedAliases() { - return dstSideRelatedAliases; - } - - public String resolveSideInTheDelta(Alias alias) { - int index; - index = srcSideRelatedAliases.indexOf(alias); - if (index != -1) return SRC_SIDE; - index = dstSideRelatedAliases.indexOf(alias); - if (index != -1) return DST_SIDE; - return ""; - } -} +package org.ntlab.traceDebugger.analyzerProvider; + +import java.util.ArrayList; +import java.util.List; + +public class DeltaRelatedAliasCollector implements IAliasCollector { + private List srcSideRelatedAliases = new ArrayList<>(); + private List dstSideRelatedAliases = new ArrayList<>(); + private List srcSideIdList = new ArrayList<>(); + private List dstSideIdList = new ArrayList<>(); + private List relatedAliases = new ArrayList<>(); + public static final String SRC_SIDE = "SrcSide"; + public static final String DST_SIDE = "DstSide"; + + public DeltaRelatedAliasCollector(String srcId, String dstId) { + srcSideIdList.add(srcId); + dstSideIdList.add(dstId); + } + + @Override + public void addAlias(Alias alias) { + if (alias == null) return; + relatedAliases.add(alias); + String objId = alias.getObjectId(); + String srcOrDst = ""; + if (alias instanceof DeltaAlias) { + boolean isSrcSide = ((DeltaAlias)alias).isSrcSide(); + if (isSrcSide) { + srcSideRelatedAliases.add(alias); + srcOrDst = "Src "; + } else { + dstSideRelatedAliases.add(alias); + srcOrDst = "Dst "; + } + } else { + if (srcSideIdList.contains(objId) && !(dstSideIdList.contains(objId))) { + if (alias.getAliasType().equals(Alias.AliasType.ACTUAL_ARGUMENT)) { + Alias formalParameterAlias = srcSideRelatedAliases.get(srcSideRelatedAliases.size() - 1); + alias.setIndex(formalParameterAlias.getIndex()); + } + srcSideRelatedAliases.add(alias); + srcOrDst = "Src "; + } else if (dstSideIdList.contains(objId) && !(srcSideIdList.contains(objId))) { + if (alias.getAliasType().equals(Alias.AliasType.ACTUAL_ARGUMENT)) { + Alias formalParameterAlias = dstSideRelatedAliases.get(dstSideRelatedAliases.size() - 1); + alias.setIndex(formalParameterAlias.getIndex()); + } + dstSideRelatedAliases.add(alias); + srcOrDst = "Dst "; + } else if (srcSideIdList.contains(objId) && dstSideIdList.contains(objId)) { + boolean hasSrcSide = false; + for (Alias ra : srcSideRelatedAliases) { + if (ra.getObjectId().equals(objId)) { + hasSrcSide = true; + break; + } + } + if (!hasSrcSide) { + srcSideRelatedAliases.add(alias); + srcOrDst = "Src "; + } else { + dstSideRelatedAliases.add(alias); + srcOrDst = "Dst "; + } + } + } + try { + System.out.println(srcOrDst + alias.getAliasType() + ": " + alias.getMethodSignature() + " line" + alias.getLineNo() + " index" + alias.getIndex()); + } catch (Exception e) { + System.out.println(srcOrDst + alias.getAliasType() + ": " + alias.getMethodSignature()); + } + } + + @Override + public void changeTrackingObject(String from, String to, boolean isSrcSide) { + if (isSrcSide) { + srcSideIdList.add(to); + } else { + dstSideIdList.add(to); + } +// if (srcSideIdList.contains(from)) { +// srcSideIdList.add(to); +// } else if (dstSideIdList.contains(from)) { +// dstSideIdList.add(to); +// } + } + + public List getRelatedAliases() { + return relatedAliases; + } + + public List getSrcSideRelatedAliases() { + return srcSideRelatedAliases; + } + + public List getDstSideRelatedAliases() { + return dstSideRelatedAliases; + } + + public String resolveSideInTheDelta(Alias alias) { + int index; + index = srcSideRelatedAliases.indexOf(alias); + if (index != -1) return SRC_SIDE; + index = dstSideRelatedAliases.indexOf(alias); + if (index != -1) return DST_SIDE; + return ""; + } +}