diff --git a/org.ntlab.traceAnalyzer/src/org/ntlab/deltaExtractor/DeltaExtractor.java b/org.ntlab.traceAnalyzer/src/org/ntlab/deltaExtractor/DeltaExtractor.java index 47cb66d..ac631ce 100644 --- a/org.ntlab.traceAnalyzer/src/org/ntlab/deltaExtractor/DeltaExtractor.java +++ b/org.ntlab.traceAnalyzer/src/org/ntlab/deltaExtractor/DeltaExtractor.java @@ -858,6 +858,7 @@ private ExtractedStructure extractSub(TracePoint creationTracePoint, Reference targetRef, IAliasCollector aliasCollector) { eStructure = new ExtractedStructure(); + eStructure.setRelatedTracePoint(creationTracePoint.duplicate()); ArrayList objList = new ArrayList(); srcObject = targetRef.getSrcObject(); dstObject = targetRef.getDstObject(); @@ -915,11 +916,12 @@ * @return ���o���� */ public ExtractedStructure extract(TracePoint thisTracePoint, ObjectReference anotherObj, IAliasCollector aliasCollector) { + eStructure = new ExtractedStructure(); + eStructure.setRelatedTracePoint(thisTracePoint.duplicate()); MethodExecution methodExecution = thisTracePoint.getMethodExecution(); if (!thisTracePoint.isMethodEntry()) { thisTracePoint.stepNext(); } - eStructure = new ExtractedStructure(); ArrayList objList = new ArrayList(); String thisObjectId = methodExecution.getThisObjId(); objList.add(thisObjectId); diff --git a/org.ntlab.traceAnalyzer/src/org/ntlab/deltaExtractor/DeltaExtractorJSON.java b/org.ntlab.traceAnalyzer/src/org/ntlab/deltaExtractor/DeltaExtractorJSON.java index ff9da6a..693ed5e 100644 --- a/org.ntlab.traceAnalyzer/src/org/ntlab/deltaExtractor/DeltaExtractorJSON.java +++ b/org.ntlab.traceAnalyzer/src/org/ntlab/deltaExtractor/DeltaExtractorJSON.java @@ -605,6 +605,7 @@ if (objectId.equals(srcObject.getId())) { r = new Reference(arguments.get(0), srcObject); r.setCollection(true); + r.setCreation(true); // �߂�l�I�u�W�F�N�g�𐶐������Ƃ݂Ȃ� eStructure.addSrcSide(r); srcObject = arguments.get(0); aliasCollector.changeTrackingObject(objectId, arguments.get(0).getId(), true); @@ -612,6 +613,7 @@ } else if(objectId.equals(dstObject.getId())) { r = new Reference(arguments.get(0), dstObject); r.setCollection(true); + r.setCreation(true); // �߂�l�I�u�W�F�N�g�𐶐������Ƃ݂Ȃ� eStructure.addDstSide(r); dstObject =arguments.get(0); aliasCollector.changeTrackingObject(objectId, arguments.get(0).getId(), false); @@ -624,6 +626,11 @@ if (objectId.equals(srcObject.getId())) { r = new Reference(thisObj, srcObject); r.setCollection(true); + if (methodExecution.getSignature().contains(".iterator()") + || methodExecution.getSignature().contains(".listIterator()") + || methodExecution.getSignature().contains(".entrySet()") + || methodExecution.getSignature().contains(".keySet()") + || methodExecution.getSignature().contains(".values()")) r.setCreation(true); // �C�e���[�^�I�u�W�F�N�g���𐶐������Ƃ݂Ȃ� eStructure.addSrcSide(r); srcObject = thisObj; aliasCollector.changeTrackingObject(objectId, thisObjectId, true); @@ -631,6 +638,11 @@ } else if(objectId.equals(dstObject.getId())) { r = new Reference(thisObj, dstObject); r.setCollection(true); + if (methodExecution.getSignature().contains(".iterator()") + || methodExecution.getSignature().contains(".listIterator()") + || methodExecution.getSignature().contains(".entrySet()") + || methodExecution.getSignature().contains(".keySet()") + || methodExecution.getSignature().contains(".values()")) r.setCreation(true); // �C�e���[�^�I�u�W�F�N�g���𐶐������Ƃ݂Ȃ� eStructure.addDstSide(r); dstObject =thisObj; aliasCollector.changeTrackingObject(objectId, thisObjectId, false); diff --git a/org.ntlab.traceAnalyzer/src/org/ntlab/deltaExtractor/ExtractedStructure.java b/org.ntlab.traceAnalyzer/src/org/ntlab/deltaExtractor/ExtractedStructure.java index 6e47f75..8d5eaa4 100644 --- a/org.ntlab.traceAnalyzer/src/org/ntlab/deltaExtractor/ExtractedStructure.java +++ b/org.ntlab.traceAnalyzer/src/org/ntlab/deltaExtractor/ExtractedStructure.java @@ -2,6 +2,7 @@ import org.ntlab.trace.MethodExecution; import org.ntlab.trace.Reference; +import org.ntlab.trace.TracePoint; public class ExtractedStructure { @@ -10,6 +11,7 @@ private MethodExecution coordinator = null; private MethodExecution parent = null; private MethodExecution creationCallTree; + private TracePoint relatedTracePoint = null; public Delta getDelta() { return delta; @@ -65,4 +67,12 @@ return creationCallTree; } + public void setRelatedTracePoint(TracePoint relatedTracePoint) { + this.relatedTracePoint = relatedTracePoint; + } + + public TracePoint getRelatedTracePoint() { + return relatedTracePoint; + } + }