xref: /aosp_15_r20/external/jazzer-api/third_party/jacoco-make-probe-adapter-subclassable.patch (revision 33edd6723662ea34453766bfdca85dbfdd5342b8)
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