diff --git a/org.ntlab.traceCollector/src/org/ntlab/traceCollector/tracer/trace/MethodExecution.java b/org.ntlab.traceCollector/src/org/ntlab/traceCollector/tracer/trace/MethodExecution.java index c16140c..1b581d2 100644 --- a/org.ntlab.traceCollector/src/org/ntlab/traceCollector/tracer/trace/MethodExecution.java +++ b/org.ntlab.traceCollector/src/org/ntlab/traceCollector/tracer/trace/MethodExecution.java @@ -268,13 +268,9 @@ * @return �����œn���ꂽmethodExecution���Ăяo�������Ƃ��L�^���Ă��郁�\�b�h�Ăяo�� */ public MethodInvocation getMethodInvocation(MethodExecution child) { - for (Statement statement : statements) { - if (statement instanceof MethodInvocation) { - MethodExecution calledMethodExecution = ((MethodInvocation)statement).getCalledMethodExecution(); - if (calledMethodExecution.equals(child)) { - return (MethodInvocation)statement; - } - } + int callerStatementExecution = child.getCallerStatementExecution(); + if (callerStatementExecution != -1) { + return (MethodInvocation)statements.get(callerStatementExecution); } return null; } diff --git a/org.ntlab.traceCollector/src/org/ntlab/traceCollector/tracer/trace/TraceJSON.java b/org.ntlab.traceCollector/src/org/ntlab/traceCollector/tracer/trace/TraceJSON.java index a8231c8..9fd4929 100644 --- a/org.ntlab.traceCollector/src/org/ntlab/traceCollector/tracer/trace/TraceJSON.java +++ b/org.ntlab.traceCollector/src/org/ntlab/traceCollector/tracer/trace/TraceJSON.java @@ -844,7 +844,7 @@ if (getInstance().thread != null) getInstance().thread.blockEnter(Integer.parseInt(blockId), Integer.parseInt(incomings), Integer.parseInt(lineNum), timeStamp); } - public static ThreadInstance getThreadInstanceForDebuggingControl(String threadId) { + public static ThreadInstance getThreadInstance(String threadId) { return getInstance().threads.get(threadId); } @@ -875,12 +875,15 @@ * @param thread * @return */ - public static FieldUpdate getRecentlyFieldUpdateForDebuggingControl(String containerObjId, String fieldName, Thread thread) { + public static FieldUpdate getRecentlyFieldUpdate(String containerObjId, String fieldName, Thread thread) { TracePoint before = getCurrentTracePoint(thread); if (!before.isValid()) { before.stepBackOver(); + if (!before.isValid()) { + return null; // �t�����T���ł���ȏ�H��Ȃ������ꍇ(root���\�b�h���s��1�s�ڂȂ�)�@���ꂪ�Ȃ��Ǝ��s����TimeoutException�ŗ����� + } } - TracePoint tp = getFieldUpdateTracePointForDebuggingControl(containerObjId, fieldName, before); + TracePoint tp = getFieldUpdateTracePoint(containerObjId, fieldName, before); if (tp != null && tp.getStatement() instanceof FieldUpdate) { return (FieldUpdate)tp.getStatement(); } @@ -895,7 +898,7 @@ * @param before * @return */ - public static TracePoint getFieldUpdateTracePointForDebuggingControl(final String containerObjId, final String fieldName, TracePoint before) { + public static TracePoint getFieldUpdateTracePoint(final String containerObjId, final String fieldName, TracePoint before) { before = before.duplicate(); before = getInstance().traverseStatementsInTraceBackward(new IStatementVisitor() { @Override @@ -926,12 +929,15 @@ * @param thread * @return */ - public static ArrayUpdate getRecentlyArrayUpdateForDebuggingControl(String arrayObjId, int index, Thread thread) { + public static ArrayUpdate getRecentlyArrayUpdate(String arrayObjId, int index, Thread thread) { TracePoint before = getCurrentTracePoint(thread); if (!before.isValid()) { before.stepBackOver(); + if (!before.isValid()) { + return null; // �t�����T���ł���ȏ�H��Ȃ������ꍇ(root���\�b�h���s��1�s�ڂȂ�)�@���ꂪ�Ȃ��Ǝ��s����TimeoutException�ŗ����� + } } - TracePoint tp = getArrayUpdateTracePointForDebuggingControl(arrayObjId, index, before); + TracePoint tp = getArrayUpdateTracePoint(arrayObjId, index, before); if (tp != null && tp.getStatement() instanceof ArrayUpdate) { return (ArrayUpdate)tp.getStatement(); } @@ -946,7 +952,7 @@ * @param before * @return */ - public static TracePoint getArrayUpdateTracePointForDebuggingControl(final String arrayObjId, final int index, TracePoint before) { + public static TracePoint getArrayUpdateTracePoint(final String arrayObjId, final int index, TracePoint before) { before = before.duplicate(); before = getInstance().traverseStatementsInTraceBackward(new IStatementVisitor() { @Override