From d49447aae32e1794dfc5d5e31c848d57e27d17a7 Mon Sep 17 00:00:00 2001
From: Liam Miller-Cushon <cushon@google.com>
Date: Thu, 28 Jan 2021 22:18:36 -0800
Subject: [PATCH 2/2] Partially revert 40c8fd89b0bc0c36e30e6a12f5b42d9da13aca86

See b/177687001#comment5.
---
 .../org/jacoco/agent/rt/internal/Agent.java   |  9 +++----
 .../org/jacoco/agent/rt/internal/Offline.java | 24 +++++++------------
 2 files changed, 11 insertions(+), 22 deletions(-)

diff --git a/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/Agent.java b/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/Agent.java
index efb74846..bba5dd1d 100644
--- a/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/Agent.java
+++ b/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/Agent.java
@@ -44,11 +44,8 @@ public class Agent implements IAgent {
 	 * @param options
 	 *            options to configure the instance
 	 * @return global instance
-	 * @throws Exception
-	 *             in case something cannot be initialized
 	 */
-	public static synchronized Agent getInstance(final AgentOptions options)
-			throws Exception {
+	public static synchronized Agent getInstance(final AgentOptions options) {
 		if (singleton == null) {
 			final Agent agent = new Agent(options, IExceptionLogger.SYSTEM_ERR);
 			agent.startup();
@@ -117,8 +114,9 @@ public class Agent implements IAgent {
 	 *
 	 * @throws Exception
 	 *             in case something cannot be initialized
+	 *
 	 */
-	public void startup() throws Exception {
+	public void startup() {
 		try {
 			String sessionId = options.getSessionId();
 			if (sessionId == null) {
@@ -132,7 +130,6 @@ public class Agent implements IAgent {
 			}
 		} catch (final Exception e) {
 			logger.logExeption(e);
-			throw e;
 		}
 	}
 
diff --git a/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/Offline.java b/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/Offline.java
index 476c4e2b..70bb4e8a 100644
--- a/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/Offline.java
+++ b/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/Offline.java
@@ -23,25 +23,17 @@ import org.jacoco.core.runtime.RuntimeData;
  */
 public final class Offline {
 
+	private static final RuntimeData DATA;
 	private static final String CONFIG_RESOURCE = "/jacoco-agent.properties";
 
-	private Offline() {
-		// no instances
+	static {
+		final Properties config = ConfigLoader.load(CONFIG_RESOURCE,
+				System.getProperties());
+		DATA = Agent.getInstance(new AgentOptions(config)).getData();
 	}
 
-	private static RuntimeData data;
-
-	private static synchronized RuntimeData getRuntimeData() {
-		if (data == null) {
-			final Properties config = ConfigLoader.load(CONFIG_RESOURCE,
-					System.getProperties());
-			try {
-				data = Agent.getInstance(new AgentOptions(config)).getData();
-			} catch (final Exception e) {
-				throw new RuntimeException("Failed to initialize JaCoCo.", e);
-			}
-		}
-		return data;
+	private Offline() {
+		// no instances
 	}
 
 	/**
@@ -57,7 +49,7 @@ public final class Offline {
 	 */
 	public static boolean[] getProbes(final long classid,
 			final String classname, final int probecount) {
-		return getRuntimeData()
+		return DATA
 				.getExecutionData(Long.valueOf(classid), classname, probecount)
 				.getProbes();
 	}
-- 
2.32.0.93.g670b81a890-goog

