aboutsummaryrefslogtreecommitdiff
path: root/org.jacoco.core/src/org/jacoco/core/internal/analysis
diff options
context:
space:
mode:
Diffstat (limited to 'org.jacoco.core/src/org/jacoco/core/internal/analysis')
-rw-r--r--org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinWhenStringFilter.java8
-rw-r--r--org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/StringSwitchEcjFilter.java7
2 files changed, 10 insertions, 5 deletions
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 861c7bfb..b8694c24 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
@@ -21,6 +21,7 @@ import org.objectweb.asm.tree.LabelNode;
import org.objectweb.asm.tree.LookupSwitchInsnNode;
import org.objectweb.asm.tree.MethodNode;
import org.objectweb.asm.tree.TableSwitchInsnNode;
+import org.objectweb.asm.tree.VarInsnNode;
/**
* Filters bytecode that Kotlin compiler generates for <code>when</code>
@@ -41,15 +42,16 @@ public final class KotlinWhenStringFilter implements IFilter {
public void match(final AbstractInsnNode start,
final IFilterOutput output) {
+ if (Opcodes.ALOAD != start.getOpcode()) {
+ return;
+ }
cursor = start;
-
- nextIsVar(Opcodes.ASTORE, "s");
- nextIsVar(Opcodes.ALOAD, "s");
nextIsInvokeVirtual("java/lang/String", "hashCode");
nextIsSwitch();
if (cursor == null) {
return;
}
+ vars.put("s", (VarInsnNode) start);
final AbstractInsnNode s = cursor;
final int hashCodes;
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 d4be1819..6c52d3b9 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
@@ -21,6 +21,7 @@ import org.objectweb.asm.tree.LabelNode;
import org.objectweb.asm.tree.LookupSwitchInsnNode;
import org.objectweb.asm.tree.MethodNode;
import org.objectweb.asm.tree.TableSwitchInsnNode;
+import org.objectweb.asm.tree.VarInsnNode;
/**
* Filters code that is generated by ECJ for a <code>switch</code> statement
@@ -41,14 +42,16 @@ public final class StringSwitchEcjFilter implements IFilter {
public void match(final AbstractInsnNode start,
final IFilterOutput output) {
+ if (Opcodes.ASTORE != start.getOpcode()) {
+ return;
+ }
cursor = start;
-
- nextIsVar(Opcodes.ASTORE, "s");
nextIsInvokeVirtual("java/lang/String", "hashCode");
nextIsSwitch();
if (cursor == null) {
return;
}
+ vars.put("s", (VarInsnNode) start);
final AbstractInsnNode s = cursor;
final int hashCodes;