aboutsummaryrefslogtreecommitdiffstats
path: root/org.jacoco.core/src/org/jacoco
diff options
context:
space:
mode:
Diffstat (limited to 'org.jacoco.core/src/org/jacoco')
-rw-r--r--org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/AbstractMatcher.java44
-rw-r--r--org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/EnumEmptyConstructorFilter.java3
-rw-r--r--org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinCoroutineFilter.java16
-rw-r--r--org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinLateinitFilter.java7
-rw-r--r--org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinNotNullOperatorFilter.java3
-rw-r--r--org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinUnsafeCastOperatorFilter.java4
-rw-r--r--org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinWhenFilter.java2
-rw-r--r--org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinWhenStringFilter.java6
-rw-r--r--org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/PrivateEmptyNoArgConstructorFilter.java3
-rw-r--r--org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/StringSwitchEcjFilter.java6
-rw-r--r--org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/StringSwitchJavacFilter.java6
-rw-r--r--org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/TryWithResourcesEcjFilter.java3
-rw-r--r--org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/TryWithResourcesJavac11Filter.java3
-rw-r--r--org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/TryWithResourcesJavacFilter.java3
14 files changed, 47 insertions, 62 deletions
diff --git a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/AbstractMatcher.java b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/AbstractMatcher.java
index c27c4e92..38860a83 100644
--- a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/AbstractMatcher.java
+++ b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/AbstractMatcher.java
@@ -57,49 +57,19 @@ abstract class AbstractMatcher {
}
/**
- * Moves {@link #cursor} to next instruction if it is
- * <code>INVOKESPECIAL &lt;init&gt;</code> with given owner and descriptor,
- * otherwise sets it to <code>null</code>.
- */
- final void nextIsInvokeSuper(final String owner, final String desc) {
- nextIs(Opcodes.INVOKESPECIAL);
- MethodInsnNode m = (MethodInsnNode) cursor;
- if (m != null && owner.equals(m.owner) && "<init>".equals(m.name)
- && desc.equals(m.desc)) {
- return;
- }
- cursor = null;
- }
-
- /**
- * Moves {@link #cursor} to next instruction if it is
- * <code>INVOKEVIRTUAL</code> with given owner and name, otherwise sets it
- * to <code>null</code>.
- */
- final void nextIsInvokeVirtual(final String owner, final String name) {
- nextIs(Opcodes.INVOKEVIRTUAL);
- if (cursor == null) {
- return;
- }
- final MethodInsnNode m = (MethodInsnNode) cursor;
- if (owner.equals(m.owner) && name.equals(m.name)) {
- return;
- }
- cursor = null;
- }
-
- /**
- * Moves {@link #cursor} to next instruction if it is
- * <code>INVOKESTATIC</code> with given owner and name, otherwise sets it to
+ * Moves {@link #cursor} to next instruction if it is {@link MethodInsnNode}
+ * with given opcode, owner, name and descriptor, otherwise sets it to
* <code>null</code>.
*/
- final void nextIsInvokeStatic(final String owner, final String name) {
- nextIs(Opcodes.INVOKESTATIC);
+ final void nextIsInvoke(final int opcode, final String owner,
+ final String name, final String descriptor) {
+ nextIs(opcode);
if (cursor == null) {
return;
}
final MethodInsnNode m = (MethodInsnNode) cursor;
- if (owner.equals(m.owner) && name.equals(m.name)) {
+ if (owner.equals(m.owner) && name.equals(m.name)
+ && descriptor.equals(m.desc)) {
return;
}
cursor = null;
diff --git a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/EnumEmptyConstructorFilter.java b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/EnumEmptyConstructorFilter.java
index 8b7096a9..4a39d1e8 100644
--- a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/EnumEmptyConstructorFilter.java
+++ b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/EnumEmptyConstructorFilter.java
@@ -51,7 +51,8 @@ public final class EnumEmptyConstructorFilter implements IFilter {
firstIsALoad0(methodNode);
nextIs(Opcodes.ALOAD);
nextIs(Opcodes.ILOAD);
- nextIsInvokeSuper(ENUM_TYPE, CONSTRUCTOR_DESC);
+ nextIsInvoke(Opcodes.INVOKESPECIAL, ENUM_TYPE, CONSTRUCTOR_NAME,
+ CONSTRUCTOR_DESC);
nextIs(Opcodes.RETURN);
return cursor != null;
}
diff --git a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinCoroutineFilter.java b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinCoroutineFilter.java
index 2e381325..66d450a3 100644
--- a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinCoroutineFilter.java
+++ b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinCoroutineFilter.java
@@ -49,16 +49,18 @@ public final class KotlinCoroutineFilter implements IFilter {
private void match(final MethodNode methodNode,
final IFilterOutput output) {
cursor = methodNode.instructions.getFirst();
- nextIsInvokeStatic("kotlin/coroutines/intrinsics/IntrinsicsKt",
- "getCOROUTINE_SUSPENDED");
+ nextIsInvoke(Opcodes.INVOKESTATIC,
+ "kotlin/coroutines/intrinsics/IntrinsicsKt",
+ "getCOROUTINE_SUSPENDED", "()Ljava/lang/Object;");
if (cursor == null) {
cursor = skipNonOpcodes(methodNode.instructions.getFirst());
nextIsCreateStateInstance();
- nextIsInvokeStatic("kotlin/coroutines/intrinsics/IntrinsicsKt",
- "getCOROUTINE_SUSPENDED");
+ nextIsInvoke(Opcodes.INVOKESTATIC,
+ "kotlin/coroutines/intrinsics/IntrinsicsKt",
+ "getCOROUTINE_SUSPENDED", "()Ljava/lang/Object;");
}
nextIsVar(Opcodes.ASTORE, "COROUTINE_SUSPENDED");
@@ -127,7 +129,8 @@ public final class KotlinCoroutineFilter implements IFilter {
"call to 'resume' before 'invoke' with coroutine")) {
return;
}
- nextIsInvokeSuper("java/lang/IllegalStateException",
+ nextIsInvoke(Opcodes.INVOKESPECIAL,
+ "java/lang/IllegalStateException", "<init>",
"(Ljava/lang/String;)V");
nextIs(Opcodes.ATHROW);
if (cursor == null) {
@@ -142,7 +145,8 @@ public final class KotlinCoroutineFilter implements IFilter {
private void nextIsThrowOnFailure() {
final AbstractInsnNode c = cursor;
- nextIsInvokeStatic("kotlin/ResultKt", "throwOnFailure");
+ nextIsInvoke(Opcodes.INVOKESTATIC, "kotlin/ResultKt",
+ "throwOnFailure", "(Ljava/lang/Object;)V");
if (cursor == null) {
cursor = c;
// Before resolution of
diff --git a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinLateinitFilter.java b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinLateinitFilter.java
index 44805984..12fe926c 100644
--- a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinLateinitFilter.java
+++ b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinLateinitFilter.java
@@ -21,9 +21,6 @@ import org.objectweb.asm.tree.MethodNode;
*/
public class KotlinLateinitFilter implements IFilter {
- private final static String OWNER = "kotlin/jvm/internal/Intrinsics";
- private final static String NAME = "throwUninitializedPropertyAccessException";
-
public void filter(final MethodNode methodNode,
final IFilterContext context, final IFilterOutput output) {
final Matcher matcher = new Matcher();
@@ -43,7 +40,9 @@ public class KotlinLateinitFilter implements IFilter {
cursor = start;
nextIs(Opcodes.LDC);
- nextIsInvokeStatic(OWNER, NAME);
+ nextIsInvoke(Opcodes.INVOKESTATIC, "kotlin/jvm/internal/Intrinsics",
+ "throwUninitializedPropertyAccessException",
+ "(Ljava/lang/String;)V");
if (cursor != null) {
output.ignore(start, cursor);
diff --git a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinNotNullOperatorFilter.java b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinNotNullOperatorFilter.java
index a5a1b5d5..4dd223a3 100644
--- a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinNotNullOperatorFilter.java
+++ b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinNotNullOperatorFilter.java
@@ -37,7 +37,8 @@ public final class KotlinNotNullOperatorFilter implements IFilter {
return;
}
cursor = start;
- nextIsInvokeStatic("kotlin/jvm/internal/Intrinsics", "throwNpe");
+ nextIsInvoke(Opcodes.INVOKESTATIC, "kotlin/jvm/internal/Intrinsics",
+ "throwNpe", "()V");
if (cursor == null) {
return;
}
diff --git a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinUnsafeCastOperatorFilter.java b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinUnsafeCastOperatorFilter.java
index 97b6835f..c298e945 100644
--- a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinUnsafeCastOperatorFilter.java
+++ b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinUnsafeCastOperatorFilter.java
@@ -54,8 +54,8 @@ public final class KotlinUnsafeCastOperatorFilter implements IFilter {
.startsWith("null cannot be cast to non-null type"))) {
return;
}
- nextIsInvokeSuper(KOTLIN_TYPE_CAST_EXCEPTION,
- "(Ljava/lang/String;)V");
+ nextIsInvoke(Opcodes.INVOKESPECIAL, KOTLIN_TYPE_CAST_EXCEPTION,
+ "<init>", "(Ljava/lang/String;)V");
nextIs(Opcodes.ATHROW);
if (cursor == null) {
return;
diff --git a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinWhenFilter.java b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinWhenFilter.java
index 54931669..a229aa04 100644
--- a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinWhenFilter.java
+++ b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinWhenFilter.java
@@ -52,7 +52,7 @@ public final class KotlinWhenFilter implements IFilter {
nextIsType(Opcodes.NEW, EXCEPTION);
nextIs(Opcodes.DUP);
- nextIsInvokeSuper(EXCEPTION, "()V");
+ nextIsInvoke(Opcodes.INVOKESPECIAL, EXCEPTION, "<init>", "()V");
nextIs(Opcodes.ATHROW);
for (AbstractInsnNode i = cursor; i != null; i = i.getPrevious()) {
diff --git a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinWhenStringFilter.java b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinWhenStringFilter.java
index 497b4b52..fcccb550 100644
--- a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinWhenStringFilter.java
+++ b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinWhenStringFilter.java
@@ -46,7 +46,8 @@ public final class KotlinWhenStringFilter implements IFilter {
return;
}
cursor = start;
- nextIsInvokeVirtual("java/lang/String", "hashCode");
+ nextIsInvoke(Opcodes.INVOKEVIRTUAL, "java/lang/String", "hashCode",
+ "()I");
nextIsSwitch();
if (cursor == null) {
return;
@@ -73,7 +74,8 @@ public final class KotlinWhenStringFilter implements IFilter {
while (true) {
nextIsVar(Opcodes.ALOAD, "s");
nextIs(Opcodes.LDC);
- nextIsInvokeVirtual("java/lang/String", "equals");
+ nextIsInvoke(Opcodes.INVOKEVIRTUAL, "java/lang/String",
+ "equals", "(Ljava/lang/Object;)Z");
// jump to next comparison or default case
nextIs(Opcodes.IFEQ);
final JumpInsnNode jump = (JumpInsnNode) cursor;
diff --git a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/PrivateEmptyNoArgConstructorFilter.java b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/PrivateEmptyNoArgConstructorFilter.java
index 5406aa36..236ef712 100644
--- a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/PrivateEmptyNoArgConstructorFilter.java
+++ b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/PrivateEmptyNoArgConstructorFilter.java
@@ -37,7 +37,8 @@ public final class PrivateEmptyNoArgConstructorFilter implements IFilter {
private boolean match(final MethodNode methodNode,
final String superClassName) {
firstIsALoad0(methodNode);
- nextIsInvokeSuper(superClassName, CONSTRUCTOR_DESC);
+ nextIsInvoke(Opcodes.INVOKESPECIAL, superClassName,
+ CONSTRUCTOR_NAME, CONSTRUCTOR_DESC);
nextIs(Opcodes.RETURN);
return cursor != null;
}
diff --git a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/StringSwitchEcjFilter.java b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/StringSwitchEcjFilter.java
index b0306662..e0aba35d 100644
--- a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/StringSwitchEcjFilter.java
+++ b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/StringSwitchEcjFilter.java
@@ -46,7 +46,8 @@ public final class StringSwitchEcjFilter implements IFilter {
return;
}
cursor = start;
- nextIsInvokeVirtual("java/lang/String", "hashCode");
+ nextIsInvoke(Opcodes.INVOKEVIRTUAL, "java/lang/String", "hashCode",
+ "()I");
nextIsSwitch();
if (cursor == null) {
return;
@@ -73,7 +74,8 @@ public final class StringSwitchEcjFilter implements IFilter {
while (true) {
nextIsVar(Opcodes.ALOAD, "s");
nextIs(Opcodes.LDC);
- nextIsInvokeVirtual("java/lang/String", "equals");
+ nextIsInvoke(Opcodes.INVOKEVIRTUAL, "java/lang/String",
+ "equals", "(Ljava/lang/Object;)Z");
// jump to case
nextIs(Opcodes.IFNE);
if (cursor == null) {
diff --git a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/StringSwitchJavacFilter.java b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/StringSwitchJavacFilter.java
index 36421ee4..3033d9bc 100644
--- a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/StringSwitchJavacFilter.java
+++ b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/StringSwitchJavacFilter.java
@@ -68,12 +68,14 @@ public final class StringSwitchJavacFilter implements IFilter {
// Even if expression is not a variable, its result will be
// precomputed before the previous two instructions:
nextIsVar(Opcodes.ALOAD, "s");
- nextIsInvokeVirtual("java/lang/String", "hashCode");
+ nextIsInvoke(Opcodes.INVOKEVIRTUAL, "java/lang/String", "hashCode",
+ "()I");
next();
while (true) {
nextIsVar(Opcodes.ALOAD, "s");
nextIs(Opcodes.LDC);
- nextIsInvokeVirtual("java/lang/String", "equals");
+ nextIsInvoke(Opcodes.INVOKEVIRTUAL, "java/lang/String",
+ "equals", "(Ljava/lang/Object;)Z");
// jump to next comparison or second switch
nextIs(Opcodes.IFEQ);
// ICONST, BIPUSH or SIPUSH
diff --git a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/TryWithResourcesEcjFilter.java b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/TryWithResourcesEcjFilter.java
index 158799f6..94dea561 100644
--- a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/TryWithResourcesEcjFilter.java
+++ b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/TryWithResourcesEcjFilter.java
@@ -200,7 +200,8 @@ public final class TryWithResourcesEcjFilter implements IFilter {
// "primaryExc.addSuppressed(suppressedExc)"
nextIsVar(Opcodes.ALOAD, "primaryExc");
nextIsVar(Opcodes.ALOAD, suppressedExc);
- nextIsInvokeVirtual("java/lang/Throwable", "addSuppressed");
+ nextIsInvoke(Opcodes.INVOKEVIRTUAL, "java/lang/Throwable",
+ "addSuppressed", "(Ljava/lang/Throwable;)V");
nextIsLabel(endLabel);
return cursor != null;
}
diff --git a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/TryWithResourcesJavac11Filter.java b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/TryWithResourcesJavac11Filter.java
index 464031a5..7a20f74f 100644
--- a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/TryWithResourcesJavac11Filter.java
+++ b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/TryWithResourcesJavac11Filter.java
@@ -77,7 +77,8 @@ public final class TryWithResourcesJavac11Filter implements IFilter {
nextIsVar(Opcodes.ASTORE, "t");
nextIsVar(Opcodes.ALOAD, "primaryExc");
nextIsVar(Opcodes.ALOAD, "t");
- nextIsInvokeVirtual("java/lang/Throwable", "addSuppressed"); // primaryExc.addSuppressed(t)
+ nextIsInvoke(Opcodes.INVOKEVIRTUAL, "java/lang/Throwable",
+ "addSuppressed", "(Ljava/lang/Throwable;)V"); // primaryExc.addSuppressed(t)
nextIsVar(Opcodes.ALOAD, "primaryExc");
nextIs(Opcodes.ATHROW);
if (cursor == null) {
diff --git a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/TryWithResourcesJavacFilter.java b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/TryWithResourcesJavacFilter.java
index e6762d6b..23ecb0e6 100644
--- a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/TryWithResourcesJavacFilter.java
+++ b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/TryWithResourcesJavacFilter.java
@@ -216,7 +216,8 @@ public final class TryWithResourcesJavacFilter implements IFilter {
// "primaryExc.addSuppressed(t)"
nextIsVar(Opcodes.ALOAD, "primaryExc");
nextIsVar(Opcodes.ALOAD, ctx + "t");
- nextIsInvokeVirtual("java/lang/Throwable", "addSuppressed");
+ nextIsInvoke(Opcodes.INVOKEVIRTUAL, "java/lang/Throwable",
+ "addSuppressed", "(Ljava/lang/Throwable;)V");
nextIs(Opcodes.GOTO);
// "r.close()"
nextIsClose();