summaryrefslogtreecommitdiffstats
path: root/jack/src
diff options
context:
space:
mode:
authorJean-Philippe Lesot <jplesot@google.com>2015-06-08 08:41:24 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2015-06-08 08:41:25 +0000
commit8db67e8da887d7d6c16a273232add1c7b8cb4c2e (patch)
treea694f1d2d47d66aa7d3fa0f59b1cf7709a501f9d /jack/src
parent680315b2356968f93fc04e64e7f2f5c782f96357 (diff)
parent59f50017709af1cfa1bcc6d3bd5e409f9436ede2 (diff)
downloadtoolchain_jack-8db67e8da887d7d6c16a273232add1c7b8cb4c2e.tar.gz
toolchain_jack-8db67e8da887d7d6c16a273232add1c7b8cb4c2e.tar.bz2
toolchain_jack-8db67e8da887d7d6c16a273232add1c7b8cb4c2e.zip
Merge "Fix bugs when using incremental with --output-jack" into ub-jack-brest
Diffstat (limited to 'jack/src')
-rw-r--r--jack/src/com/android/jack/incremental/CommonFilter.java40
-rw-r--r--jack/src/com/android/jack/incremental/IncrementalInputFilter.java42
-rw-r--r--jack/src/com/android/jack/incremental/NoInputFilter.java12
3 files changed, 35 insertions, 59 deletions
diff --git a/jack/src/com/android/jack/incremental/CommonFilter.java b/jack/src/com/android/jack/incremental/CommonFilter.java
index 381f6e34..ff1c1920 100644
--- a/jack/src/com/android/jack/incremental/CommonFilter.java
+++ b/jack/src/com/android/jack/incremental/CommonFilter.java
@@ -52,6 +52,7 @@ import com.android.sched.util.location.FileLocation;
import com.android.sched.util.log.LoggerFactory;
import com.android.sched.vfs.Container;
import com.android.sched.vfs.PrefixedFS;
+import com.android.sched.vfs.ReadWriteZipFS;
import com.android.sched.vfs.ReadZipFS;
import com.android.sched.vfs.VFS;
import com.android.sched.vfs.VPath;
@@ -136,7 +137,27 @@ public abstract class CommonFilter {
@Nonnull
private static final Logger logger = LoggerFactory.getLogger();
+ @Nonnull
+ protected final VFS incrementalVfs;
+
+ @Nonnull
+ private final OutputJackLibrary outputJackLibrary;
+
public CommonFilter() {
+ if (ThreadConfig.get(Options.GENERATE_LIBRARY_FROM_INCREMENTAL_FOLDER).booleanValue()) {
+ VFS dirVFS = ThreadConfig.get(Options.LIBRARY_OUTPUT_DIR);
+ incrementalVfs = ThreadConfig.get(Options.LIBRARY_OUTPUT_ZIP);
+ ((ReadWriteZipFS) incrementalVfs).setWorkVFS(dirVFS);
+ } else {
+ if (ThreadConfig.get(Options.LIBRARY_OUTPUT_CONTAINER_TYPE) == Container.DIR) {
+ incrementalVfs = ThreadConfig.get(Options.LIBRARY_OUTPUT_DIR);
+ } else {
+ incrementalVfs = ThreadConfig.get(Options.LIBRARY_OUTPUT_ZIP);
+ }
+ }
+
+ outputJackLibrary = JackLibraryFactory.getOutputLibrary(incrementalVfs,
+ Jack.getEmitterId(), Jack.getVersion().getVerboseVersion());
}
@Nonnull
@@ -177,21 +198,6 @@ public abstract class CommonFilter {
}
}
- @Nonnull
- protected OutputJackLibrary getOutputJackLibraryFromVfs() {
- VFS vfs;
- Container containerType = ThreadConfig.get(Options.LIBRARY_OUTPUT_CONTAINER_TYPE);
-
- if (containerType == Container.DIR) {
- vfs = ThreadConfig.get(Options.LIBRARY_OUTPUT_DIR);
- } else {
- vfs = ThreadConfig.get(Options.LIBRARY_OUTPUT_ZIP);
- }
-
- return (JackLibraryFactory.getOutputLibrary(vfs, Jack.getEmitterId(), Jack.getVersion()
- .getVerboseVersion()));
- }
-
@SuppressWarnings("unused")
@Nonnull
protected List<InputLibrary> getInputLibrariesFromFiles(
@@ -293,4 +299,8 @@ public abstract class CommonFilter {
}
}
+ @Nonnull
+ public OutputJackLibrary getOutputJackLibrary() {
+ return outputJackLibrary;
+ }
}
diff --git a/jack/src/com/android/jack/incremental/IncrementalInputFilter.java b/jack/src/com/android/jack/incremental/IncrementalInputFilter.java
index 98eb61c7..c45e1fab 100644
--- a/jack/src/com/android/jack/incremental/IncrementalInputFilter.java
+++ b/jack/src/com/android/jack/incremental/IncrementalInputFilter.java
@@ -53,8 +53,6 @@ import com.android.sched.util.log.stats.Counter;
import com.android.sched.util.log.stats.CounterImpl;
import com.android.sched.util.log.stats.StatisticId;
import com.android.sched.vfs.InputVFile;
-import com.android.sched.vfs.ReadWriteZipFS;
-import com.android.sched.vfs.VFS;
import com.android.sched.vfs.VPath;
import java.io.File;
@@ -153,11 +151,9 @@ public class IncrementalInputFilter extends CommonFilter implements InputFilter
@Nonnull
private final File incrementalFolder;
- @Nonnull
- private final OutputJackLibrary outputJackLibrary;
-
public IncrementalInputFilter(@Nonnull Options options) {
Config config = ThreadConfig.getConfig();
+
incrementalFolder = new File(config.get(Options.LIBRARY_OUTPUT_DIR).getPath());
this.options = options;
@@ -199,8 +195,6 @@ public class IncrementalInputFilter extends CommonFilter implements InputFilter
session.getLibraryDependencies().addLibrariesOnClasspath(librariesOnClasspathFromCommandLine);
filesToRecompile = getInternalFileNamesToCompile();
- outputJackLibrary = createOutputJackLibrary();
-
if (config.get(INCREMENTAL_LOG).booleanValue()) {
IncrementalLogWriter incLog;
try {
@@ -357,7 +351,7 @@ public class IncrementalInputFilter extends CommonFilter implements InputFilter
@CheckForNull
private InputJackLibrary getIncrementalInternalLibrary() {
try {
- return JackLibraryFactory.getInputLibrary(ThreadConfig.get(Options.LIBRARY_OUTPUT_DIR));
+ return JackLibraryFactory.getInputLibrary(incrementalVfs);
} catch (NotJackLibraryException e) {
// No incremental internal library, it is the first compilation
} catch (LibraryVersionException e) {
@@ -463,33 +457,17 @@ public class IncrementalInputFilter extends CommonFilter implements InputFilter
throw new JackAbortException(e);
}
- inputLibraries.add(0, incrementalInputLibrary);
-
- return inputLibraries;
- }
-
- @Nonnull
- private OutputJackLibrary createOutputJackLibrary() {
-
if (ThreadConfig.get(Options.GENERATE_LIBRARY_FROM_INCREMENTAL_FOLDER).booleanValue()) {
- VFS dirVFS = ThreadConfig.get(Options.LIBRARY_OUTPUT_DIR);
- ReadWriteZipFS zipVFS = (ReadWriteZipFS) ThreadConfig.get(Options.LIBRARY_OUTPUT_ZIP);
- zipVFS.setWorkVFS(dirVFS);
- return JackLibraryFactory.getOutputLibrary(zipVFS, Jack.getEmitterId(),
- Jack.getVersion().getVerboseVersion());
+ // Incremental folder already contains dex files of imported libraries, thus import only
+ // incremental folder.
+ inputLibraries.clear();
+ inputLibraries.add(incrementalInputLibrary);
+ return inputLibraries;
} else {
- if (incrementalInputLibrary == null) {
- return getOutputJackLibraryFromVfs();
- } else {
- return (JackLibraryFactory.getOutputLibrary(ThreadConfig.get(Options.LIBRARY_OUTPUT_DIR),
- Jack.getEmitterId(), Jack.getVersion().getVerboseVersion()));
- }
+ // Incremental folder does not contains dex files, thus add it into imported libraries
+ inputLibraries.add(0, incrementalInputLibrary);
}
- }
- @Override
- @Nonnull
- public OutputJackLibrary getOutputJackLibrary() {
- return outputJackLibrary;
+ return inputLibraries;
}
}
diff --git a/jack/src/com/android/jack/incremental/NoInputFilter.java b/jack/src/com/android/jack/incremental/NoInputFilter.java
index 3813e89f..284123e1 100644
--- a/jack/src/com/android/jack/incremental/NoInputFilter.java
+++ b/jack/src/com/android/jack/incremental/NoInputFilter.java
@@ -23,7 +23,6 @@ import com.android.jack.analysis.dependency.library.LibraryDependencies;
import com.android.jack.analysis.dependency.type.TypeDependencies;
import com.android.jack.ir.ast.JSession;
import com.android.jack.library.InputLibrary;
-import com.android.jack.library.OutputJackLibrary;
import com.android.sched.util.codec.ImplementationName;
import com.android.sched.util.config.ThreadConfig;
@@ -50,9 +49,6 @@ public class NoInputFilter extends CommonFilter implements InputFilter {
@Nonnull
private final List<? extends InputLibrary> librariesOnClasspathFromCommandLine;
- @Nonnull
- private final OutputJackLibrary outputJackLibrary;
-
public NoInputFilter(@Nonnull Options options) {
this.options = options;
this.fileNamesToCompile = getJavaFileNamesSpecifiedOnCommandLine(options);
@@ -67,8 +63,6 @@ public class NoInputFilter extends CommonFilter implements InputFilter {
LibraryDependencies libraryDependencies = session.getLibraryDependencies();
libraryDependencies.addImportedLibraries(importedLibrariesFromCommandLine);
libraryDependencies.addLibrariesOnClasspath(librariesOnClasspathFromCommandLine);
-
- outputJackLibrary = getOutputJackLibraryFromVfs();
}
@Override
@@ -88,10 +82,4 @@ public class NoInputFilter extends CommonFilter implements InputFilter {
public List<? extends InputLibrary> getImportedLibrary() {
return importedLibrariesFromCommandLine;
}
-
- @Override
- @Nonnull
- public OutputJackLibrary getOutputJackLibrary() {
- return outputJackLibrary;
- }
}