summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--jack/src/com/android/jack/Jack.java48
-rw-r--r--jack/src/com/android/jack/backend/jayce/JayceFileImporter.java17
-rw-r--r--jack/src/com/android/jack/backend/jayce/JayceSingleTypeWriter.java13
-rw-r--r--jack/src/com/android/jack/ir/ast/JSession.java14
-rw-r--r--jack/src/com/android/jack/jayce/FullPackageLoader.java7
-rw-r--r--jack/src/com/android/jack/jayce/JayceClassOrInterfaceLoader.java19
-rw-r--r--jack/src/com/android/jack/jayce/JayceMethodLoader.java9
-rw-r--r--jack/src/com/android/jack/jayce/JaycePackageLoader.java33
-rw-r--r--jack/src/com/android/jack/jayce/StructurePackageLoader.java7
-rw-r--r--jack/src/com/android/jack/library/HasInputLibrary.java28
-rw-r--r--jack/src/com/android/jack/library/InputJackLibrary.java40
-rw-r--r--jack/src/com/android/jack/library/InputLibrary.java30
-rw-r--r--jack/src/com/android/jack/library/OutputJackLibrary.java40
-rw-r--r--jack/src/com/android/jack/library/OutputLibrary.java30
14 files changed, 288 insertions, 47 deletions
diff --git a/jack/src/com/android/jack/Jack.java b/jack/src/com/android/jack/Jack.java
index 6b2e4de..13b2cf6 100644
--- a/jack/src/com/android/jack/Jack.java
+++ b/jack/src/com/android/jack/Jack.java
@@ -82,6 +82,8 @@ import com.android.jack.ir.formatter.TypePackageAndMethodFormatter;
import com.android.jack.ir.formatter.UserFriendlyFormatter;
import com.android.jack.ir.sourceinfo.SourceInfoCreation;
import com.android.jack.jayce.JaycePackageLoader;
+import com.android.jack.library.InputJackLibrary;
+import com.android.jack.library.OutputJackLibrary;
import com.android.jack.lookup.CommonTypes;
import com.android.jack.lookup.JPhantomLookup;
import com.android.jack.optimizations.ConstantRefinerAndVariableRemover;
@@ -262,9 +264,11 @@ import com.android.sched.util.log.Event;
import com.android.sched.util.log.LoggerFactory;
import com.android.sched.util.log.Tracer;
import com.android.sched.util.log.TracerFactory;
+import com.android.sched.vfs.Container;
import com.android.sched.vfs.DirectDir;
-import com.android.sched.vfs.InputVDir;
+import com.android.sched.vfs.InputRootVDir;
import com.android.sched.vfs.InputZipRootVDir;
+import com.android.sched.vfs.OutputVDir;
import org.antlr.runtime.RecognitionException;
@@ -314,7 +318,9 @@ public abstract class Jack {
"jack.internal.jayce.loader.classpath.policy",
"Hint on default load policy for classpath entries",
JaycePackageLoader.class)
- .addArgType(InputVDir.class).addArgType(JPhantomLookup.class).bypassAccessibility()
+ .addArgType(InputJackLibrary.class)
+ .addArgType(JPhantomLookup.class)
+ .bypassAccessibility()
.addDefaultValue("structure");
@Nonnull
@@ -323,7 +329,9 @@ public abstract class Jack {
"jack.internal.jayce.loader.import.policy",
"Hint on default load policy for import entries",
JaycePackageLoader.class)
- .addArgType(InputVDir.class).addArgType(JPhantomLookup.class).bypassAccessibility()
+ .addArgType(InputJackLibrary.class)
+ .addArgType(JPhantomLookup.class)
+ .bypassAccessibility()
.addDefaultValue("full");
@Nonnull
@@ -385,6 +393,7 @@ public abstract class Jack {
Config config = options.getConfig();
ThreadConfig.setConfig(config);
+
ConfigPrinterFactory.getConfigPrinter().printConfig(config);
Event event = TracerFactory.getTracer().start(JackEventType.JACK_RUN);
try {
@@ -399,6 +408,18 @@ public abstract class Jack {
(options.hasSanityChecks() ? "enabled" : "disabled"));
JSession session = buildSession(options, hooks);
+
+ if (ThreadConfig.get(Options.GENERATE_JACK_FILE).booleanValue()) {
+ Container containerType = ThreadConfig.get(Options.JACK_OUTPUT_CONTAINER_TYPE);
+ OutputVDir outputDir;
+ if (containerType == Container.DIR) {
+ outputDir = ThreadConfig.get(Options.JACK_FILE_OUTPUT_DIR);
+ } else {
+ outputDir = ThreadConfig.get(Options.JACK_FILE_OUTPUT_ZIP);
+ }
+ session.setOutputLibrary(new OutputJackLibrary(outputDir));
+ }
+
Request request = createInitialRequest();
request.addFeature(Resources.class);
@@ -673,21 +694,22 @@ public abstract class Jack {
private static JayceFileImporter getJayceFileImporter(@Nonnull List<File> jayceImport,
@Nonnull JPackage rootPackage, @Nonnull JPhantomLookup phantomLookup,
@Nonnull RunnableHooks hooks) throws JackFileException {
- List<InputVDir> jackFilesToImport = new ArrayList<InputVDir>(jayceImport.size());
+ List<InputJackLibrary> inputJackLibraries = new ArrayList<InputJackLibrary>(jayceImport.size());
ReflectFactory<JaycePackageLoader> factory = ThreadConfig.get(IMPORT_POLICY);
for (final File jackFile : jayceImport) {
try {
- InputVDir vDir = wrapAsVDir(jackFile, hooks);
- jackFilesToImport.add(vDir);
+ InputRootVDir vDir = wrapAsVDir(jackFile, hooks);
+ InputJackLibrary inputJackLibrary = new InputJackLibrary(vDir);
+ inputJackLibraries.add(inputJackLibrary);
// add to classpath
- JaycePackageLoader rootPLoader = factory.create(vDir, phantomLookup);
+ JaycePackageLoader rootPLoader = factory.create(inputJackLibrary, phantomLookup);
rootPackage.addLoader(rootPLoader);
} catch (IOException ioException) {
throw new JackFileException("Error importing jack container: " + ioException.getMessage(),
ioException);
}
}
- return new JayceFileImporter(jackFilesToImport);
+ return new JayceFileImporter(inputJackLibraries);
}
private static void putInJackClasspath(@Nonnull List<File> jackFiles,
@@ -697,8 +719,9 @@ public abstract class Jack {
ReflectFactory<JaycePackageLoader> factory = ThreadConfig.get(CLASSPATH_POLICY);
for (final File jackFile : jackFiles) {
try {
- InputVDir vDir = wrapAsVDir(jackFile, hooks);
- JaycePackageLoader rootPLoader = factory.create(vDir, phantomJNodeLookup);
+ InputRootVDir vDir = wrapAsVDir(jackFile, hooks);
+ JaycePackageLoader rootPLoader =
+ factory.create(new InputJackLibrary(vDir), phantomJNodeLookup);
rootPackage.addLoader(rootPLoader);
} catch (IOException ioException) {
// Ignore bad entry
@@ -708,9 +731,10 @@ public abstract class Jack {
}
@Nonnull
- private static InputVDir wrapAsVDir(@Nonnull final File dirOrZip, @Nonnull RunnableHooks hooks)
+ private static InputRootVDir wrapAsVDir(@Nonnull final File dirOrZip,
+ @Nonnull RunnableHooks hooks)
throws IOException {
- InputVDir dir;
+ InputRootVDir dir;
if (dirOrZip.isDirectory()) {
dir = new DirectDir(new Directory(dirOrZip.getPath(), hooks, Existence.MUST_EXIST,
Permission.READ, ChangePermission.NOCHANGE));
diff --git a/jack/src/com/android/jack/backend/jayce/JayceFileImporter.java b/jack/src/com/android/jack/backend/jayce/JayceFileImporter.java
index 6c8b9b7..a2bba12 100644
--- a/jack/src/com/android/jack/backend/jayce/JayceFileImporter.java
+++ b/jack/src/com/android/jack/backend/jayce/JayceFileImporter.java
@@ -23,6 +23,7 @@ import com.android.jack.ir.ast.JPackageLookupException;
import com.android.jack.ir.ast.JSession;
import com.android.jack.ir.ast.JTypeLookupException;
import com.android.jack.ir.ast.Resource;
+import com.android.jack.library.InputJackLibrary;
import com.android.jack.lookup.JLookup;
import com.android.sched.util.HasDescription;
import com.android.sched.util.codec.EnumCodec;
@@ -34,6 +35,7 @@ import com.android.sched.util.log.Event;
import com.android.sched.util.log.LoggerFactory;
import com.android.sched.util.log.Tracer;
import com.android.sched.util.log.TracerFactory;
+import com.android.sched.vfs.InputRootVDir;
import com.android.sched.vfs.InputVDir;
import com.android.sched.vfs.InputVElement;
import com.android.sched.vfs.InputVFile;
@@ -46,7 +48,7 @@ import java.util.logging.Logger;
import javax.annotation.Nonnull;
/**
- * Imports jayce file content in J-AST.
+ * Imports jayce files from jack libraries in J-AST.
*/
@HasKeyId
public class JayceFileImporter {
@@ -63,7 +65,7 @@ public class JayceFileImporter {
private static final Logger logger = LoggerFactory.getLogger();
@Nonnull
- private final List<InputVDir> jayceContainers;
+ private final List<InputJackLibrary> inputJackLibraries;
private static final char VPATH_SEPARATOR = JLookup.PACKAGE_SEPARATOR;
@@ -106,16 +108,17 @@ public class JayceFileImporter {
private final CollisionPolicy resourceCollisionPolicy =
ThreadConfig.get(RESOURCE_COLLISION_POLICY);
- public JayceFileImporter(@Nonnull List<InputVDir> jayceContainers) {
- this.jayceContainers = jayceContainers;
+ public JayceFileImporter(@Nonnull List<InputJackLibrary> jackLibraries) {
+ this.inputJackLibraries = jackLibraries;
}
public void doImport(@Nonnull JSession session) throws JPackageLookupException,
ImportConflictException, JTypeLookupException {
- for (InputVDir jayceContainer : jayceContainers) {
- logger.log(Level.FINE, "Importing {0}", jayceContainer.getLocation().getDescription());
- for (InputVElement subFile : jayceContainer.list()) {
+ for (InputJackLibrary inputJackLibrary : inputJackLibraries) {
+ InputRootVDir libraryVDir = inputJackLibrary.getInputVDir();
+ logger.log(Level.FINE, "Importing {0}", libraryVDir.getLocation().getDescription());
+ for (InputVElement subFile : libraryVDir.list()) {
importJayceFile(subFile, session, "");
}
}
diff --git a/jack/src/com/android/jack/backend/jayce/JayceSingleTypeWriter.java b/jack/src/com/android/jack/backend/jayce/JayceSingleTypeWriter.java
index 10bc65e..3af4ef2 100644
--- a/jack/src/com/android/jack/backend/jayce/JayceSingleTypeWriter.java
+++ b/jack/src/com/android/jack/backend/jayce/JayceSingleTypeWriter.java
@@ -18,7 +18,6 @@ package com.android.jack.backend.jayce;
import com.android.jack.Jack;
import com.android.jack.JackFileException;
-import com.android.jack.Options;
import com.android.jack.experimental.incremental.CompilerState;
import com.android.jack.experimental.incremental.JackIncremental;
import com.android.jack.ir.JackFormatIr;
@@ -26,6 +25,7 @@ import com.android.jack.ir.NonJackFormatIr;
import com.android.jack.ir.ast.JDefinedClassOrInterface;
import com.android.jack.ir.formatter.BinaryQualifiedNameFormatter;
import com.android.jack.jayce.JayceWriter;
+import com.android.jack.library.OutputLibrary;
import com.android.jack.scheduling.feature.JackFileOutput;
import com.android.sched.item.Description;
import com.android.sched.item.Name;
@@ -35,7 +35,6 @@ import com.android.sched.schedulable.Produce;
import com.android.sched.schedulable.RunnableSchedulable;
import com.android.sched.schedulable.Support;
import com.android.sched.util.config.ThreadConfig;
-import com.android.sched.vfs.Container;
import com.android.sched.vfs.DirectFile;
import com.android.sched.vfs.OutputVDir;
import com.android.sched.vfs.OutputVFile;
@@ -62,13 +61,9 @@ public class JayceSingleTypeWriter implements RunnableSchedulable<JDefinedClassO
private final OutputVDir outputDir;
{
- assert ThreadConfig.get(Options.GENERATE_JACK_FILE).booleanValue();
- Container containerType = ThreadConfig.get(Options.JACK_OUTPUT_CONTAINER_TYPE);
- if (containerType == Container.DIR) {
- outputDir = ThreadConfig.get(Options.JACK_FILE_OUTPUT_DIR);
- } else {
- outputDir = ThreadConfig.get(Options.JACK_FILE_OUTPUT_ZIP);
- }
+ OutputLibrary outputLibrary = Jack.getSession().getOutputLibrary();
+ assert outputLibrary != null;
+ outputDir = outputLibrary.getOutputVDir();
}
@Synchronized
diff --git a/jack/src/com/android/jack/ir/ast/JSession.java b/jack/src/com/android/jack/ir/ast/JSession.java
index 9d405ea..64576a2 100644
--- a/jack/src/com/android/jack/ir/ast/JSession.java
+++ b/jack/src/com/android/jack/ir/ast/JSession.java
@@ -20,6 +20,7 @@ import com.android.jack.ir.InternalCompilerException;
import com.android.jack.ir.ast.JPrimitiveType.JPrimitiveTypeEnum;
import com.android.jack.ir.sourceinfo.SourceInfo;
import com.android.jack.ir.sourceinfo.SourceInfoFactory;
+import com.android.jack.library.OutputLibrary;
import com.android.jack.lookup.JNodeLookup;
import com.android.jack.lookup.JPhantomLookup;
import com.android.jack.reporting.Reporter;
@@ -38,6 +39,7 @@ import java.util.List;
import java.util.Set;
import java.util.logging.Logger;
+import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
/**
@@ -77,6 +79,9 @@ public class JSession extends JNode {
@Nonnull
private final Reporter reporter = ThreadConfig.get(Reporter.REPORTER);
+ @CheckForNull
+ private OutputLibrary outputLibrary;
+
public JSession() {
super(SourceInfo.UNKNOWN);
topLevelPackage = new JPackage("", this, null);
@@ -179,4 +184,13 @@ public class JSession extends JNode {
throw new InternalCompilerException(this, "Invalid parent");
}
}
+
+ @CheckForNull
+ public OutputLibrary getOutputLibrary() {
+ return outputLibrary;
+ }
+
+ public void setOutputLibrary(@Nonnull OutputLibrary outputLibrary) {
+ this.outputLibrary = outputLibrary;
+ }
}
diff --git a/jack/src/com/android/jack/jayce/FullPackageLoader.java b/jack/src/com/android/jack/jayce/FullPackageLoader.java
index 00ffec0..5535427 100644
--- a/jack/src/com/android/jack/jayce/FullPackageLoader.java
+++ b/jack/src/com/android/jack/jayce/FullPackageLoader.java
@@ -16,16 +16,17 @@
package com.android.jack.jayce;
+import com.android.jack.library.InputJackLibrary;
import com.android.jack.lookup.JPhantomLookup;
import com.android.sched.util.codec.ImplementationName;
-import com.android.sched.vfs.InputVDir;
import javax.annotation.Nonnull;
@ImplementationName(iface = JaycePackageLoader.class, name = "full")
class FullPackageLoader extends JaycePackageLoader {
- public FullPackageLoader(@Nonnull InputVDir dir, @Nonnull JPhantomLookup lookup) {
- super(dir, lookup, NodeLevel.FULL);
+ public FullPackageLoader(@Nonnull InputJackLibrary inputJackLibrary,
+ @Nonnull JPhantomLookup lookup) {
+ super(inputJackLibrary, inputJackLibrary.getInputVDir(), lookup, NodeLevel.FULL);
}
}
diff --git a/jack/src/com/android/jack/jayce/JayceClassOrInterfaceLoader.java b/jack/src/com/android/jack/jayce/JayceClassOrInterfaceLoader.java
index 3bda605..479864f 100644
--- a/jack/src/com/android/jack/jayce/JayceClassOrInterfaceLoader.java
+++ b/jack/src/com/android/jack/jayce/JayceClassOrInterfaceLoader.java
@@ -23,6 +23,9 @@ import com.android.jack.ir.ast.JDefinedAnnotation;
import com.android.jack.ir.ast.JDefinedClassOrInterface;
import com.android.jack.ir.ast.JPackage;
import com.android.jack.ir.ast.JSession;
+import com.android.jack.library.HasInputLibrary;
+import com.android.jack.library.InputJackLibrary;
+import com.android.jack.library.InputLibrary;
import com.android.jack.load.AbtractClassOrInterfaceLoader;
import com.android.jack.load.ClassOrInterfaceLoader;
import com.android.jack.load.JackLoadingException;
@@ -54,7 +57,8 @@ import javax.annotation.Nonnull;
/**
* {@link ClassOrInterfaceLoader} for jayce files.
*/
-public class JayceClassOrInterfaceLoader extends AbtractClassOrInterfaceLoader {
+public class JayceClassOrInterfaceLoader extends AbtractClassOrInterfaceLoader implements
+ HasInputLibrary {
@Nonnull
private static final StatisticId<Percent> NNODE_RELOAD = new StatisticId<
@@ -89,10 +93,14 @@ public class JayceClassOrInterfaceLoader extends AbtractClassOrInterfaceLoader {
private int methodNotLoadedCount = Integer.MAX_VALUE;
@Nonnull
+ private final InputJackLibrary inputJackLibrary;
+
+ @Nonnull
final Tracer tracer = TracerFactory.getTracer();
- JayceClassOrInterfaceLoader(@Nonnull InputVFile source, @Nonnull JPhantomLookup lookup,
- @Nonnull NodeLevel defaultLoadLevel) {
+ JayceClassOrInterfaceLoader(@Nonnull InputJackLibrary jackLibrary, @Nonnull InputVFile source,
+ @Nonnull JPhantomLookup lookup, @Nonnull NodeLevel defaultLoadLevel) {
+ this.inputJackLibrary = jackLibrary;
this.source = source;
this.lookup = lookup;
nnode = new SoftReference<DeclaredTypeNode>(null);
@@ -223,4 +231,9 @@ public class JayceClassOrInterfaceLoader extends AbtractClassOrInterfaceLoader {
}
}
+ @Override
+ @Nonnull
+ public InputLibrary getInputLibrary() {
+ return inputJackLibrary;
+ }
}
diff --git a/jack/src/com/android/jack/jayce/JayceMethodLoader.java b/jack/src/com/android/jack/jayce/JayceMethodLoader.java
index 3b74b83..4efae56 100644
--- a/jack/src/com/android/jack/jayce/JayceMethodLoader.java
+++ b/jack/src/com/android/jack/jayce/JayceMethodLoader.java
@@ -19,6 +19,8 @@ package com.android.jack.jayce;
import com.android.jack.JackFileException;
import com.android.jack.ir.ast.JMethod;
import com.android.jack.ir.ast.JNode;
+import com.android.jack.library.HasInputLibrary;
+import com.android.jack.library.InputLibrary;
import com.android.jack.load.AbstractMethodLoader;
import com.android.jack.load.JackLoadingException;
import com.android.jack.lookup.JLookupException;
@@ -35,7 +37,7 @@ import javax.annotation.Nonnull;
/**
* A loader for method loaded from a jack file.
*/
-public class JayceMethodLoader extends AbstractMethodLoader {
+public class JayceMethodLoader extends AbstractMethodLoader implements HasInputLibrary {
@Nonnull
private static final StatisticId<Counter> BODY_LOAD_COUNT = new StatisticId<Counter>(
"jayce.body.load", "Body loaded from a NNode in a JNode",
@@ -112,4 +114,9 @@ public class JayceMethodLoader extends AbstractMethodLoader {
// nothing to do, only body is lazily loaded and ensureBody is handling that.
}
+ @Override
+ @Nonnull
+ public InputLibrary getInputLibrary() {
+ return enclosingClassLoader.getInputLibrary();
+ }
}
diff --git a/jack/src/com/android/jack/jayce/JaycePackageLoader.java b/jack/src/com/android/jack/jayce/JaycePackageLoader.java
index fff8ebb..e45e321 100644
--- a/jack/src/com/android/jack/jayce/JaycePackageLoader.java
+++ b/jack/src/com/android/jack/jayce/JaycePackageLoader.java
@@ -22,6 +22,9 @@ import com.android.jack.ir.ast.JDefinedClassOrInterface;
import com.android.jack.ir.ast.JPackage;
import com.android.jack.ir.ast.JPackageLookupException;
import com.android.jack.ir.ast.MissingJTypeLookupException;
+import com.android.jack.library.HasInputLibrary;
+import com.android.jack.library.InputJackLibrary;
+import com.android.jack.library.InputLibrary;
import com.android.jack.load.JackLoadingException;
import com.android.jack.load.PackageLoader;
import com.android.jack.lookup.JPhantomLookup;
@@ -40,17 +43,23 @@ import javax.annotation.Nonnull;
/**
* {@link PackageLoader} for package containing classes defined in jack files.
*/
-public class JaycePackageLoader implements PackageLoader {
+public class JaycePackageLoader implements PackageLoader, HasInputLibrary {
@Nonnull
private final InputVDir dir;
+
+ @Nonnull
private final JPhantomLookup lookup;
@Nonnull
private final NodeLevel defaultLoadLevel;
- JaycePackageLoader(@Nonnull InputVDir dir, @Nonnull JPhantomLookup lookup,
- @Nonnull NodeLevel defaultLoadLevel) {
+ @Nonnull
+ private final InputJackLibrary inputJackLibrary;
+
+ JaycePackageLoader(@Nonnull InputJackLibrary inputJackLibrary, @Nonnull InputVDir dir,
+ @Nonnull JPhantomLookup lookup, @Nonnull NodeLevel defaultLoadLevel) {
+ this.inputJackLibrary = inputJackLibrary;
this.dir = dir;
this.lookup = lookup;
this.defaultLoadLevel = defaultLoadLevel;
@@ -63,8 +72,8 @@ public class JaycePackageLoader implements PackageLoader {
for (InputVElement sub : dir.list()) {
if (!sub.isVDir() && isJackFileNameOf(sub.getName(), simpleName)) {
try {
- return new JayceClassOrInterfaceLoader((InputVFile) sub, lookup, defaultLoadLevel)
- .loadClassOrInterface(loading, simpleName);
+ return new JayceClassOrInterfaceLoader(inputJackLibrary, (InputVFile) sub, lookup,
+ defaultLoadLevel).loadClassOrInterface(loading, simpleName);
} catch (IOException e) {
throw new JackLoadingException(sub.getLocation(), e);
} catch (JackFileException e) {
@@ -92,11 +101,11 @@ public class JaycePackageLoader implements PackageLoader {
@Override
public PackageLoader getLoaderForSubPackage(@Nonnull JPackage loading,
@Nonnull String simpleName) throws JPackageLookupException {
- for (InputVElement sub : dir.list()) {
- if (sub.isVDir() && sub.getName().equals(simpleName)) {
- return new JaycePackageLoader((InputVDir) sub, lookup, defaultLoadLevel);
- }
+ for (InputVElement sub : dir.list()) {
+ if (sub.isVDir() && sub.getName().equals(simpleName)) {
+ return new JaycePackageLoader(inputJackLibrary, (InputVDir) sub, lookup, defaultLoadLevel);
}
+ }
throw new JPackageLookupException(simpleName, loading);
}
@@ -129,4 +138,10 @@ public class JaycePackageLoader implements PackageLoader {
public boolean isOnPath(@Nonnull JPackage loaded) {
return true;
}
+
+ @Override
+ @Nonnull
+ public InputLibrary getInputLibrary() {
+ return inputJackLibrary;
+ }
}
diff --git a/jack/src/com/android/jack/jayce/StructurePackageLoader.java b/jack/src/com/android/jack/jayce/StructurePackageLoader.java
index 83a2b87..76995ff 100644
--- a/jack/src/com/android/jack/jayce/StructurePackageLoader.java
+++ b/jack/src/com/android/jack/jayce/StructurePackageLoader.java
@@ -16,16 +16,17 @@
package com.android.jack.jayce;
+import com.android.jack.library.InputJackLibrary;
import com.android.jack.lookup.JPhantomLookup;
import com.android.sched.util.codec.ImplementationName;
-import com.android.sched.vfs.InputVDir;
import javax.annotation.Nonnull;
@ImplementationName(iface = JaycePackageLoader.class, name = "structure")
class StructurePackageLoader extends JaycePackageLoader {
- public StructurePackageLoader(@Nonnull InputVDir dir, @Nonnull JPhantomLookup lookup) {
- super(dir, lookup, NodeLevel.STRUCTURE);
+ public StructurePackageLoader(@Nonnull InputJackLibrary inputJackLibrary,
+ @Nonnull JPhantomLookup lookup) {
+ super(inputJackLibrary, inputJackLibrary.getInputVDir(), lookup, NodeLevel.STRUCTURE);
}
}
diff --git a/jack/src/com/android/jack/library/HasInputLibrary.java b/jack/src/com/android/jack/library/HasInputLibrary.java
new file mode 100644
index 0000000..f0a7f1e
--- /dev/null
+++ b/jack/src/com/android/jack/library/HasInputLibrary.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.library;
+
+import javax.annotation.Nonnull;
+
+/**
+ * Interface implemented by loaders having a library as input.
+ */
+public interface HasInputLibrary {
+
+ @Nonnull
+ public InputLibrary getInputLibrary();
+}
diff --git a/jack/src/com/android/jack/library/InputJackLibrary.java b/jack/src/com/android/jack/library/InputJackLibrary.java
new file mode 100644
index 0000000..d163db1
--- /dev/null
+++ b/jack/src/com/android/jack/library/InputJackLibrary.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.library;
+
+import com.android.sched.vfs.InputRootVDir;
+
+import javax.annotation.Nonnull;
+
+/**
+ * Jack library used as input.
+ */
+public class InputJackLibrary implements InputLibrary {
+
+ @Nonnull
+ private final InputRootVDir libraryVDir;
+
+ public InputJackLibrary(@Nonnull InputRootVDir libraryVDir) {
+ this.libraryVDir = libraryVDir;
+ }
+
+ @Override
+ @Nonnull
+ public InputRootVDir getInputVDir() {
+ return libraryVDir;
+ }
+}
diff --git a/jack/src/com/android/jack/library/InputLibrary.java b/jack/src/com/android/jack/library/InputLibrary.java
new file mode 100644
index 0000000..38afc3f
--- /dev/null
+++ b/jack/src/com/android/jack/library/InputLibrary.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.library;
+
+import com.android.sched.vfs.InputRootVDir;
+
+import javax.annotation.Nonnull;
+
+/**
+ * Library used as input.
+ */
+public interface InputLibrary {
+
+ @Nonnull
+ public InputRootVDir getInputVDir();
+}
diff --git a/jack/src/com/android/jack/library/OutputJackLibrary.java b/jack/src/com/android/jack/library/OutputJackLibrary.java
new file mode 100644
index 0000000..28fbc54
--- /dev/null
+++ b/jack/src/com/android/jack/library/OutputJackLibrary.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.library;
+
+import com.android.sched.vfs.OutputVDir;
+
+import javax.annotation.Nonnull;
+
+/**
+ * Jack library generated by Jack.
+ */
+public class OutputJackLibrary implements OutputLibrary {
+
+ @Nonnull
+ private final OutputVDir outputVDir;
+
+ public OutputJackLibrary(@Nonnull OutputVDir outputVDir) {
+ this.outputVDir = outputVDir;
+ }
+
+ @Override
+ @Nonnull
+ public OutputVDir getOutputVDir() {
+ return outputVDir;
+ }
+}
diff --git a/jack/src/com/android/jack/library/OutputLibrary.java b/jack/src/com/android/jack/library/OutputLibrary.java
new file mode 100644
index 0000000..e662695
--- /dev/null
+++ b/jack/src/com/android/jack/library/OutputLibrary.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.library;
+
+import com.android.sched.vfs.OutputVDir;
+
+import javax.annotation.Nonnull;
+
+/**
+ * Library generated by Jack.
+ */
+public interface OutputLibrary {
+
+ @Nonnull
+ public OutputVDir getOutputVDir();
+}