@Override public void visitLabel(Label label) { int eventId = getEventId(); touchPointListener.beforeLabel(eventId, label, currentLine, mv); super.visitLabel(label); touchPointListener.afterLabel(eventId, label, currentLine, mv); }
/** * Processing information about new line. * * <p>Upgrades {@link #replyEventIdList} and {@link #saveEventIdList} and calls {@link * TouchPointListener#afterLineNumber(int, Label, int, MethodVisitor, String, String)} */ public void visitLineNumber(int line, Label label) { super.visitLineNumber(line, label); currentLine = line; if (!isDuplicatedLine(line, lastLineId)) { /* * It is a new line (first time seen, so we will save all found * events) */ replyEventIdList = null; saveEventIdList = new LinkedList<Integer>(); Map<Integer, LinkedList<Integer>> eventsMap = line2eventIds.get(line); if (eventsMap == null) { eventsMap = new HashMap<Integer, LinkedList<Integer>>(); line2eventIds.put(line, eventsMap); } eventsMap.put(lastLineId, saveEventIdList); } else { Integer orgin = getOriginForLine(line, lastLineId); Map<Integer, LinkedList<Integer>> m = line2eventIds.get(currentLine); LinkedList<Integer> eventIds = m.get(orgin); /* copy of current list */ replyEventIdList = new LinkedList<Integer>(eventIds); saveEventIdList = null; } touchPointListener.afterLineNumber( getEventId(), label, currentLine, mv, methodName, methodSignature); }
@Override public void visitMethodInsn(int opcode, String owner, String method, String descr) { super.visitMethodInsn(opcode, owner, method, descr); // We skip lines that contains call to methods that are specified inside ignoreRegexp if (RegexUtil.matches(ignoreRegexp, owner)) { touchPointListener.ignoreLine(getEventId(), currentLine); } }
@Override public void visitJumpInsn(int opcode, Label label) { /* Ignore any jump instructions in the "class init" method. When initializing static variables, the JVM first checks that the variable is null before attempting to set it. This check contains an IFNONNULL jump instruction which would confuse people if it showed up in the reports.*/ if ((opcode != Opcodes.GOTO) && (opcode != Opcodes.JSR) && (currentLine != 0) && (!methodName.equals("<clinit>"))) { int eventId = getEventId(); touchPointListener.beforeJump(eventId, label, currentLine, mv); super.visitJumpInsn(opcode, label); touchPointListener.afterJump(eventId, label, currentLine, mv); } else { super.visitJumpInsn(opcode, label); } }
@Override public void visitTableSwitchInsn(int min, int max, Label def, Label[] labels) { touchPointListener.beforeSwitch( getEventId(), def, labels, currentLine, mv, tryToFindSignatureOfConditionEnum()); super.visitTableSwitchInsn(min, max, def, labels); }
@Override public void visitLookupSwitchInsn(Label def, int[] values, Label[] labels) { touchPointListener.beforeSwitch( getEventId(), def, labels, currentLine, mv, tryToFindSignatureOfConditionEnum()); super.visitLookupSwitchInsn(def, values, labels); }
@Override public void visitCode() { super.visitCode(); touchPointListener.afterMethodStart(mv); }