summaryrefslogtreecommitdiffstats
path: root/jack-tests
diff options
context:
space:
mode:
authorJean-Marie Henaff <jmhenaff@google.com>2015-03-10 16:36:57 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2015-03-10 16:36:58 +0000
commit1526a9c3fb3cd9aaf08c61b7c27f5dc2ecaba57d (patch)
tree1a410a2e0bedce2ee3622e71545b639afe7756ef /jack-tests
parentbf48e2963f127638b2d7f2fc266b9176b51d437c (diff)
parentbaa62033b31c8da1ef958e70bbc7bf003ba83193 (diff)
downloadtoolchain_jack-1526a9c3fb3cd9aaf08c61b7c27f5dc2ecaba57d.zip
toolchain_jack-1526a9c3fb3cd9aaf08c61b7c27f5dc2ecaba57d.tar.gz
toolchain_jack-1526a9c3fb3cd9aaf08c61b7c27f5dc2ecaba57d.tar.bz2
Merge "Instantiate JackConfing in same ClassLoader for API test Toolchain" into ub-jack
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);