diff options
author | Marc R. Hoffmann <hoffmann@mountainminds.com> | 2012-09-09 22:08:58 +0200 |
---|---|---|
committer | Marc R. Hoffmann <hoffmann@mountainminds.com> | 2012-09-09 22:08:58 +0200 |
commit | 32e3a05444847ecde19cef575e57fec51c85d085 (patch) | |
tree | ee7d032bbaa2347ac253f02d6fde63a55db093a3 /org.jacoco.core/src/org/jacoco/core/internal/analysis | |
parent | b5f62d692bea12eea4ef449598a73b5b7cff8d3d (diff) | |
download | jacoco-32e3a05444847ecde19cef575e57fec51c85d085.tar.gz |
Migrate to ASM 4.0, support INVOKEDYNAMIC.
Diffstat (limited to 'org.jacoco.core/src/org/jacoco/core/internal/analysis')
-rw-r--r-- | org.jacoco.core/src/org/jacoco/core/internal/analysis/ClassAnalyzer.java | 48 | ||||
-rw-r--r-- | org.jacoco.core/src/org/jacoco/core/internal/analysis/MethodAnalyzer.java | 83 |
2 files changed, 41 insertions, 90 deletions
diff --git a/org.jacoco.core/src/org/jacoco/core/internal/analysis/ClassAnalyzer.java b/org.jacoco.core/src/org/jacoco/core/internal/analysis/ClassAnalyzer.java index ce008f2f..b1c231c7 100644 --- a/org.jacoco.core/src/org/jacoco/core/internal/analysis/ClassAnalyzer.java +++ b/org.jacoco.core/src/org/jacoco/core/internal/analysis/ClassAnalyzer.java @@ -12,17 +12,14 @@ package org.jacoco.core.internal.analysis; import org.jacoco.core.analysis.IMethodCoverage; -import org.jacoco.core.internal.flow.IClassProbesVisitor; -import org.jacoco.core.internal.flow.IMethodProbesVisitor; -import org.objectweb.asm.AnnotationVisitor; -import org.objectweb.asm.Attribute; -import org.objectweb.asm.FieldVisitor; +import org.jacoco.core.internal.flow.ClassProbesVisitor; +import org.jacoco.core.internal.flow.MethodProbesVisitor; import org.objectweb.asm.Opcodes; /** * Analyzes the structure of a class. */ -public class ClassAnalyzer implements IClassProbesVisitor { +public class ClassAnalyzer extends ClassProbesVisitor { private final long classid; private final boolean executionData[]; @@ -57,6 +54,7 @@ public class ClassAnalyzer implements IClassProbesVisitor { return coverage; } + @Override public void visit(final int version, final int access, final String name, final String signature, final String superName, final String[] interfaces) { @@ -65,13 +63,14 @@ public class ClassAnalyzer implements IClassProbesVisitor { stringPool.get(interfaces)); } + @Override public void visitSource(final String source, final String debug) { this.coverage.setSourceFileName(stringPool.get(source)); } - public IMethodProbesVisitor visitMethod(final int access, - final String name, final String desc, final String signature, - final String[] exceptions) { + @Override + public MethodProbesVisitor visitMethod(final int access, final String name, + final String desc, final String signature, final String[] exceptions) { // TODO: Use filter hook if ((access & Opcodes.ACC_SYNTHETIC) != 0) { @@ -92,38 +91,9 @@ public class ClassAnalyzer implements IClassProbesVisitor { }; } + @Override public void visitTotalProbeCount(final int count) { // nothing to do } - public AnnotationVisitor visitAnnotation(final String desc, - final boolean visible) { - // nothing to do - return null; - } - - public void visitAttribute(final Attribute attr) { - // nothing to do - } - - public FieldVisitor visitField(final int access, final String name, - final String desc, final String signature, final Object value) { - // nothing to do - return null; - } - - public void visitInnerClass(final String name, final String outerName, - final String innerName, final int access) { - // nothing to do - } - - public void visitOuterClass(final String owner, final String name, - final String desc) { - // nothing to do - } - - public void visitEnd() { - // nothing to do - } - } diff --git a/org.jacoco.core/src/org/jacoco/core/internal/analysis/MethodAnalyzer.java b/org.jacoco.core/src/org/jacoco/core/internal/analysis/MethodAnalyzer.java index b2fc6d03..839a2fd7 100644 --- a/org.jacoco.core/src/org/jacoco/core/internal/analysis/MethodAnalyzer.java +++ b/org.jacoco.core/src/org/jacoco/core/internal/analysis/MethodAnalyzer.java @@ -17,18 +17,17 @@ import java.util.List; import org.jacoco.core.analysis.ICounter; import org.jacoco.core.analysis.IMethodCoverage; import org.jacoco.core.analysis.ISourceNode; -import org.jacoco.core.internal.flow.IMethodProbesVisitor; import org.jacoco.core.internal.flow.Instruction; import org.jacoco.core.internal.flow.LabelInfo; -import org.objectweb.asm.AnnotationVisitor; -import org.objectweb.asm.Attribute; +import org.jacoco.core.internal.flow.MethodProbesVisitor; +import org.objectweb.asm.Handle; import org.objectweb.asm.Label; /** - * A {@link IMethodProbesVisitor} that analyzes which statements and branches of + * A {@link MethodProbesVisitor} that analyzes which statements and branches of * a method has been executed based on given probe data. */ -public class MethodAnalyzer implements IMethodProbesVisitor { +public class MethodAnalyzer extends MethodProbesVisitor { private final boolean[] executionData; @@ -71,6 +70,7 @@ public class MethodAnalyzer implements IMethodProbesVisitor { */ public MethodAnalyzer(final String name, final String desc, final String signature, final boolean[] executionData) { + super(); this.executionData = executionData; this.coverage = new MethodCoverageImpl(name, desc, signature); } @@ -85,6 +85,7 @@ public class MethodAnalyzer implements IMethodProbesVisitor { return coverage; } + @Override public void visitLabel(final Label label) { currentLabel.add(label); if (!LabelInfo.isSuccessor(label)) { @@ -92,6 +93,7 @@ public class MethodAnalyzer implements IMethodProbesVisitor { } } + @Override public void visitLineNumber(final int line, final Label start) { currentLine = line; if (firstLine > line || lastLine == ISourceNode.UNKNOWN_LINE) { @@ -118,50 +120,67 @@ public class MethodAnalyzer implements IMethodProbesVisitor { lastInsn = insn; } + @Override public void visitInsn(final int opcode) { visitInsn(); } + @Override public void visitIntInsn(final int opcode, final int operand) { visitInsn(); } + @Override public void visitVarInsn(final int opcode, final int var) { visitInsn(); } + @Override public void visitTypeInsn(final int opcode, final String type) { visitInsn(); } + @Override public void visitFieldInsn(final int opcode, final String owner, final String name, final String desc) { visitInsn(); } + @Override public void visitMethodInsn(final int opcode, final String owner, final String name, final String desc) { visitInsn(); } + @Override + public void visitInvokeDynamicInsn(final String name, final String desc, + final Handle bsm, final Object... bsmArgs) { + visitInsn(); + } + + @Override public void visitJumpInsn(final int opcode, final Label label) { visitInsn(); jumps.add(new Jump(lastInsn, label)); } + @Override public void visitLdcInsn(final Object cst) { visitInsn(); } + @Override public void visitIincInsn(final int var, final int increment) { visitInsn(); } + @Override public void visitTableSwitchInsn(final int min, final int max, - final Label dflt, final Label[] labels) { + final Label dflt, final Label... labels) { visitSwitchInsn(dflt, labels); } + @Override public void visitLookupSwitchInsn(final Label dflt, final int[] keys, final Label[] labels) { visitSwitchInsn(dflt, labels); @@ -180,31 +199,37 @@ public class MethodAnalyzer implements IMethodProbesVisitor { } } + @Override public void visitMultiANewArrayInsn(final String desc, final int dims) { visitInsn(); } + @Override public void visitProbe(final int probeId) { addProbe(probeId); lastInsn = null; } + @Override public void visitJumpInsnWithProbe(final int opcode, final Label label, final int probeId) { visitInsn(); addProbe(probeId); } + @Override public void visitInsnWithProbe(final int opcode, final int probeId) { visitInsn(); addProbe(probeId); } + @Override public void visitTableSwitchInsnWithProbes(final int min, final int max, final Label dflt, final Label[] labels) { visitSwitchInsnWithProbes(dflt, labels); } + @Override public void visitLookupSwitchInsnWithProbes(final Label dflt, final int[] keys, final Label[] labels) { visitSwitchInsnWithProbes(dflt, labels); @@ -233,6 +258,7 @@ public class MethodAnalyzer implements IMethodProbesVisitor { } } + @Override public void visitEnd() { // Wire jumps: for (final Jump j : jumps) { @@ -256,51 +282,6 @@ public class MethodAnalyzer implements IMethodProbesVisitor { coverage.incrementMethodCounter(); } - public AnnotationVisitor visitAnnotationDefault() { - // nothing to do - return null; - } - - public AnnotationVisitor visitAnnotation(final String desc, - final boolean visible) { - // nothing to do - return null; - } - - public AnnotationVisitor visitParameterAnnotation(final int parameter, - final String desc, final boolean visible) { - // nothing to do - return null; - } - - public void visitAttribute(final Attribute attr) { - // nothing to do - } - - public void visitCode() { - // nothing to do - } - - public void visitTryCatchBlock(final Label start, final Label end, - final Label handler, final String type) { - // nothing to do - } - - public void visitFrame(final int type, final int nLocal, - final Object[] local, final int nStack, final Object[] stack) { - // nothing to do - } - - public void visitLocalVariable(final String name, final String desc, - final String signature, final Label start, final Label end, - final int index) { - // nothing to do - } - - public void visitMaxs(final int maxStack, final int maxLocals) { - // nothing to do - } - private void addProbe(final int probeId) { lastInsn.addBranch(); if (executionData != null && executionData[probeId]) { |