diff --git a/src/org/ntlab/deltaExtractor/Alias.java b/src/org/ntlab/deltaExtractor/Alias.java index 617955f..9cc13fd 100644 --- a/src/org/ntlab/deltaExtractor/Alias.java +++ b/src/org/ntlab/deltaExtractor/Alias.java @@ -1,5 +1,6 @@ package org.ntlab.deltaExtractor; import org.ntlab.trace.MethodExecution; +import org.ntlab.trace.MethodInvocation; import org.ntlab.trace.Statement; import org.ntlab.trace.TracePoint; /** @@ -63,7 +64,22 @@ public String getMethodSignature() { return occurrencePoint.getMethodExecution().getSignature(); } - + + /** + * Get time stamp of statement. + * @return + */ + public long getTimeStamp() { + long stTimeStamp = occurrencePoint.getStatement().getTimeStamp(); + Statement st = occurrencePoint.getStatement(); + if (aliasType == AliasType.RETURN_VALUE) { + stTimeStamp = occurrencePoint.getMethodExecution().getExitTime(); + } else if (aliasType == AliasType.METHOD_INVOCATION && st instanceof MethodInvocation) { + stTimeStamp = ((MethodInvocation) st).getCalledMethodExecution().getExitTime(); + } + return stTimeStamp; + } + public int getLineNo() { try { Statement statement = occurrencePoint.getStatement(); diff --git a/src/org/ntlab/deltaViewer/CollaborationAliasCollector.java b/src/org/ntlab/deltaViewer/CollaborationAliasCollector.java index 89345f9..244adcd 100644 --- a/src/org/ntlab/deltaViewer/CollaborationAliasCollector.java +++ b/src/org/ntlab/deltaViewer/CollaborationAliasCollector.java @@ -1,26 +1,32 @@ package org.ntlab.deltaViewer; import java.util.ArrayList; +import java.util.Comparator; import java.util.List; +import java.util.stream.Collectors; import org.ntlab.deltaExtractor.Alias; import org.ntlab.deltaExtractor.IAliasCollector; +/** + * CollaborationAliasCollector is IAliasCollector implementation class to merge aliasList in time stamp order. + * + * @author Nitta Lab. + */ public class CollaborationAliasCollector implements IAliasCollector { - // Reverse execution order. + // Execution order. private List aliasList = new ArrayList<>(); - public CollaborationAliasCollector(DeltaAliasCollector dac) { + public CollaborationAliasCollector(IAliasCollector dac) { aliasList.addAll(dac.getAliasList()); + aliasList = sort(aliasList); } /* - * Do nothing! + * Don't write anything here. */ @Override public void addAlias(Alias alias) { - // TODO Auto-generated method stub - } @Override @@ -28,9 +34,64 @@ return aliasList; } - public void merge(DeltaAliasCollector dac) { - for (Alias alias: dac.getAliasList()) { + /** + * Merge other into aliasList(this) in time stamp order. + * @param other�@IAliasCollector to be merged into the aliasList. + */ + public void merge(IAliasCollector other) { + List otherAliasList = other.getAliasList(); + otherAliasList = sort(otherAliasList); + int otherIdx = 0; // Index of otherAliasList + int thisIdx = 0; // Index of thisAliasList + while(otherIdx < otherAliasList.size()) { + Alias otherAlias = otherAliasList.get(otherIdx); + if (thisIdx >= aliasList.size()) { + aliasList.add(otherAlias); + otherIdx++; thisIdx++; + continue; + } + Alias thisAlias = aliasList.get(thisIdx); + if (otherAlias.equals(thisAlias)) { + otherIdx++; thisIdx++; + } else { + long otherAliasTs = otherAlias.getTimeStamp(); + long thisAliasTs = thisAlias.getTimeStamp(); + + if (otherAliasTs < thisAliasTs) { + aliasList.add(thisIdx, otherAlias); + otherIdx++; thisIdx++; + } else if (otherAliasTs > thisAliasTs) { + thisIdx++; + } else { + if (aliasList.contains(otherAlias)) { + otherIdx++; + } else { + // BUG�����邩������܂���(ACTUAL_ARGUMENT��RECEIVER�̏o����) + aliasList.add(thisIdx, otherAlias); + otherIdx++; thisIdx++; + } + } + } } } + + /** + * Sort aliasList in time stamp order. + * @param aliasList AliasList to sort. + * @return Sorted AliasList. + */ + private List sort(List aliasList) { + List cloneAliasList = new ArrayList<>(aliasList); + List sortedAliasList = cloneAliasList.stream().sorted(new Comparator() { + @Override + public int compare(Alias alias1, Alias alias2) { + if (alias1.getTimeStamp() > alias2.getTimeStamp()) return 1; + else if (alias1.getTimeStamp() < alias2.getTimeStamp()) return -1; + return 0; + } + } + ).collect(Collectors.toList()); + return sortedAliasList; + } } diff --git a/src/org/ntlab/deltaViewer/MagnetRONFrame.java b/src/org/ntlab/deltaViewer/MagnetRONFrame.java index 74e4b73..2085f29 100644 --- a/src/org/ntlab/deltaViewer/MagnetRONFrame.java +++ b/src/org/ntlab/deltaViewer/MagnetRONFrame.java @@ -147,6 +147,8 @@ // String argsKey = "sampleStatic"; // String argsKey = "delta_eg1"; String argsKey = "pre_Exp1"; +// String argsKey = "getterOverlap1"; +// String argsKey = "setterOverlap1"; // String argsKey = "worstCase"; // String argsKey = "sample1"; // String argsKey = "objTrace5"; @@ -252,6 +254,12 @@ String[] pre_Exp6 = {null, null, "E","C", "traces/pre_Exp6.txt", CONTAINER_COMPONENT_COLLECTION}; map.put("pre_Exp6", pre_Exp6); String[] pre_Exp7 = {null, null, "E","C", "traces/pre_Exp7.txt", CONTAINER_COMPONENT_COLLECTION}; map.put("pre_Exp7", pre_Exp7); + // Samples of Plural Delta + String[] getterOverlap1 = {null, null, "getterOverlap.F","getterOverlap.D", "traces/getterOverlap.txt", CONTAINER_COMPONENT_COLLECTION}; map.put("getterOverlap1", getterOverlap1); + String[] getterOverlap2 = {null, null, "getterOverlap.G","getterOverlap.D", "traces/getterOverlap.txt", CONTAINER_COMPONENT_COLLECTION}; map.put("getterOverlap2", getterOverlap2); + String[] setterOverlap1 = {null, null, "setterOverlap.F","setterOverlap.C", "traces/setterOverlap.txt", CONTAINER_COMPONENT_COLLECTION}; map.put("setterOverlap1", setterOverlap1); + String[] setterOverlap2 = {null, null, "setterOverlap.G","setterOverlap.C", "traces/setterOverlap.txt", CONTAINER_COMPONENT_COLLECTION}; map.put("setterOverlap2", setterOverlap2); + String[] test = {null, null, "org.argouml.uml.diagram.static_structure.ui.FigClass","org.tigris.gef.base.LayerPerspectiveMutable", "traces\\ArgoUMLBenchmarkWithMoreStandardClasses.trace", CONTAINER_COMPONENT}; map.put("test", test); String[] testVectorAddElement = {null, null, "java.util.Vector", "org.tigris.gef.base.LayerPerspective", "traces\\ArgoUMLBenchmarkWithMoreStandardClasses.trace", CONTAINER_COMPONENT}; map.put("testVectorAddElement", testVectorAddElement);//trace.java��"addElement("�ɑΉ�����悤�ɒlj� String[] ArgoUMLBenchmark = {"", "", "", "", "traces/ArgoUMLBenchmark.trace", CONTAINER_COMPONENT}; map.put("ArgoUMLBenchmark", ArgoUMLBenchmark); diff --git a/src/tests/CollaborationAliasCollectorTest.java b/src/tests/CollaborationAliasCollectorTest.java new file mode 100644 index 0000000..213931f --- /dev/null +++ b/src/tests/CollaborationAliasCollectorTest.java @@ -0,0 +1,110 @@ +package tests; + +import static org.junit.jupiter.api.Assertions.*; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.junit.jupiter.api.Test; +import org.ntlab.deltaExtractor.Alias; +import org.ntlab.deltaExtractor.DeltaExtractorJSON; +import org.ntlab.deltaExtractor.ExtractedStructure; +import org.ntlab.deltaExtractor.IAliasCollector; +import org.ntlab.deltaExtractor.IAliasTracker; +import org.ntlab.deltaViewer.CollaborationAliasCollector; +import org.ntlab.deltaViewer.DeltaAliasCollector; +import org.ntlab.trace.Reference; +import org.ntlab.trace.ThreadInstance; +import org.ntlab.trace.TraceJSON; +import org.ntlab.trace.TracePoint; + +class CollaborationAliasCollectorTest { + // Delta Extract Type + protected static final String CONTAINER_COMPONENT = "Container-Component"; + protected static final String CONTAINER_COMPONENT_COLLECTION = "Container-Component(Collection)"; + + @Test + void testMerge() { + Map argsMap = new HashMap<>(); + setArgmentsForDeltaExtract(argsMap); + Map> argsKeysMap = new HashMap<>(); + setArgsKeysForPluralDeltaExtract(argsKeysMap, argsMap); + // Change Here! +// String key = "getterOverlap"; + String key = "setterOverlap"; + List argsKeys = argsKeysMap.get(key); + List eList = new ArrayList<>(); + List dacList = new ArrayList<>(); + TraceJSON trace = new TraceJSON(argsMap.get(argsKeys.get(0))[4]); + DeltaExtractorJSON s = new DeltaExtractorJSON(trace); + + for (String argsKey: argsKeys) { + if (argsMap.get(argsKey)[5] == CONTAINER_COMPONENT || argsMap.get(argsKey)[5] == CONTAINER_COMPONENT_COLLECTION) { + HashMap threads = trace.getAllThreads(); + + if (threads.values().size() == 1) { + ThreadInstance thread = threads.values().iterator().next(); // �Ō�̃X���b�h�����Ă��邾���c + TracePoint tp = thread.getRoot().get(thread.getRoot().size() - 1).getExitPoint(); + Reference reference = new Reference(argsMap.get(argsKey)[0], argsMap.get(argsKey)[1], argsMap.get(argsKey)[2], argsMap.get(argsKey)[3]); + IAliasTracker dac = new DeltaAliasCollector(); + ExtractedStructure e = s.extract(reference, tp, dac); + eList.add(e); + dacList.add(dac); + } else { + for (ThreadInstance thread: threads.values()) { + TracePoint tp = thread.getRoot().get(thread.getRoot().size() - 1).getExitPoint(); + Reference reference = new Reference(argsMap.get(argsKey)[0], argsMap.get(argsKey)[1], argsMap.get(argsKey)[2], argsMap.get(argsKey)[3]); + if (argsMap.get(argsKey)[5] == CONTAINER_COMPONENT_COLLECTION) { + reference.setCollection(true); + } +// reference.setArray(true); +// reference.setFinalLocal(true); +// reference.setCreation(true); + IAliasTracker dac = new DeltaAliasCollector(); + ExtractedStructure e = s.extract(reference, tp, dac); + System.out.println(e); + if (e != null) { + eList.add(e); + dacList.add(dac); + System.out.println("add" + eList.size() + ", " + dacList.size()); + } + System.out.println("---------------------------"); + } + } + } + } + CollaborationAliasCollector cac = null; + for (IAliasCollector dac: dacList) { + if (cac == null ) { + cac = new CollaborationAliasCollector(dac); + } else { + cac.merge(dac); + } + } + for (Alias alias: cac.getAliasList()) { + System.out.println(alias.getObjectId() + ", " + alias.getMethodSignature() + " l." + alias.getLineNo() + " : " + alias.getAliasType().toString() + ", (" + alias.getMethodExecution().getEntryTime() + ", " + alias.getMethodExecution().getExitTime() + "), " + alias.getOccurrencePoint().getStatement().getTimeStamp() + ", " + alias.getTimeStamp()); + } + assertNotNull(cac); + for (IAliasCollector dac: dacList) { + assertTrue(cac.getAliasList().contains(dac.getAliasList().get(0))); + } + } + + private void setArgmentsForDeltaExtract(Map map){ + // Samples of Plural Delta + String[] getterOverlap1 = {null, null, "getterOverlap.F","getterOverlap.D", "traces/getterOverlap.txt", CONTAINER_COMPONENT_COLLECTION}; map.put("getterOverlap1", getterOverlap1); + String[] getterOverlap2 = {null, null, "getterOverlap.G","getterOverlap.D", "traces/getterOverlap.txt", CONTAINER_COMPONENT_COLLECTION}; map.put("getterOverlap2", getterOverlap2); + String[] setterOverlap1 = {null, null, "setterOverlap.F","setterOverlap.C", "traces/setterOverlap.txt", CONTAINER_COMPONENT_COLLECTION}; map.put("setterOverlap1", setterOverlap1); + String[] setterOverlap2 = {null, null, "setterOverlap.G","setterOverlap.C", "traces/setterOverlap.txt", CONTAINER_COMPONENT_COLLECTION}; map.put("setterOverlap2", setterOverlap2); + } + + private void setArgsKeysForPluralDeltaExtract(Map> argsKeysMap, Map argsMap){ + // Samples of Plural Delta + argsKeysMap.put("getterOverlap", new ArrayList(Arrays.asList("getterOverlap1", "getterOverlap2"))); + argsKeysMap.put("setterOverlap", new ArrayList(Arrays.asList("setterOverlap1", "setterOverlap2"))); + } + +} diff --git a/traces/getterOverlap.txt b/traces/getterOverlap.txt new file mode 100644 index 0000000..58137d6 --- /dev/null +++ b/traces/getterOverlap.txt @@ -0,0 +1,76 @@ +{"type":"classDef","name":"getterOverlap.Main","path":"/C:/Users/Hongo Aki/git/DeltaExamples/bin/getterOverlap/Main.class","loaderPath":"/"}, +{"type":"methodEntry","signature":"public static void getterOverlap.Main.main(java.lang.String[])","receiver":{"class":"getterOverlap.Main","id":0},"args":[{"class":"[Ljava.lang.String;","id":589431969}],"threadId":1,"time":204676945845300}, +{"type":"blockEntry","methodSignature":"getterOverlap.Main.main(java.lang.String[])","blockId":0,"incomings":0,"threadId":1,"lineNum":6,"time":204676945882400}, +{"type":"methodCall","callerSideSignature":"getterOverlap.A()","threadId":1,"lineNum":6}, +{"type":"classDef","name":"getterOverlap.A","path":"/C:/Users/Hongo Aki/git/DeltaExamples/bin/getterOverlap/A.class","loaderPath":"/"}, +{"type":"constructorEntry","signature":"public getterOverlap.A()","class":"getterOverlap.A","args":[],"threadId":1,"time":204676947417500}, +{"type":"methodCall","callerSideSignature":"getterOverlap.B()","threadId":1,"lineNum":4}, +{"type":"classDef","name":"getterOverlap.B","path":"/C:/Users/Hongo Aki/git/DeltaExamples/bin/getterOverlap/B.class","loaderPath":"/"}, +{"type":"constructorEntry","signature":"public getterOverlap.B()","class":"getterOverlap.B","args":[],"threadId":1,"time":204676949108900}, +{"type":"methodCall","callerSideSignature":"getterOverlap.C()","threadId":1,"lineNum":4}, +{"type":"classDef","name":"getterOverlap.C","path":"/C:/Users/Hongo Aki/git/DeltaExamples/bin/getterOverlap/C.class","loaderPath":"/"}, +{"type":"constructorEntry","signature":"public getterOverlap.C()","class":"getterOverlap.C","args":[],"threadId":1,"time":204676950666100}, +{"type":"methodCall","callerSideSignature":"getterOverlap.D()","threadId":1,"lineNum":4}, +{"type":"classDef","name":"getterOverlap.D","path":"/C:/Users/Hongo Aki/git/DeltaExamples/bin/getterOverlap/D.class","loaderPath":"/"}, +{"type":"constructorEntry","signature":"public getterOverlap.D()","class":"getterOverlap.D","args":[],"threadId":1,"time":204676951545500}, +{"type":"constructorExit","shortSignature":"getterOverlap.D()","returnValue":{"class":"getterOverlap.D","id":1252169911},"threadId":1,"time":204676951598800}, +{"type":"fieldSet","fieldName":"getterOverlap.C.d","container":{"class":"getterOverlap.C","id":2101973421},"value":{"class":"getterOverlap.D","id":1252169911},"threadId":1,"lineNum":4,"time":204676951643600}, +{"type":"constructorExit","shortSignature":"getterOverlap.C()","returnValue":{"class":"getterOverlap.C","id":2101973421},"threadId":1,"time":204676951665800}, +{"type":"fieldSet","fieldName":"getterOverlap.B.c","container":{"class":"getterOverlap.B","id":685325104},"value":{"class":"getterOverlap.C","id":2101973421},"threadId":1,"lineNum":4,"time":204676951704800}, +{"type":"methodCall","callerSideSignature":"getterOverlap.E()","threadId":1,"lineNum":5}, +{"type":"classDef","name":"getterOverlap.E","path":"/C:/Users/Hongo Aki/git/DeltaExamples/bin/getterOverlap/E.class","loaderPath":"/"}, +{"type":"constructorEntry","signature":"public getterOverlap.E()","class":"getterOverlap.E","args":[],"threadId":1,"time":204676952913600}, +{"type":"methodCall","callerSideSignature":"getterOverlap.F()","threadId":1,"lineNum":4}, +{"type":"classDef","name":"getterOverlap.F","path":"/C:/Users/Hongo Aki/git/DeltaExamples/bin/getterOverlap/F.class","loaderPath":"/"}, +{"type":"constructorEntry","signature":"public getterOverlap.F()","class":"getterOverlap.F","args":[],"threadId":1,"time":204676954196300}, +{"type":"constructorExit","shortSignature":"getterOverlap.F()","returnValue":{"class":"getterOverlap.F","id":460141958},"threadId":1,"time":204676954245600}, +{"type":"fieldSet","fieldName":"getterOverlap.E.f","container":{"class":"getterOverlap.E","id":1163157884},"value":{"class":"getterOverlap.F","id":460141958},"threadId":1,"lineNum":4,"time":204676954297700}, +{"type":"constructorExit","shortSignature":"getterOverlap.E()","returnValue":{"class":"getterOverlap.E","id":1163157884},"threadId":1,"time":204676954310200}, +{"type":"fieldSet","fieldName":"getterOverlap.B.e","container":{"class":"getterOverlap.B","id":685325104},"value":{"class":"getterOverlap.E","id":1163157884},"threadId":1,"lineNum":5,"time":204676954327900}, +{"type":"constructorExit","shortSignature":"getterOverlap.B()","returnValue":{"class":"getterOverlap.B","id":685325104},"threadId":1,"time":204676954342100}, +{"type":"fieldSet","fieldName":"getterOverlap.A.b","container":{"class":"getterOverlap.A","id":1956725890},"value":{"class":"getterOverlap.B","id":685325104},"threadId":1,"lineNum":4,"time":204676954377700}, +{"type":"methodCall","callerSideSignature":"getterOverlap.G()","threadId":1,"lineNum":5}, +{"type":"classDef","name":"getterOverlap.G","path":"/C:/Users/Hongo Aki/git/DeltaExamples/bin/getterOverlap/G.class","loaderPath":"/"}, +{"type":"constructorEntry","signature":"public getterOverlap.G()","class":"getterOverlap.G","args":[],"threadId":1,"time":204676955423900}, +{"type":"constructorExit","shortSignature":"getterOverlap.G()","returnValue":{"class":"getterOverlap.G","id":356573597},"threadId":1,"time":204676955469500}, +{"type":"fieldSet","fieldName":"getterOverlap.A.g","container":{"class":"getterOverlap.A","id":1956725890},"value":{"class":"getterOverlap.G","id":356573597},"threadId":1,"lineNum":5,"time":204676955490000}, +{"type":"constructorExit","shortSignature":"getterOverlap.A()","returnValue":{"class":"getterOverlap.A","id":1956725890},"threadId":1,"time":204676955505700}, +{"type":"methodCall","callerSideSignature":"getterOverlap.A.m()","threadId":1,"lineNum":7}, +{"type":"methodEntry","signature":"public void getterOverlap.A.m()","receiver":{"class":"getterOverlap.A","id":1956725890},"args":[],"threadId":1,"time":204676955531400}, +{"type":"blockEntry","methodSignature":"getterOverlap.A.m()","blockId":0,"incomings":0,"threadId":1,"lineNum":8,"time":204676955543700}, +{"type":"fieldGet","fieldName":"getterOverlap.A.b","this":{"class":"getterOverlap.A","id":1956725890},"container":{"class":"getterOverlap.A","id":1956725890},"value":{"class":"getterOverlap.B","id":685325104},"threadId":1,"lineNum":8,"time":204676955561100}, +{"type":"methodCall","callerSideSignature":"getterOverlap.B.getF()","threadId":1,"lineNum":8}, +{"type":"methodEntry","signature":"public getterOverlap.F getterOverlap.B.getF()","receiver":{"class":"getterOverlap.B","id":685325104},"args":[],"threadId":1,"time":204676955588700}, +{"type":"blockEntry","methodSignature":"getterOverlap.B.getF()","blockId":0,"incomings":0,"threadId":1,"lineNum":8,"time":204676955597200}, +{"type":"fieldGet","fieldName":"getterOverlap.B.c","this":{"class":"getterOverlap.B","id":685325104},"container":{"class":"getterOverlap.B","id":685325104},"value":{"class":"getterOverlap.C","id":2101973421},"threadId":1,"lineNum":8,"time":204676955614100}, +{"type":"methodCall","callerSideSignature":"getterOverlap.C.getD()","threadId":1,"lineNum":8}, +{"type":"methodEntry","signature":"public getterOverlap.D getterOverlap.C.getD()","receiver":{"class":"getterOverlap.C","id":2101973421},"args":[],"threadId":1,"time":204676955639400}, +{"type":"blockEntry","methodSignature":"getterOverlap.C.getD()","blockId":0,"incomings":0,"threadId":1,"lineNum":7,"time":204676955648000}, +{"type":"fieldGet","fieldName":"getterOverlap.C.d","this":{"class":"getterOverlap.C","id":2101973421},"container":{"class":"getterOverlap.C","id":2101973421},"value":{"class":"getterOverlap.D","id":1252169911},"threadId":1,"lineNum":7,"time":204676955667600}, +{"type":"methodExit","shortSignature":"getterOverlap.C.getD()","receiver":{"class":"getterOverlap.C","id":2101973421},"returnValue":{"class":"getterOverlap.D","id":1252169911},"threadId":1,"time":204676955682000}, +{"type":"fieldGet","fieldName":"getterOverlap.B.e","this":{"class":"getterOverlap.B","id":685325104},"container":{"class":"getterOverlap.B","id":685325104},"value":{"class":"getterOverlap.E","id":1163157884},"threadId":1,"lineNum":9,"time":204676955701600}, +{"type":"methodCall","callerSideSignature":"getterOverlap.E.setDandGetF(getterOverlap.D)","threadId":1,"lineNum":9}, +{"type":"methodEntry","signature":"public getterOverlap.F getterOverlap.E.setDandGetF(getterOverlap.D)","receiver":{"class":"getterOverlap.E","id":1163157884},"args":[{"class":"getterOverlap.D","id":1252169911}],"threadId":1,"time":204676955729800}, +{"type":"blockEntry","methodSignature":"getterOverlap.E.setDandGetF(getterOverlap.D)","blockId":0,"incomings":0,"threadId":1,"lineNum":7,"time":204676955740100}, +{"type":"fieldGet","fieldName":"getterOverlap.E.f","this":{"class":"getterOverlap.E","id":1163157884},"container":{"class":"getterOverlap.E","id":1163157884},"value":{"class":"getterOverlap.F","id":460141958},"threadId":1,"lineNum":7,"time":204676955755900}, +{"type":"methodCall","callerSideSignature":"getterOverlap.F.setD(getterOverlap.D)","threadId":1,"lineNum":7}, +{"type":"methodEntry","signature":"public void getterOverlap.F.setD(getterOverlap.D)","receiver":{"class":"getterOverlap.F","id":460141958},"args":[{"class":"getterOverlap.D","id":1252169911}],"threadId":1,"time":204676955783900}, +{"type":"blockEntry","methodSignature":"getterOverlap.F.setD(getterOverlap.D)","blockId":0,"incomings":0,"threadId":1,"lineNum":7,"time":204676955798000}, +{"type":"fieldSet","fieldName":"getterOverlap.F.d","container":{"class":"getterOverlap.F","id":460141958},"value":{"class":"getterOverlap.D","id":1252169911},"threadId":1,"lineNum":7,"time":204676955815300}, +{"type":"methodExit","shortSignature":"getterOverlap.F.setD(getterOverlap.D)","receiver":{"class":"getterOverlap.F","id":460141958},"returnValue":{"class":"void","id":0},"threadId":1,"time":204676955829000}, +{"type":"fieldGet","fieldName":"getterOverlap.E.f","this":{"class":"getterOverlap.E","id":1163157884},"container":{"class":"getterOverlap.E","id":1163157884},"value":{"class":"getterOverlap.F","id":460141958},"threadId":1,"lineNum":8,"time":204676955847200}, +{"type":"methodExit","shortSignature":"getterOverlap.E.setDandGetF(getterOverlap.D)","receiver":{"class":"getterOverlap.E","id":1163157884},"returnValue":{"class":"getterOverlap.F","id":460141958},"threadId":1,"time":204676955864000}, +{"type":"methodExit","shortSignature":"getterOverlap.B.getF()","receiver":{"class":"getterOverlap.B","id":685325104},"returnValue":{"class":"getterOverlap.F","id":460141958},"threadId":1,"time":204676955878200}, +{"type":"fieldGet","fieldName":"getterOverlap.A.g","this":{"class":"getterOverlap.A","id":1956725890},"container":{"class":"getterOverlap.A","id":1956725890},"value":{"class":"getterOverlap.G","id":356573597},"threadId":1,"lineNum":9,"time":204676955910500}, +{"type":"methodCall","callerSideSignature":"getterOverlap.G.setF(getterOverlap.F)","threadId":1,"lineNum":9}, +{"type":"methodEntry","signature":"public void getterOverlap.G.setF(getterOverlap.F)","receiver":{"class":"getterOverlap.G","id":356573597},"args":[{"class":"getterOverlap.F","id":460141958}],"threadId":1,"time":204676955937200}, +{"type":"blockEntry","methodSignature":"getterOverlap.G.setF(getterOverlap.F)","blockId":0,"incomings":0,"threadId":1,"lineNum":7,"time":204676955951700}, +{"type":"methodCall","callerSideSignature":"getterOverlap.F.getD()","threadId":1,"lineNum":7}, +{"type":"methodEntry","signature":"public getterOverlap.D getterOverlap.F.getD()","receiver":{"class":"getterOverlap.F","id":460141958},"args":[],"threadId":1,"time":204676955974600}, +{"type":"blockEntry","methodSignature":"getterOverlap.F.getD()","blockId":0,"incomings":0,"threadId":1,"lineNum":11,"time":204676955988600}, +{"type":"fieldGet","fieldName":"getterOverlap.F.d","this":{"class":"getterOverlap.F","id":460141958},"container":{"class":"getterOverlap.F","id":460141958},"value":{"class":"getterOverlap.D","id":1252169911},"threadId":1,"lineNum":11,"time":204676956006300}, +{"type":"methodExit","shortSignature":"getterOverlap.F.getD()","receiver":{"class":"getterOverlap.F","id":460141958},"returnValue":{"class":"getterOverlap.D","id":1252169911},"threadId":1,"time":204676956022800}, +{"type":"fieldSet","fieldName":"getterOverlap.G.d","container":{"class":"getterOverlap.G","id":356573597},"value":{"class":"getterOverlap.D","id":1252169911},"threadId":1,"lineNum":7,"time":204676956041300}, +{"type":"methodExit","shortSignature":"getterOverlap.G.setF(getterOverlap.F)","receiver":{"class":"getterOverlap.G","id":356573597},"returnValue":{"class":"void","id":0},"threadId":1,"time":204676956055500}, +{"type":"methodExit","shortSignature":"getterOverlap.A.m()","receiver":{"class":"getterOverlap.A","id":1956725890},"returnValue":{"class":"void","id":0},"threadId":1,"time":204676956074200}, +{"type":"methodExit","shortSignature":"getterOverlap.Main.main(java.lang.String[])","receiver":{"class":"getterOverlap.Main","id":0},"returnValue":{"class":"void","id":0},"threadId":1,"time":204676956088900}, diff --git a/traces/setterOverlap.txt b/traces/setterOverlap.txt new file mode 100644 index 0000000..f46252b --- /dev/null +++ b/traces/setterOverlap.txt @@ -0,0 +1,76 @@ +{"type":"classDef","name":"setterOverlap.Main","path":"/C:/Users/Hongo Aki/git/DeltaExamples/bin/setterOverlap/Main.class","loaderPath":"/"}, +{"type":"methodEntry","signature":"public static void setterOverlap.Main.main(java.lang.String[])","receiver":{"class":"setterOverlap.Main","id":0},"args":[{"class":"[Ljava.lang.String;","id":589431969}],"threadId":1,"time":46886556229800}, +{"type":"blockEntry","methodSignature":"setterOverlap.Main.main(java.lang.String[])","blockId":0,"incomings":0,"threadId":1,"lineNum":6,"time":46886556253600}, +{"type":"methodCall","callerSideSignature":"setterOverlap.A()","threadId":1,"lineNum":6}, +{"type":"classDef","name":"setterOverlap.A","path":"/C:/Users/Hongo Aki/git/DeltaExamples/bin/setterOverlap/A.class","loaderPath":"/"}, +{"type":"constructorEntry","signature":"public setterOverlap.A()","class":"setterOverlap.A","args":[],"threadId":1,"time":46886557445100}, +{"type":"methodCall","callerSideSignature":"setterOverlap.B()","threadId":1,"lineNum":4}, +{"type":"classDef","name":"setterOverlap.B","path":"/C:/Users/Hongo Aki/git/DeltaExamples/bin/setterOverlap/B.class","loaderPath":"/"}, +{"type":"constructorEntry","signature":"public setterOverlap.B()","class":"setterOverlap.B","args":[],"threadId":1,"time":46886558527800}, +{"type":"methodCall","callerSideSignature":"setterOverlap.C()","threadId":1,"lineNum":4}, +{"type":"classDef","name":"setterOverlap.C","path":"/C:/Users/Hongo Aki/git/DeltaExamples/bin/setterOverlap/C.class","loaderPath":"/"}, +{"type":"constructorEntry","signature":"public setterOverlap.C()","class":"setterOverlap.C","args":[],"threadId":1,"time":46886559139600}, +{"type":"constructorExit","shortSignature":"setterOverlap.C()","returnValue":{"class":"setterOverlap.C","id":1252169911},"threadId":1,"time":46886559212400}, +{"type":"fieldSet","fieldName":"setterOverlap.B.c","container":{"class":"setterOverlap.B","id":2101973421},"value":{"class":"setterOverlap.C","id":1252169911},"threadId":1,"lineNum":4,"time":46886559257700}, +{"type":"constructorExit","shortSignature":"setterOverlap.B()","returnValue":{"class":"setterOverlap.B","id":2101973421},"threadId":1,"time":46886559280400}, +{"type":"fieldSet","fieldName":"setterOverlap.A.b","container":{"class":"setterOverlap.A","id":685325104},"value":{"class":"setterOverlap.B","id":2101973421},"threadId":1,"lineNum":4,"time":46886559307100}, +{"type":"methodCall","callerSideSignature":"setterOverlap.D()","threadId":1,"lineNum":5}, +{"type":"classDef","name":"setterOverlap.D","path":"/C:/Users/Hongo Aki/git/DeltaExamples/bin/setterOverlap/D.class","loaderPath":"/"}, +{"type":"constructorEntry","signature":"public setterOverlap.D()","class":"setterOverlap.D","args":[],"threadId":1,"time":46886560187200}, +{"type":"methodCall","callerSideSignature":"setterOverlap.E()","threadId":1,"lineNum":4}, +{"type":"classDef","name":"setterOverlap.E","path":"/C:/Users/Hongo Aki/git/DeltaExamples/bin/setterOverlap/E.class","loaderPath":"/"}, +{"type":"constructorEntry","signature":"public setterOverlap.E()","class":"setterOverlap.E","args":[],"threadId":1,"time":46886561030700}, +{"type":"methodCall","callerSideSignature":"setterOverlap.F()","threadId":1,"lineNum":4}, +{"type":"classDef","name":"setterOverlap.F","path":"/C:/Users/Hongo Aki/git/DeltaExamples/bin/setterOverlap/F.class","loaderPath":"/"}, +{"type":"constructorEntry","signature":"public setterOverlap.F()","class":"setterOverlap.F","args":[],"threadId":1,"time":46886561866700}, +{"type":"constructorExit","shortSignature":"setterOverlap.F()","returnValue":{"class":"setterOverlap.F","id":460141958},"threadId":1,"time":46886561899400}, +{"type":"fieldSet","fieldName":"setterOverlap.E.f","container":{"class":"setterOverlap.E","id":1163157884},"value":{"class":"setterOverlap.F","id":460141958},"threadId":1,"lineNum":4,"time":46886561938300}, +{"type":"constructorExit","shortSignature":"setterOverlap.E()","returnValue":{"class":"setterOverlap.E","id":1163157884},"threadId":1,"time":46886561948300}, +{"type":"fieldSet","fieldName":"setterOverlap.D.e","container":{"class":"setterOverlap.D","id":1956725890},"value":{"class":"setterOverlap.E","id":1163157884},"threadId":1,"lineNum":4,"time":46886561998900}, +{"type":"methodCall","callerSideSignature":"setterOverlap.G()","threadId":1,"lineNum":5}, +{"type":"classDef","name":"setterOverlap.G","path":"/C:/Users/Hongo Aki/git/DeltaExamples/bin/setterOverlap/G.class","loaderPath":"/"}, +{"type":"constructorEntry","signature":"public setterOverlap.G()","class":"setterOverlap.G","args":[],"threadId":1,"time":46886562711100}, +{"type":"constructorExit","shortSignature":"setterOverlap.G()","returnValue":{"class":"setterOverlap.G","id":356573597},"threadId":1,"time":46886562741100}, +{"type":"fieldSet","fieldName":"setterOverlap.D.g","container":{"class":"setterOverlap.D","id":1956725890},"value":{"class":"setterOverlap.G","id":356573597},"threadId":1,"lineNum":5,"time":46886562758900}, +{"type":"constructorExit","shortSignature":"setterOverlap.D()","returnValue":{"class":"setterOverlap.D","id":1956725890},"threadId":1,"time":46886562767100}, +{"type":"fieldSet","fieldName":"setterOverlap.A.d","container":{"class":"setterOverlap.A","id":685325104},"value":{"class":"setterOverlap.D","id":1956725890},"threadId":1,"lineNum":5,"time":46886562777900}, +{"type":"constructorExit","shortSignature":"setterOverlap.A()","returnValue":{"class":"setterOverlap.A","id":685325104},"threadId":1,"time":46886562791900}, +{"type":"methodCall","callerSideSignature":"setterOverlap.A.m()","threadId":1,"lineNum":7}, +{"type":"methodEntry","signature":"public void setterOverlap.A.m()","receiver":{"class":"setterOverlap.A","id":685325104},"args":[],"threadId":1,"time":46886562808500}, +{"type":"blockEntry","methodSignature":"setterOverlap.A.m()","blockId":0,"incomings":0,"threadId":1,"lineNum":8,"time":46886562821000}, +{"type":"fieldGet","fieldName":"setterOverlap.A.b","this":{"class":"setterOverlap.A","id":685325104},"container":{"class":"setterOverlap.A","id":685325104},"value":{"class":"setterOverlap.B","id":2101973421},"threadId":1,"lineNum":8,"time":46886562831900}, +{"type":"methodCall","callerSideSignature":"setterOverlap.B.getC()","threadId":1,"lineNum":8}, +{"type":"methodEntry","signature":"public setterOverlap.C setterOverlap.B.getC()","receiver":{"class":"setterOverlap.B","id":2101973421},"args":[],"threadId":1,"time":46886562869000}, +{"type":"blockEntry","methodSignature":"setterOverlap.B.getC()","blockId":0,"incomings":0,"threadId":1,"lineNum":7,"time":46886562881000}, +{"type":"fieldGet","fieldName":"setterOverlap.B.c","this":{"class":"setterOverlap.B","id":2101973421},"container":{"class":"setterOverlap.B","id":2101973421},"value":{"class":"setterOverlap.C","id":1252169911},"threadId":1,"lineNum":7,"time":46886562903400}, +{"type":"methodExit","shortSignature":"setterOverlap.B.getC()","receiver":{"class":"setterOverlap.B","id":2101973421},"returnValue":{"class":"setterOverlap.C","id":1252169911},"threadId":1,"time":46886562920700}, +{"type":"fieldGet","fieldName":"setterOverlap.A.d","this":{"class":"setterOverlap.A","id":685325104},"container":{"class":"setterOverlap.A","id":685325104},"value":{"class":"setterOverlap.D","id":1956725890},"threadId":1,"lineNum":9,"time":46886562931900}, +{"type":"methodCall","callerSideSignature":"setterOverlap.D.setC(setterOverlap.C)","threadId":1,"lineNum":9}, +{"type":"methodEntry","signature":"public void setterOverlap.D.setC(setterOverlap.C)","receiver":{"class":"setterOverlap.D","id":1956725890},"args":[{"class":"setterOverlap.C","id":1252169911}],"threadId":1,"time":46886562952300}, +{"type":"blockEntry","methodSignature":"setterOverlap.D.setC(setterOverlap.C)","blockId":0,"incomings":0,"threadId":1,"lineNum":8,"time":46886562961400}, +{"type":"fieldGet","fieldName":"setterOverlap.D.e","this":{"class":"setterOverlap.D","id":1956725890},"container":{"class":"setterOverlap.D","id":1956725890},"value":{"class":"setterOverlap.E","id":1163157884},"threadId":1,"lineNum":8,"time":46886562971900}, +{"type":"methodCall","callerSideSignature":"setterOverlap.E.setCandGetF(setterOverlap.C)","threadId":1,"lineNum":8}, +{"type":"methodEntry","signature":"public setterOverlap.F setterOverlap.E.setCandGetF(setterOverlap.C)","receiver":{"class":"setterOverlap.E","id":1163157884},"args":[{"class":"setterOverlap.C","id":1252169911}],"threadId":1,"time":46886562994200}, +{"type":"blockEntry","methodSignature":"setterOverlap.E.setCandGetF(setterOverlap.C)","blockId":0,"incomings":0,"threadId":1,"lineNum":7,"time":46886563001500}, +{"type":"fieldGet","fieldName":"setterOverlap.E.f","this":{"class":"setterOverlap.E","id":1163157884},"container":{"class":"setterOverlap.E","id":1163157884},"value":{"class":"setterOverlap.F","id":460141958},"threadId":1,"lineNum":7,"time":46886563018300}, +{"type":"methodCall","callerSideSignature":"setterOverlap.F.setC(setterOverlap.C)","threadId":1,"lineNum":7}, +{"type":"methodEntry","signature":"public void setterOverlap.F.setC(setterOverlap.C)","receiver":{"class":"setterOverlap.F","id":460141958},"args":[{"class":"setterOverlap.C","id":1252169911}],"threadId":1,"time":46886563034900}, +{"type":"blockEntry","methodSignature":"setterOverlap.F.setC(setterOverlap.C)","blockId":0,"incomings":0,"threadId":1,"lineNum":7,"time":46886563044500}, +{"type":"fieldSet","fieldName":"setterOverlap.F.c","container":{"class":"setterOverlap.F","id":460141958},"value":{"class":"setterOverlap.C","id":1252169911},"threadId":1,"lineNum":7,"time":46886563055500}, +{"type":"methodExit","shortSignature":"setterOverlap.F.setC(setterOverlap.C)","receiver":{"class":"setterOverlap.F","id":460141958},"returnValue":{"class":"void","id":0},"threadId":1,"time":46886563067400}, +{"type":"fieldGet","fieldName":"setterOverlap.E.f","this":{"class":"setterOverlap.E","id":1163157884},"container":{"class":"setterOverlap.E","id":1163157884},"value":{"class":"setterOverlap.F","id":460141958},"threadId":1,"lineNum":8,"time":46886563076400}, +{"type":"methodExit","shortSignature":"setterOverlap.E.setCandGetF(setterOverlap.C)","receiver":{"class":"setterOverlap.E","id":1163157884},"returnValue":{"class":"setterOverlap.F","id":460141958},"threadId":1,"time":46886563088200}, +{"type":"fieldGet","fieldName":"setterOverlap.D.g","this":{"class":"setterOverlap.D","id":1956725890},"container":{"class":"setterOverlap.D","id":1956725890},"value":{"class":"setterOverlap.G","id":356573597},"threadId":1,"lineNum":9,"time":46886563098400}, +{"type":"methodCall","callerSideSignature":"setterOverlap.G.setF(setterOverlap.F)","threadId":1,"lineNum":9}, +{"type":"methodEntry","signature":"public void setterOverlap.G.setF(setterOverlap.F)","receiver":{"class":"setterOverlap.G","id":356573597},"args":[{"class":"setterOverlap.F","id":460141958}],"threadId":1,"time":46886563151400}, +{"type":"blockEntry","methodSignature":"setterOverlap.G.setF(setterOverlap.F)","blockId":0,"incomings":0,"threadId":1,"lineNum":7,"time":46886563169100}, +{"type":"methodCall","callerSideSignature":"setterOverlap.F.getC()","threadId":1,"lineNum":7}, +{"type":"methodEntry","signature":"public setterOverlap.C setterOverlap.F.getC()","receiver":{"class":"setterOverlap.F","id":460141958},"args":[],"threadId":1,"time":46886563189200}, +{"type":"blockEntry","methodSignature":"setterOverlap.F.getC()","blockId":0,"incomings":0,"threadId":1,"lineNum":11,"time":46886563201700}, +{"type":"fieldGet","fieldName":"setterOverlap.F.c","this":{"class":"setterOverlap.F","id":460141958},"container":{"class":"setterOverlap.F","id":460141958},"value":{"class":"setterOverlap.C","id":1252169911},"threadId":1,"lineNum":11,"time":46886563213700}, +{"type":"methodExit","shortSignature":"setterOverlap.F.getC()","receiver":{"class":"setterOverlap.F","id":460141958},"returnValue":{"class":"setterOverlap.C","id":1252169911},"threadId":1,"time":46886563229100}, +{"type":"fieldSet","fieldName":"setterOverlap.G.c","container":{"class":"setterOverlap.G","id":356573597},"value":{"class":"setterOverlap.C","id":1252169911},"threadId":1,"lineNum":7,"time":46886563241000}, +{"type":"methodExit","shortSignature":"setterOverlap.G.setF(setterOverlap.F)","receiver":{"class":"setterOverlap.G","id":356573597},"returnValue":{"class":"void","id":0},"threadId":1,"time":46886563249900}, +{"type":"methodExit","shortSignature":"setterOverlap.D.setC(setterOverlap.C)","receiver":{"class":"setterOverlap.D","id":1956725890},"returnValue":{"class":"void","id":0},"threadId":1,"time":46886563261800}, +{"type":"methodExit","shortSignature":"setterOverlap.A.m()","receiver":{"class":"setterOverlap.A","id":685325104},"returnValue":{"class":"void","id":0},"threadId":1,"time":46886563273300}, +{"type":"methodExit","shortSignature":"setterOverlap.Main.main(java.lang.String[])","receiver":{"class":"setterOverlap.Main","id":0},"returnValue":{"class":"void","id":0},"threadId":1,"time":46886563280400},