summaryrefslogtreecommitdiffstats
path: root/jack-tests
diff options
context:
space:
mode:
authorJean-Marie Henaff <jmhenaff@google.com>2015-03-10 10:51:39 +0100
committerJean-Marie Henaff <jmhenaff@google.com>2015-03-10 17:31:38 +0100
commitbaa62033b31c8da1ef958e70bbc7bf003ba83193 (patch)
treebc46d0681cb9db0036ca9f770936898f76569860 /jack-tests
parent1fbd91032860c939488719e318edd183a59e9378 (diff)
downloadtoolchain_jack-baa62033b31c8da1ef958e70bbc7bf003ba83193.zip
toolchain_jack-baa62033b31c8da1ef958e70bbc7bf003ba83193.tar.gz
toolchain_jack-baa62033b31c8da1ef958e70bbc7bf003ba83193.tar.bz2
Instantiate JackConfing in same ClassLoader for API test Toolchain
Change-Id: Ib9a4b90a2706d408c961a60d3149d3ab0ad69b83
Diffstat (limited to 'jack-tests')
-rw-r--r--jack-tests/src/com/android/jack/test/toolchain/JackApiToolchainBase.java20
1 files changed, 12 insertions, 8 deletions
diff --git a/jack-tests/src/com/android/jack/test/toolchain/JackApiToolchainBase.java b/jack-tests/src/com/android/jack/test/toolchain/JackApiToolchainBase.java
index f008561..af2dd65 100644
--- a/jack-tests/src/com/android/jack/test/toolchain/JackApiToolchainBase.java
+++ b/jack-tests/src/com/android/jack/test/toolchain/JackApiToolchainBase.java
@@ -54,6 +54,9 @@ public abstract class JackApiToolchainBase extends JackBasedToolchain {
@Nonnull
protected VerbosityLevel verbosityLevel = VerbosityLevel.WARNING;
+ @CheckForNull
+ private static JackConfigProvider configProvider;
+
public String getCompilerCodeName() {
return compilerCodeName;
}
@@ -73,22 +76,23 @@ public abstract class JackApiToolchainBase extends JackBasedToolchain {
protected <T extends JackConfig> JackApiToolchainBase(@Nonnull File jackPrebuilt,
@Nonnull Class<T> jackConfig) {
try {
- ClassLoader loader;
- JackConfigProvider confProvider;
- loader = URLClassLoader.newInstance(new URL[] {jackPrebuilt.toURI().toURL()},
- JackApiToolchainBase.class.getClassLoader());
- Class<? extends JackConfigProvider> confProviderClass = Class.forName(
- JackConfigProvider.CLASS_NAME, true, loader).asSubclass(JackConfigProvider.class);
+ if (configProvider == null) {
+ ClassLoader classLoader = URLClassLoader.newInstance(
+ new URL[] {jackPrebuilt.toURI().toURL()}, JackApiToolchainBase.class.getClassLoader());
+ Class<? extends JackConfigProvider> confProviderClass = Class.forName(
+ JackConfigProvider.CLASS_NAME, true, classLoader).asSubclass(JackConfigProvider.class);
+ configProvider = confProviderClass.getConstructor().newInstance();
+ }
- JackConfigProvider configProvider = confProviderClass.getConstructor().newInstance();
+ assert configProvider != null;
compilerCodeName = configProvider.getCompilerCodeName();
compilerVersion = configProvider.getCompilerVersion();
compilerBuildId = configProvider.getCompilerBuildId();
compilerCodeBase = configProvider.getCompilerCodeBase();
- config = confProviderClass.getConstructor().newInstance().getConfig(jackConfig);
+ config = configProvider.getConfig(jackConfig);
} catch (ConfigNotSupportedException e) {
throw new TestConfigurationException("Jack API v01 not supported", e);