diff --git a/src/org/ntlab/traceDebugger/analyzerProvider/DeltaExtractor.java b/src/org/ntlab/traceDebugger/analyzerProvider/DeltaExtractor.java index 7743db9..a323951 100644 --- a/src/org/ntlab/traceDebugger/analyzerProvider/DeltaExtractor.java +++ b/src/org/ntlab/traceDebugger/analyzerProvider/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/src/org/ntlab/traceDebugger/analyzerProvider/DeltaExtractorJSON.java b/src/org/ntlab/traceDebugger/analyzerProvider/DeltaExtractorJSON.java index ce5a559..22b60da 100644 --- a/src/org/ntlab/traceDebugger/analyzerProvider/DeltaExtractorJSON.java +++ b/src/org/ntlab/traceDebugger/analyzerProvider/DeltaExtractorJSON.java @@ -633,6 +633,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); @@ -640,6 +641,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); @@ -652,6 +654,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); @@ -659,6 +666,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/src/org/ntlab/traceDebugger/analyzerProvider/ExtractedStructure.java b/src/org/ntlab/traceDebugger/analyzerProvider/ExtractedStructure.java index 922d9b6..dc19c2d 100644 --- a/src/org/ntlab/traceDebugger/analyzerProvider/ExtractedStructure.java +++ b/src/org/ntlab/traceDebugger/analyzerProvider/ExtractedStructure.java @@ -1,5 +1,6 @@ package org.ntlab.traceDebugger.analyzerProvider; +import org.ntlab.traceAnalysisPlatform.tracer.trace.TracePoint; import org.ntlab.traceAnalysisPlatform.tracer.trace.MethodExecution; import org.ntlab.traceAnalysisPlatform.tracer.trace.Reference; @@ -10,6 +11,7 @@ private MethodExecution coordinator = null; private MethodExecution parent = null; private MethodExecution creationCallTree; + private TracePoint relatedTracePoint = null; public Delta getDelta() { return delta; @@ -63,5 +65,14 @@ public MethodExecution getCreationCallTree() { return creationCallTree; - } + } + + public void setRelatedTracePoint(TracePoint relatedTracePoint) { + this.relatedTracePoint = relatedTracePoint; + } + + public TracePoint getRelatedTracePoint() { + return relatedTracePoint; + } + }