1*33edd672SMark// SPDX-License-Identifier: EPL-2.0 and Apache-2.0 2*33edd672SMark// These patches apply to JaCoCo (https://github.com/jacoco/jacoco) and are hereby made available under the terms of the 3*33edd672SMark// Eclipse Public License 2.0 available at: 4*33edd672SMark// http://www.eclipse.org/legal/epl-2.0 5*33edd672SMarkdiff --git org.jacoco.core/src/org/jacoco/core/analysis/Analyzer.java org.jacoco.core/src/org/jacoco/core/analysis/Analyzer.java 6*33edd672SMarkindex 0cc06ada..b65efb03 100644 7*33edd672SMark--- org.jacoco.core/src/org/jacoco/core/analysis/Analyzer.java 8*33edd672SMark+++ org.jacoco.core/src/org/jacoco/core/analysis/Analyzer.java 9*33edd672SMark@@ -31,6 +31,8 @@ import org.jacoco.core.internal.analysis.ClassCoverageImpl; 10*33edd672SMark import org.jacoco.core.internal.analysis.StringPool; 11*33edd672SMark import org.jacoco.core.internal.data.CRC64; 12*33edd672SMark import org.jacoco.core.internal.flow.ClassProbesAdapter; 13*33edd672SMark+import org.jacoco.core.internal.flow.ClassProbesVisitor; 14*33edd672SMark+import org.jacoco.core.internal.flow.IClassProbesAdapterFactory; 15*33edd672SMark import org.jacoco.core.internal.instr.InstrSupport; 16*33edd672SMark import org.objectweb.asm.ClassReader; 17*33edd672SMark import org.objectweb.asm.ClassVisitor; 18*33edd672SMark@@ -52,6 +54,8 @@ public class Analyzer { 19*33edd672SMark 20*33edd672SMark private final StringPool stringPool; 21*33edd672SMark 22*33edd672SMark+ private final IClassProbesAdapterFactory classProbesAdapterFactory; 23*33edd672SMark+ 24*33edd672SMark /** 25*33edd672SMark * Creates a new analyzer reporting to the given output. 26*33edd672SMark * 27*33edd672SMark@@ -63,9 +67,21 @@ public class Analyzer { 28*33edd672SMark */ 29*33edd672SMark public Analyzer(final ExecutionDataStore executionData, 30*33edd672SMark final ICoverageVisitor coverageVisitor) { 31*33edd672SMark+ this(executionData, coverageVisitor, new IClassProbesAdapterFactory() { 32*33edd672SMark+ @Override 33*33edd672SMark+ public ClassProbesAdapter makeClassProbesAdapter(ClassProbesVisitor cv, boolean trackFrames) { 34*33edd672SMark+ return new ClassProbesAdapter(cv, trackFrames); 35*33edd672SMark+ }; 36*33edd672SMark+ }); 37*33edd672SMark+ } 38*33edd672SMark+ 39*33edd672SMark+ public Analyzer(final ExecutionDataStore executionData, 40*33edd672SMark+ final ICoverageVisitor coverageVisitor, 41*33edd672SMark+ final IClassProbesAdapterFactory classProbesAdapterFactory) { 42*33edd672SMark this.executionData = executionData; 43*33edd672SMark this.coverageVisitor = coverageVisitor; 44*33edd672SMark this.stringPool = new StringPool(); 45*33edd672SMark+ this.classProbesAdapterFactory = classProbesAdapterFactory; 46*33edd672SMark } 47*33edd672SMark 48*33edd672SMark /** 49*33edd672SMark@@ -99,7 +115,7 @@ public class Analyzer { 50*33edd672SMark coverageVisitor.visitCoverage(coverage); 51*33edd672SMark } 52*33edd672SMark }; 53*33edd672SMark- return new ClassProbesAdapter(analyzer, false); 54*33edd672SMark+ return classProbesAdapterFactory.makeClassProbesAdapter(analyzer, false); 55*33edd672SMark } 56*33edd672SMark 57*33edd672SMark private void analyzeClass(final byte[] source) { 58*33edd672SMarkdiff --git org.jacoco.core/src/org/jacoco/core/internal/flow/IClassProbesAdapterFactory.java org.jacoco.core/src/org/jacoco/core/internal/flow/IClassProbesAdapterFactory.java 59*33edd672SMarknew file mode 100644 60*33edd672SMarkindex 00000000..45fc2709 61*33edd672SMark--- /dev/null 62*33edd672SMark+++ org.jacoco.core/src/org/jacoco/core/internal/flow/IClassProbesAdapterFactory.java 63*33edd672SMark@@ -0,0 +1,6 @@ 64*33edd672SMark+package org.jacoco.core.internal.flow; 65*33edd672SMark+ 66*33edd672SMark+public interface IClassProbesAdapterFactory { 67*33edd672SMark+ ClassProbesAdapter makeClassProbesAdapter(ClassProbesVisitor cv, 68*33edd672SMark+ boolean trackFrames); 69*33edd672SMark+} 70