Introduce a consumer data abstraction for all program consumers.
Change-Id: If6606e6102a268138beeef7a5dba896767142608
diff --git a/src/main/java/com/android/tools/r8/ClassFileConsumer.java b/src/main/java/com/android/tools/r8/ClassFileConsumer.java
index fa3e5c4..79330fb 100644
--- a/src/main/java/com/android/tools/r8/ClassFileConsumer.java
+++ b/src/main/java/com/android/tools/r8/ClassFileConsumer.java
@@ -4,6 +4,7 @@
package com.android.tools.r8;
import com.android.tools.r8.utils.ArchiveBuilder;
+import com.android.tools.r8.utils.ClassFileConsumerDataImpl;
import com.android.tools.r8.utils.DescriptorUtils;
import com.android.tools.r8.utils.DirectoryBuilder;
import com.android.tools.r8.utils.OutputBuilder;
@@ -36,22 +37,28 @@
* {@param handler}. If an error is reported via {@param handler} and no exceptions are thrown,
* then the compiler guaranties to exit with an error.
*
- * <p>The {@link ByteDataView} {@param data} object can only be assumed valid during the duration
- * of the accept. If the bytes are needed beyond that, a copy must be made elsewhere.
+ * <p>The {@link ByteDataView} obtained by way of {@param data} object can only be assumed valid
+ * during the duration of the accept. If the bytes are needed beyond that, a copy must be made
+ * elsewhere.
*
- * @param data Java class-file encoded data.
- * @param descriptor Class descriptor of the class the data pertains to.
- * @param handler Diagnostics handler for reporting.
+ * @param data Java class-file encoded data and its meta-data.
*/
- void accept(ByteDataView data, String descriptor, DiagnosticsHandler handler);
+ default void acceptClassFile(ClassFileConsumerData data) {
+ accept(data.getByteDataView(), data.getClassDescriptor(), data.getDiagnosticsHandler());
+ }
+
+ @Deprecated
+ default void accept(ByteDataView data, String descriptor, DiagnosticsHandler handler) {
+ acceptClassFile(new ClassFileConsumerDataImpl(data, descriptor, handler));
+ }
/** Empty consumer to request the production of the resource but ignore its value. */
static ClassFileConsumer emptyConsumer() {
return ForwardingConsumer.EMPTY_CONSUMER;
}
- /** Forwarding consumer to delegate to an optional existing consumer. */
@Keep
+ @Deprecated
class ForwardingConsumer implements ClassFileConsumer {
private static final ClassFileConsumer EMPTY_CONSUMER = new ForwardingConsumer(null);
@@ -68,9 +75,9 @@
}
@Override
- public void accept(ByteDataView data, String descriptor, DiagnosticsHandler handler) {
+ public void acceptClassFile(ClassFileConsumerData data) {
if (consumer != null) {
- consumer.accept(data, descriptor, handler);
+ consumer.acceptClassFile(data);
}
}
@@ -117,9 +124,12 @@
}
@Override
- public void accept(ByteDataView data, String descriptor, DiagnosticsHandler handler) {
- super.accept(data, descriptor, handler);
- outputBuilder.addFile(DescriptorUtils.getClassFileName(descriptor), data, handler);
+ public void acceptClassFile(ClassFileConsumerData data) {
+ super.acceptClassFile(data);
+ outputBuilder.addFile(
+ DescriptorUtils.getClassFileName(data.getClassDescriptor()),
+ data.getByteDataView(),
+ data.getDiagnosticsHandler());
}
@Override
@@ -194,9 +204,12 @@
}
@Override
- public void accept(ByteDataView data, String descriptor, DiagnosticsHandler handler) {
- super.accept(data, descriptor, handler);
- outputBuilder.addFile(DescriptorUtils.getClassFileName(descriptor), data, handler);
+ public void acceptClassFile(ClassFileConsumerData data) {
+ super.acceptClassFile(data);
+ outputBuilder.addFile(
+ DescriptorUtils.getClassFileName(data.getClassDescriptor()),
+ data.getByteDataView(),
+ data.getDiagnosticsHandler());
}
@Override
diff --git a/src/main/java/com/android/tools/r8/ClassFileConsumerData.java b/src/main/java/com/android/tools/r8/ClassFileConsumerData.java
new file mode 100644
index 0000000..eeef801
--- /dev/null
+++ b/src/main/java/com/android/tools/r8/ClassFileConsumerData.java
@@ -0,0 +1,26 @@
+// Copyright (c) 2023, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+package com.android.tools.r8;
+
+/** Data provided in the primary callback of {@link ClassFileConsumer}. */
+@Keep
+public interface ClassFileConsumerData {
+
+ /**
+ * View of the Java class-file encoded data.
+ *
+ * <p>The obtained {@link ByteDataView} object can only be assumed valid during the duration of
+ * the accept method. If the bytes are needed beyond that, a copy must be made elsewhere.
+ */
+ ByteDataView getByteDataView();
+
+ /** Copy of the bytes for the Java class-file encoded data. */
+ byte[] getByteDataCopy();
+
+ /** Class descriptor of the class the data pertains to. */
+ String getClassDescriptor();
+
+ /** Diagnostics handler for reporting. */
+ DiagnosticsHandler getDiagnosticsHandler();
+}
diff --git a/src/main/java/com/android/tools/r8/D8.java b/src/main/java/com/android/tools/r8/D8.java
index c57bc22..85a0fbf 100644
--- a/src/main/java/com/android/tools/r8/D8.java
+++ b/src/main/java/com/android/tools/r8/D8.java
@@ -53,7 +53,6 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
-import java.util.Set;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
@@ -441,12 +440,14 @@
private final List<ProgramResource> resources = new ArrayList<>();
@Override
- public synchronized void accept(
- int fileIndex, ByteDataView data, Set<String> descriptors, DiagnosticsHandler handler) {
+ public synchronized void acceptDexIndexedFile(DexIndexedConsumerData data) {
// TODO(b/154106502): Map Origin information.
resources.add(
ProgramResource.fromBytes(
- Origin.unknown(), ProgramResource.Kind.DEX, data.copyByteData(), descriptors));
+ Origin.unknown(),
+ ProgramResource.Kind.DEX,
+ data.getByteDataCopy(),
+ data.getClassDescriptors()));
}
@Override
diff --git a/src/main/java/com/android/tools/r8/DexFilePerClassFileConsumer.java b/src/main/java/com/android/tools/r8/DexFilePerClassFileConsumer.java
index 1675cb2..68e6f12 100644
--- a/src/main/java/com/android/tools/r8/DexFilePerClassFileConsumer.java
+++ b/src/main/java/com/android/tools/r8/DexFilePerClassFileConsumer.java
@@ -34,7 +34,7 @@
@KeepForSubclassing
public interface DexFilePerClassFileConsumer extends ProgramConsumer, ByteBufferProvider {
- static final boolean SHOULD_COMBINE_SYNTHETIC_CLASSES = true;
+ boolean SHOULD_COMBINE_SYNTHETIC_CLASSES = true;
/**
* Callback to receive DEX data for a single Java class-file input and its companion classes.
@@ -42,24 +42,30 @@
* <p>There is no guaranteed order and files might be written concurrently.
*
* <p>The consumer is expected not to throw, but instead report any errors via the diagnostics
- * {@param handler}. If an error is reported via {@param handler} and no exceptions are thrown,
- * then the compiler guaranties to exit with an error.
+ * {@link DiagnosticsHandler} in the callback data. If an error is reported via handler and no
+ * exceptions are thrown, then the compiler guaranties to exit with an error.
*
- * <p>The {@link ByteDataView} {@param data} object can only be assumed valid during the duration
- * of the accept. If the bytes are needed beyond that, a copy must be made elsewhere.
- *
- * @param primaryClassDescriptor Class descriptor of the class from the input class-file.
- * @param data DEX encoded data in a ByteDataView wrapper.
- * @param descriptors Class descriptors for all classes defined in the DEX data.
- * @param handler Diagnostics handler for reporting.
+ * <p>The {@link ByteDataView} obtained from the {@param data} object can only be assumed valid
+ * during the duration of the accept. If the bytes are needed beyond that, a copy must be made
+ * elsewhere.
*/
+ default void acceptDexFile(DexFilePerClassFileConsumerData data) {
+ accept(
+ data.getPrimaryClassDescriptor(),
+ data.getByteDataView(),
+ data.getClassDescriptors(),
+ data.getDiagnosticsHandler());
+ }
+
+ // Any new implementation should not use or call the deprecated accept method.
+ @Deprecated
default void accept(
String primaryClassDescriptor,
ByteDataView data,
Set<String> descriptors,
DiagnosticsHandler handler) {
- // To avoid breaking binary compatiblity, old consumers not implementing the new API will be
- // forwarded to. New consumers must implement the accept on ByteDataView.
+ // To avoid breaking binary compatibility, old consumers not implementing the new API will be
+ // forwarded to. New consumers must implement the accept method on the data object.
accept(primaryClassDescriptor, data.copyByteData(), descriptors, handler);
}
@@ -92,8 +98,8 @@
return ForwardingConsumer.EMPTY_CONSUMER;
}
- /** Forwarding consumer to delegate to an optional existing consumer. */
@Keep
+ @Deprecated
class ForwardingConsumer implements DexFilePerClassFileConsumer {
private static final DexFilePerClassFileConsumer EMPTY_CONSUMER = new ForwardingConsumer(null);
@@ -110,13 +116,9 @@
}
@Override
- public void accept(
- String primaryClassDescriptor,
- ByteDataView data,
- Set<String> descriptors,
- DiagnosticsHandler handler) {
+ public void acceptDexFile(DexFilePerClassFileConsumerData data) {
if (consumer != null) {
- consumer.accept(primaryClassDescriptor, data, descriptors, handler);
+ consumer.acceptDexFile(data);
}
}
@@ -178,13 +180,12 @@
}
@Override
- public void accept(
- String primaryClassDescriptor,
- ByteDataView data,
- Set<String> descriptors,
- DiagnosticsHandler handler) {
- super.accept(primaryClassDescriptor, data, descriptors, handler);
- outputBuilder.addFile(getDexFileName(primaryClassDescriptor), data, handler);
+ public void acceptDexFile(DexFilePerClassFileConsumerData data) {
+ super.acceptDexFile(data);
+ outputBuilder.addFile(
+ getDexFileName(data.getPrimaryClassDescriptor()),
+ data.getByteDataView(),
+ data.getDiagnosticsHandler());
}
@Override
@@ -262,13 +263,12 @@
}
@Override
- public void accept(
- String primaryClassDescriptor,
- ByteDataView data,
- Set<String> descriptors,
- DiagnosticsHandler handler) {
- super.accept(primaryClassDescriptor, data, descriptors, handler);
- outputBuilder.addFile(getDexFileName(primaryClassDescriptor), data, handler);
+ public void acceptDexFile(DexFilePerClassFileConsumerData data) {
+ super.acceptDexFile(data);
+ outputBuilder.addFile(
+ getDexFileName(data.getPrimaryClassDescriptor()),
+ data.getByteDataView(),
+ data.getDiagnosticsHandler());
}
@Override
diff --git a/src/main/java/com/android/tools/r8/DexFilePerClassFileConsumerData.java b/src/main/java/com/android/tools/r8/DexFilePerClassFileConsumerData.java
new file mode 100644
index 0000000..e93aa0c
--- /dev/null
+++ b/src/main/java/com/android/tools/r8/DexFilePerClassFileConsumerData.java
@@ -0,0 +1,26 @@
+// Copyright (c) 2023, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+package com.android.tools.r8;
+
+import java.util.Set;
+
+/** Data provided in the primary callback of {@link DexFilePerClassFileConsumer}. */
+@Keep
+public interface DexFilePerClassFileConsumerData {
+
+ /** Class descriptor of the class from the input class-file. */
+ String getPrimaryClassDescriptor();
+
+ /** DEX encoded data in a ByteDataView wrapper. */
+ ByteDataView getByteDataView();
+
+ /** Copy of the bytes for the DEX encoded data. */
+ byte[] getByteDataCopy();
+
+ /** Class descriptors for all classes defined in the DEX data. */
+ Set<String> getClassDescriptors();
+
+ /** Diagnostics handler for reporting. */
+ DiagnosticsHandler getDiagnosticsHandler();
+}
diff --git a/src/main/java/com/android/tools/r8/DexIndexedConsumer.java b/src/main/java/com/android/tools/r8/DexIndexedConsumer.java
index 39f5b2e..cbccf59 100644
--- a/src/main/java/com/android/tools/r8/DexIndexedConsumer.java
+++ b/src/main/java/com/android/tools/r8/DexIndexedConsumer.java
@@ -46,17 +46,22 @@
* <p>There is no guaranteed order and files might be written concurrently.
*
* <p>The consumer is expected not to throw, but instead report any errors via the diagnostics
- * {@param handler}. If an error is reported via {@param handler} and no exceptions are thrown,
- * then the compiler guaranties to exit with an error.
+ * {@link DiagnosticsHandler} in the callback data. If an error is reported via handler and no
+ * exceptions are thrown, then the compiler guaranties to exit with an error.
*
- * <p>The {@link ByteDataView} {@param data} object can only be assumed valid during the duration
- * of the accept. If the bytes are needed beyond that, a copy must be made elsewhere.
- *
- * @param fileIndex Index of the DEX file for multi-dexing. Files are zero-indexed.
- * @param data DEX encoded data in a ByteDataView wrapper.
- * @param descriptors Class descriptors for all classes defined in the DEX data.
- * @param handler Diagnostics handler for reporting.
+ * <p>The {@link ByteDataView} obtained from the {@param data} object can only be assumed valid
+ * during the duration of the accept. If the bytes are needed beyond that, a copy must be made
+ * elsewhere.
*/
+ default void acceptDexIndexedFile(DexIndexedConsumerData data) {
+ accept(
+ data.getFileIndex(),
+ data.getByteDataView(),
+ data.getClassDescriptors(),
+ data.getDiagnosticsHandler());
+ }
+
+ @Deprecated
default void accept(
int fileIndex, ByteDataView data, Set<String> descriptors, DiagnosticsHandler handler) {
// To avoid breaking binary compatiblity, old consumers not implementing the new API will be
@@ -77,8 +82,8 @@
return ForwardingConsumer.EMPTY_CONSUMER;
}
- /** Forwarding consumer to delegate to an optional existing consumer. */
@Keep
+ @Deprecated
class ForwardingConsumer implements DexIndexedConsumer {
private static final DexIndexedConsumer EMPTY_CONSUMER = new ForwardingConsumer(null);
@@ -95,10 +100,9 @@
}
@Override
- public void accept(
- int fileIndex, ByteDataView data, Set<String> descriptors, DiagnosticsHandler handler) {
+ public void acceptDexIndexedFile(DexIndexedConsumerData data) {
if (consumer != null) {
- consumer.accept(fileIndex, data, descriptors, handler);
+ consumer.acceptDexIndexedFile(data);
}
}
@@ -150,11 +154,13 @@
}
@Override
- public void accept(
- int fileIndex, ByteDataView data, Set<String> descriptors, DiagnosticsHandler handler) {
- super.accept(fileIndex, data, descriptors, handler);
+ public void acceptDexIndexedFile(DexIndexedConsumerData data) {
+ super.acceptDexIndexedFile(data);
outputBuilder.addIndexedClassFile(
- fileIndex, DexUtils.getDefaultDexFileName(fileIndex), data, handler);
+ data.getFileIndex(),
+ DexUtils.getDefaultDexFileName(data.getFileIndex()),
+ data.getByteDataView(),
+ data.getDiagnosticsHandler());
}
@Override
@@ -245,15 +251,17 @@
}
@Override
- public void accept(
- int fileIndex, ByteDataView data, Set<String> descriptors, DiagnosticsHandler handler) {
- super.accept(fileIndex, data, descriptors, handler);
+ public void acceptDexIndexedFile(DexIndexedConsumerData data) {
+ super.acceptDexIndexedFile(data);
try {
prepareDirectory();
} catch (IOException e) {
- handler.error(new ExceptionDiagnostic(e, new PathOrigin(directory)));
+ data.getDiagnosticsHandler().error(new ExceptionDiagnostic(e, new PathOrigin(directory)));
}
- outputBuilder.addFile(DexUtils.getDefaultDexFileName(fileIndex), data, handler);
+ outputBuilder.addFile(
+ DexUtils.getDefaultDexFileName(data.getFileIndex()),
+ data.getByteDataView(),
+ data.getDiagnosticsHandler());
}
@Override
diff --git a/src/main/java/com/android/tools/r8/DexIndexedConsumerData.java b/src/main/java/com/android/tools/r8/DexIndexedConsumerData.java
new file mode 100644
index 0000000..1c46f8c
--- /dev/null
+++ b/src/main/java/com/android/tools/r8/DexIndexedConsumerData.java
@@ -0,0 +1,26 @@
+// Copyright (c) 2023, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+package com.android.tools.r8;
+
+import java.util.Set;
+
+/** Data provided in the primary callback of {@link DexIndexedConsumer}. */
+@Keep
+public interface DexIndexedConsumerData {
+
+ /** Index of the DEX file for multi-dexing (Files are zero-indexed). */
+ int getFileIndex();
+
+ /** DEX encoded data in a ByteDataView wrapper. */
+ ByteDataView getByteDataView();
+
+ /** Copy of the bytes for the DEX encoded data. */
+ byte[] getByteDataCopy();
+
+ /** Class descriptors for all classes defined in the DEX data. */
+ Set<String> getClassDescriptors();
+
+ /** Diagnostics handler for reporting. */
+ DiagnosticsHandler getDiagnosticsHandler();
+}
diff --git a/src/main/java/com/android/tools/r8/dex/ApplicationWriter.java b/src/main/java/com/android/tools/r8/dex/ApplicationWriter.java
index 99cb304..e9aab77 100644
--- a/src/main/java/com/android/tools/r8/dex/ApplicationWriter.java
+++ b/src/main/java/com/android/tools/r8/dex/ApplicationWriter.java
@@ -58,6 +58,8 @@
import com.android.tools.r8.utils.ArrayUtils;
import com.android.tools.r8.utils.Box;
import com.android.tools.r8.utils.DescriptorUtils;
+import com.android.tools.r8.utils.DexFilePerClassFileConsumerDataImpl;
+import com.android.tools.r8.utils.DexIndexedConsumerDataImpl;
import com.android.tools.r8.utils.ExceptionUtils;
import com.android.tools.r8.utils.IntBox;
import com.android.tools.r8.utils.InternalGlobalSyntheticsProgramConsumer;
@@ -586,13 +588,14 @@
ProgramConsumer consumer;
ByteBufferProvider byteBufferProvider;
+ String primaryClassDescriptor = virtualFile.getPrimaryClassDescriptor();
if (globalSyntheticFiles != null && globalSyntheticFiles.contains(virtualFile)) {
consumer = globalsSyntheticsConsumer;
byteBufferProvider = globalsSyntheticsConsumer;
} else if (programConsumer != null) {
consumer = programConsumer;
byteBufferProvider = programConsumer;
- } else if (virtualFile.getPrimaryClassDescriptor() != null) {
+ } else if (primaryClassDescriptor != null) {
consumer = options.getDexFilePerClassFileConsumer();
byteBufferProvider = options.getDexFilePerClassFileConsumer();
} else {
@@ -620,14 +623,17 @@
timing.begin("Pass bytes to consumer");
if (consumer instanceof DexFilePerClassFileConsumer) {
((DexFilePerClassFileConsumer) consumer)
- .accept(
- virtualFile.getPrimaryClassDescriptor(),
- data,
- virtualFile.getClassDescriptors(),
- options.reporter);
+ .acceptDexFile(
+ new DexFilePerClassFileConsumerDataImpl(
+ primaryClassDescriptor,
+ data,
+ virtualFile.getClassDescriptors(),
+ options.reporter));
} else {
((DexIndexedConsumer) consumer)
- .accept(virtualFile.getId(), data, virtualFile.getClassDescriptors(), options.reporter);
+ .acceptDexIndexedFile(
+ new DexIndexedConsumerDataImpl(
+ virtualFile.getId(), data, virtualFile.getClassDescriptors(), options.reporter));
}
timing.end();
// Release use of the backing buffer now that accept has returned.
diff --git a/src/main/java/com/android/tools/r8/dex/ApplicationWriterExperimental.java b/src/main/java/com/android/tools/r8/dex/ApplicationWriterExperimental.java
index 0a81bd2..cdb74b5 100644
--- a/src/main/java/com/android/tools/r8/dex/ApplicationWriterExperimental.java
+++ b/src/main/java/com/android/tools/r8/dex/ApplicationWriterExperimental.java
@@ -18,6 +18,7 @@
import com.android.tools.r8.graph.DexString;
import com.android.tools.r8.graph.ObjectToOffsetMapping;
import com.android.tools.r8.utils.BitUtils;
+import com.android.tools.r8.utils.DexIndexedConsumerDataImpl;
import com.android.tools.r8.utils.InternalOptions;
import com.android.tools.r8.utils.ListUtils;
import com.android.tools.r8.utils.ThreadUtils;
@@ -172,7 +173,9 @@
if (consumer instanceof DexFilePerClassFileConsumer) {
assert false;
} else {
- ((DexIndexedConsumer) consumer).accept(0, data, Sets.newIdentityHashSet(), options.reporter);
+ ((DexIndexedConsumer) consumer)
+ .acceptDexIndexedFile(
+ new DexIndexedConsumerDataImpl(0, data, Sets.newIdentityHashSet(), options.reporter));
}
}
diff --git a/src/main/java/com/android/tools/r8/jar/CfApplicationWriter.java b/src/main/java/com/android/tools/r8/jar/CfApplicationWriter.java
index cc88ca9..49f2fbb 100644
--- a/src/main/java/com/android/tools/r8/jar/CfApplicationWriter.java
+++ b/src/main/java/com/android/tools/r8/jar/CfApplicationWriter.java
@@ -47,6 +47,7 @@
import com.android.tools.r8.synthesis.SyntheticNaming;
import com.android.tools.r8.utils.AndroidApp;
import com.android.tools.r8.utils.AsmUtils;
+import com.android.tools.r8.utils.ClassFileConsumerDataImpl;
import com.android.tools.r8.utils.ComparatorUtils;
import com.android.tools.r8.utils.ExceptionUtils;
import com.android.tools.r8.utils.InternalGlobalSyntheticsProgramConsumer.InternalGlobalSyntheticsCfConsumer;
@@ -334,7 +335,10 @@
verifyCf(result);
}
ExceptionUtils.withConsumeResourceHandler(
- options.reporter, handler -> consumer.accept(ByteDataView.of(result), desc, handler));
+ options.reporter,
+ handler ->
+ consumer.acceptClassFile(
+ new ClassFileConsumerDataImpl(ByteDataView.of(result), desc, handler)));
}
private int compareTypesThroughLens(DexType a, DexType b) {
diff --git a/src/main/java/com/android/tools/r8/utils/AndroidAppConsumers.java b/src/main/java/com/android/tools/r8/utils/AndroidAppConsumers.java
index 7a77e25..1c01a7b 100644
--- a/src/main/java/com/android/tools/r8/utils/AndroidAppConsumers.java
+++ b/src/main/java/com/android/tools/r8/utils/AndroidAppConsumers.java
@@ -4,14 +4,16 @@
package com.android.tools.r8.utils;
import com.android.tools.r8.BaseCompilerCommand;
-import com.android.tools.r8.ByteDataView;
import com.android.tools.r8.ClassFileConsumer;
+import com.android.tools.r8.ClassFileConsumerData;
import com.android.tools.r8.DataDirectoryResource;
import com.android.tools.r8.DataEntryResource;
import com.android.tools.r8.DataResourceConsumer;
import com.android.tools.r8.DexFilePerClassFileConsumer;
+import com.android.tools.r8.DexFilePerClassFileConsumerData;
import com.android.tools.r8.DexIndexedConsumer;
import com.android.tools.r8.DexIndexedConsumer.ForwardingConsumer;
+import com.android.tools.r8.DexIndexedConsumerData;
import com.android.tools.r8.DiagnosticsHandler;
import com.android.tools.r8.ProgramConsumer;
import com.android.tools.r8.ResourceException;
@@ -103,13 +105,9 @@
new Int2ReferenceAVLTreeMap<>();
@Override
- public void accept(
- int fileIndex,
- ByteDataView data,
- Set<String> descriptors,
- DiagnosticsHandler handler) {
- super.accept(fileIndex, data, descriptors, handler);
- addDexFile(fileIndex, data.copyByteData(), descriptors);
+ public void acceptDexIndexedFile(DexIndexedConsumerData data) {
+ super.acceptDexIndexedFile(data);
+ addDexFile(data.getFileIndex(), data.getByteDataCopy(), data.getClassDescriptors());
}
@Override
@@ -182,13 +180,12 @@
private TreeMap<String, DescriptorsWithContents> files = new TreeMap<>();
@Override
- public void accept(
- String primaryClassDescriptor,
- ByteDataView data,
- Set<String> descriptors,
- DiagnosticsHandler handler) {
- super.accept(primaryClassDescriptor, data, descriptors, handler);
- addDexFile(primaryClassDescriptor, data.copyByteData(), descriptors);
+ public void acceptDexFile(DexFilePerClassFileConsumerData data) {
+ super.acceptDexFile(data);
+ addDexFile(
+ data.getPrimaryClassDescriptor(),
+ data.getByteDataCopy(),
+ data.getClassDescriptors());
}
synchronized void addDexFile(
@@ -258,9 +255,9 @@
private List<DescriptorsWithContents> files = new ArrayList<>();
@Override
- public void accept(ByteDataView data, String descriptor, DiagnosticsHandler handler) {
- super.accept(data, descriptor, handler);
- addClassFile(data.copyByteData(), descriptor);
+ public void acceptClassFile(ClassFileConsumerData data) {
+ super.acceptClassFile(data);
+ addClassFile(data.getByteDataCopy(), data.getClassDescriptor());
}
synchronized void addClassFile(byte[] data, String descriptor) {
diff --git a/src/main/java/com/android/tools/r8/utils/ClassFileConsumerDataImpl.java b/src/main/java/com/android/tools/r8/utils/ClassFileConsumerDataImpl.java
new file mode 100644
index 0000000..b375086
--- /dev/null
+++ b/src/main/java/com/android/tools/r8/utils/ClassFileConsumerDataImpl.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2023, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+package com.android.tools.r8.utils;
+
+import com.android.tools.r8.ByteDataView;
+import com.android.tools.r8.ClassFileConsumerData;
+import com.android.tools.r8.DiagnosticsHandler;
+
+/** Internal implementation of the consumer data. */
+public class ClassFileConsumerDataImpl implements ClassFileConsumerData {
+
+ private final ByteDataView data;
+ private final String descriptor;
+ private final DiagnosticsHandler handler;
+
+ public ClassFileConsumerDataImpl(
+ ByteDataView data, String descriptor, DiagnosticsHandler handler) {
+ this.data = data;
+ this.descriptor = descriptor;
+ this.handler = handler;
+ }
+
+ @Override
+ public ByteDataView getByteDataView() {
+ return data;
+ }
+
+ @Override
+ public byte[] getByteDataCopy() {
+ return data.copyByteData();
+ }
+
+ @Override
+ public String getClassDescriptor() {
+ return descriptor;
+ }
+
+ @Override
+ public DiagnosticsHandler getDiagnosticsHandler() {
+ return handler;
+ }
+}
diff --git a/src/main/java/com/android/tools/r8/utils/DexFilePerClassFileConsumerDataImpl.java b/src/main/java/com/android/tools/r8/utils/DexFilePerClassFileConsumerDataImpl.java
new file mode 100644
index 0000000..4e028d5
--- /dev/null
+++ b/src/main/java/com/android/tools/r8/utils/DexFilePerClassFileConsumerDataImpl.java
@@ -0,0 +1,53 @@
+// Copyright (c) 2023, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+package com.android.tools.r8.utils;
+
+import com.android.tools.r8.ByteDataView;
+import com.android.tools.r8.DexFilePerClassFileConsumerData;
+import com.android.tools.r8.DiagnosticsHandler;
+import java.util.Set;
+
+public class DexFilePerClassFileConsumerDataImpl implements DexFilePerClassFileConsumerData {
+
+ private final String primaryClassDescriptor;
+ private final ByteDataView data;
+ private final Set<String> classDescriptors;
+ private final DiagnosticsHandler handler;
+
+ public DexFilePerClassFileConsumerDataImpl(
+ String primaryClassDescriptor,
+ ByteDataView data,
+ Set<String> classDescriptors,
+ DiagnosticsHandler handler) {
+ this.primaryClassDescriptor = primaryClassDescriptor;
+ this.data = data;
+ this.classDescriptors = classDescriptors;
+ this.handler = handler;
+ }
+
+ @Override
+ public String getPrimaryClassDescriptor() {
+ return primaryClassDescriptor;
+ }
+
+ @Override
+ public ByteDataView getByteDataView() {
+ return data;
+ }
+
+ @Override
+ public byte[] getByteDataCopy() {
+ return data.copyByteData();
+ }
+
+ @Override
+ public Set<String> getClassDescriptors() {
+ return classDescriptors;
+ }
+
+ @Override
+ public DiagnosticsHandler getDiagnosticsHandler() {
+ return handler;
+ }
+}
diff --git a/src/main/java/com/android/tools/r8/utils/DexIndexedConsumerDataImpl.java b/src/main/java/com/android/tools/r8/utils/DexIndexedConsumerDataImpl.java
new file mode 100644
index 0000000..2de21e4
--- /dev/null
+++ b/src/main/java/com/android/tools/r8/utils/DexIndexedConsumerDataImpl.java
@@ -0,0 +1,50 @@
+// Copyright (c) 2023, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+package com.android.tools.r8.utils;
+
+import com.android.tools.r8.ByteDataView;
+import com.android.tools.r8.DexIndexedConsumerData;
+import com.android.tools.r8.DiagnosticsHandler;
+import java.util.Set;
+
+public class DexIndexedConsumerDataImpl implements DexIndexedConsumerData {
+
+ private final int fileIndex;
+ private final ByteDataView data;
+ private final Set<String> classDescriptors;
+ private final DiagnosticsHandler handler;
+
+ public DexIndexedConsumerDataImpl(
+ int fileIndex, ByteDataView data, Set<String> classDescriptors, DiagnosticsHandler handler) {
+ this.fileIndex = fileIndex;
+ this.data = data;
+ this.classDescriptors = classDescriptors;
+ this.handler = handler;
+ }
+
+ @Override
+ public int getFileIndex() {
+ return fileIndex;
+ }
+
+ @Override
+ public ByteDataView getByteDataView() {
+ return data;
+ }
+
+ @Override
+ public byte[] getByteDataCopy() {
+ return data.copyByteData();
+ }
+
+ @Override
+ public Set<String> getClassDescriptors() {
+ return classDescriptors;
+ }
+
+ @Override
+ public DiagnosticsHandler getDiagnosticsHandler() {
+ return handler;
+ }
+}
diff --git a/src/main/java/com/android/tools/r8/utils/InternalGlobalSyntheticsProgramConsumer.java b/src/main/java/com/android/tools/r8/utils/InternalGlobalSyntheticsProgramConsumer.java
index 1428459..6fcc519 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalGlobalSyntheticsProgramConsumer.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalGlobalSyntheticsProgramConsumer.java
@@ -9,6 +9,7 @@
import com.android.tools.r8.ByteDataView;
import com.android.tools.r8.ClassFileConsumer;
import com.android.tools.r8.DexFilePerClassFileConsumer;
+import com.android.tools.r8.DexFilePerClassFileConsumerData;
import com.android.tools.r8.DiagnosticsHandler;
import com.android.tools.r8.GlobalSyntheticsConsumer;
import com.android.tools.r8.ProgramConsumer;
@@ -102,12 +103,8 @@
}
@Override
- public synchronized void accept(
- String primaryClassDescriptor,
- ByteDataView data,
- Set<String> descriptors,
- DiagnosticsHandler handler) {
- builder.addGlobalSynthetic(primaryClassDescriptor, data.copyByteData());
+ public synchronized void acceptDexFile(DexFilePerClassFileConsumerData data) {
+ builder.addGlobalSynthetic(data.getPrimaryClassDescriptor(), data.getByteDataCopy());
}
@Override
@@ -149,12 +146,8 @@
}
@Override
- public void accept(
- String primaryClassDescriptor,
- ByteDataView data,
- Set<String> descriptors,
- DiagnosticsHandler handler) {
- addGlobal(primaryClassDescriptor, data);
+ public void acceptDexFile(DexFilePerClassFileConsumerData data) {
+ addGlobal(data.getPrimaryClassDescriptor(), data.getByteDataView());
}
@Override
diff --git a/src/test/java/com/android/tools/r8/D8CommandTest.java b/src/test/java/com/android/tools/r8/D8CommandTest.java
index 11cebfd..ff10302 100644
--- a/src/test/java/com/android/tools/r8/D8CommandTest.java
+++ b/src/test/java/com/android/tools/r8/D8CommandTest.java
@@ -44,7 +44,6 @@
import java.nio.file.Paths;
import java.util.Collection;
import java.util.List;
-import java.util.Set;
import java.util.function.Predicate;
import java.util.zip.ZipFile;
import org.junit.Test;
@@ -466,15 +465,10 @@
class MultiTypeConsumer implements DexIndexedConsumer, DexFilePerClassFileConsumer {
@Override
- public void accept(
- String primaryClassDescriptor,
- ByteDataView data,
- Set<String> descriptors,
- DiagnosticsHandler handler) {}
+ public void acceptDexFile(DexFilePerClassFileConsumerData data) {}
@Override
- public void accept(
- int fileIndex, ByteDataView data, Set<String> descriptors, DiagnosticsHandler handler) {}
+ public void acceptDexIndexedFile(DexIndexedConsumerData data) {}
@Override
public void finished(DiagnosticsHandler handler) {
diff --git a/src/test/java/com/android/tools/r8/ExtractMarkerTest.java b/src/test/java/com/android/tools/r8/ExtractMarkerTest.java
index 6ed73d8..e8a4d1d 100644
--- a/src/test/java/com/android/tools/r8/ExtractMarkerTest.java
+++ b/src/test/java/com/android/tools/r8/ExtractMarkerTest.java
@@ -14,7 +14,6 @@
import com.android.tools.r8.utils.BooleanUtils;
import java.nio.file.Paths;
import java.util.Collection;
-import java.util.Set;
import org.junit.Assume;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -60,15 +59,11 @@
.setProgramConsumer(
new DexIndexedConsumer.ForwardingConsumer(null) {
@Override
- public void accept(
- int fileIndex,
- ByteDataView data,
- Set<String> descriptors,
- DiagnosticsHandler handler) {
+ public void acceptDexIndexedFile(DexIndexedConsumerData data) {
Marker marker;
try {
Collection<Marker> markers =
- ExtractMarker.extractMarkerFromDexProgramData(data.copyByteData());
+ ExtractMarker.extractMarkerFromDexProgramData(data.getByteDataCopy());
assertEquals(1, markers.size());
marker = markers.iterator().next();
} catch (Exception e) {
@@ -104,12 +99,11 @@
.setProgramConsumer(
new ClassFileConsumer.ForwardingConsumer(null) {
@Override
- public void accept(
- ByteDataView data, String descriptor, DiagnosticsHandler handler) {
+ public void acceptClassFile(ClassFileConsumerData data) {
Marker marker;
try {
Collection<Marker> markers =
- ExtractMarker.extractMarkerFromClassProgramData(data.copyByteData());
+ ExtractMarker.extractMarkerFromClassProgramData(data.getByteDataCopy());
assertEquals(1, markers.size());
marker = markers.iterator().next();
} catch (Exception e) {
diff --git a/src/test/java/com/android/tools/r8/ProguardMapMarkerTest.java b/src/test/java/com/android/tools/r8/ProguardMapMarkerTest.java
index f0b68de..5be0095 100644
--- a/src/test/java/com/android/tools/r8/ProguardMapMarkerTest.java
+++ b/src/test/java/com/android/tools/r8/ProguardMapMarkerTest.java
@@ -63,15 +63,11 @@
.setProgramConsumer(
new DexIndexedConsumer.ForwardingConsumer(null) {
@Override
- public void accept(
- int fileIndex,
- ByteDataView data,
- Set<String> descriptors,
- DiagnosticsHandler handler) {
+ public void acceptDexIndexedFile(DexIndexedConsumerData data) {
Marker marker;
try {
Collection<Marker> markers =
- ExtractMarker.extractMarkerFromDexProgramData(data.copyByteData());
+ ExtractMarker.extractMarkerFromDexProgramData(data.getByteDataCopy());
assertEquals(1, markers.size());
marker = markers.iterator().next();
} catch (Exception e) {
@@ -111,12 +107,11 @@
.setProgramConsumer(
new ClassFileConsumer.ForwardingConsumer(null) {
@Override
- public void accept(
- ByteDataView data, String descriptor, DiagnosticsHandler handler) {
+ public void acceptClassFile(ClassFileConsumerData data) {
Marker marker;
try {
Collection<Marker> markers =
- ExtractMarker.extractMarkerFromClassProgramData(data.copyByteData());
+ ExtractMarker.extractMarkerFromClassProgramData(data.getByteDataCopy());
assertEquals(1, markers.size());
marker = markers.iterator().next();
} catch (Exception e) {
diff --git a/src/test/java/com/android/tools/r8/R8ModeMarkerTest.java b/src/test/java/com/android/tools/r8/R8ModeMarkerTest.java
index 32f0871..d4ab329 100644
--- a/src/test/java/com/android/tools/r8/R8ModeMarkerTest.java
+++ b/src/test/java/com/android/tools/r8/R8ModeMarkerTest.java
@@ -8,7 +8,6 @@
import com.android.tools.r8.dex.Marker;
import java.util.Collection;
-import java.util.Set;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@@ -40,11 +39,10 @@
}
@Override
- public void accept(
- int fileIndex, ByteDataView data, Set<String> descriptors, DiagnosticsHandler handler) {
+ public void acceptDexIndexedFile(DexIndexedConsumerData data) {
try {
Collection<Marker> markers =
- ExtractMarker.extractMarkerFromDexProgramData(data.copyByteData());
+ ExtractMarker.extractMarkerFromDexProgramData(data.getByteDataCopy());
assertEquals(1, markers.size());
marker = markers.iterator().next();
} catch (Exception e) {
@@ -67,10 +65,10 @@
}
@Override
- public void accept(ByteDataView data, String descriptors, DiagnosticsHandler handler) {
+ public void acceptClassFile(ClassFileConsumerData data) {
try {
Collection<Marker> markers =
- ExtractMarker.extractMarkerFromClassProgramData(data.copyByteData());
+ ExtractMarker.extractMarkerFromClassProgramData(data.getByteDataCopy());
assertEquals(1, markers.size());
marker = markers.iterator().next();
} catch (Exception e) {
diff --git a/src/test/java/com/android/tools/r8/d8/DexVersionTests.java b/src/test/java/com/android/tools/r8/d8/DexVersionTests.java
index f413f98..7c82964 100644
--- a/src/test/java/com/android/tools/r8/d8/DexVersionTests.java
+++ b/src/test/java/com/android/tools/r8/d8/DexVersionTests.java
@@ -5,18 +5,17 @@
import static org.junit.Assert.assertTrue;
-import com.android.tools.r8.ByteDataView;
import com.android.tools.r8.CompilationFailedException;
import com.android.tools.r8.D8;
import com.android.tools.r8.D8Command;
import com.android.tools.r8.DexIndexedConsumer;
+import com.android.tools.r8.DexIndexedConsumerData;
import com.android.tools.r8.DiagnosticsHandler;
import com.android.tools.r8.OutputMode;
import com.android.tools.r8.ToolHelper;
import com.android.tools.r8.utils.AndroidApiLevel;
import java.nio.file.Path;
import java.nio.file.Paths;
-import java.util.Set;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -77,8 +76,7 @@
boolean hasOutput = false;
@Override
- public void accept(
- int fileIndex, ByteDataView data, Set<String> descriptors, DiagnosticsHandler handler) {
+ public void acceptDexIndexedFile(DexIndexedConsumerData data) {
hasOutput = true;
}
diff --git a/src/test/java/com/android/tools/r8/desugar/DesugarToClassFileDeprecatedAttribute.java b/src/test/java/com/android/tools/r8/desugar/DesugarToClassFileDeprecatedAttribute.java
index efcc639..2bc0090 100644
--- a/src/test/java/com/android/tools/r8/desugar/DesugarToClassFileDeprecatedAttribute.java
+++ b/src/test/java/com/android/tools/r8/desugar/DesugarToClassFileDeprecatedAttribute.java
@@ -6,11 +6,10 @@
import static org.junit.Assert.assertTrue;
-import com.android.tools.r8.ByteDataView;
import com.android.tools.r8.ClassFileConsumer;
import com.android.tools.r8.ClassFileConsumer.ForwardingConsumer;
+import com.android.tools.r8.ClassFileConsumerData;
import com.android.tools.r8.D8TestCompileResult;
-import com.android.tools.r8.DiagnosticsHandler;
import com.android.tools.r8.R8FullTestBuilder;
import com.android.tools.r8.TestBase;
import com.android.tools.r8.TestParameters;
@@ -91,9 +90,8 @@
.setProgramConsumer(
new ClassFileConsumer.ForwardingConsumer(null) {
@Override
- public void accept(
- ByteDataView data, String descriptor, DiagnosticsHandler handler) {
- checkDeprecatedAttributes(data.getBuffer());
+ public void acceptClassFile(ClassFileConsumerData data) {
+ checkDeprecatedAttributes(data.getByteDataView().getBuffer());
}
})
.compile();
@@ -128,8 +126,8 @@
builder.setProgramConsumer(
new ForwardingConsumer(null) {
@Override
- public void accept(ByteDataView data, String descriptor, DiagnosticsHandler handler) {
- checkDeprecatedAttributes(data.getBuffer());
+ public void acceptClassFile(ClassFileConsumerData data) {
+ checkDeprecatedAttributes(data.getByteDataView().getBuffer());
}
});
}
diff --git a/src/test/java/com/android/tools/r8/desugar/backports/BackportDuplicationTest.java b/src/test/java/com/android/tools/r8/desugar/backports/BackportDuplicationTest.java
index ed2dd4e..9be08a2 100644
--- a/src/test/java/com/android/tools/r8/desugar/backports/BackportDuplicationTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/backports/BackportDuplicationTest.java
@@ -10,11 +10,11 @@
import static org.junit.Assert.fail;
import static org.junit.Assume.assumeTrue;
-import com.android.tools.r8.ByteDataView;
import com.android.tools.r8.ClassFileConsumer;
+import com.android.tools.r8.ClassFileConsumerData;
import com.android.tools.r8.CompilationFailedException;
import com.android.tools.r8.DexFilePerClassFileConsumer;
-import com.android.tools.r8.DiagnosticsHandler;
+import com.android.tools.r8.DexFilePerClassFileConsumerData;
import com.android.tools.r8.OutputMode;
import com.android.tools.r8.TestBase;
import com.android.tools.r8.TestParameters;
@@ -247,21 +247,16 @@
firstRoundOutput.isCf()
? new ClassFileConsumer.ForwardingConsumer(null) {
@Override
- public void accept(
- ByteDataView data, String descriptor, DiagnosticsHandler handler) {
- byte[] bytes = data.copyByteData();
+ public void acceptClassFile(ClassFileConsumerData data) {
+ byte[] bytes = data.getByteDataCopy();
assert bytes != null;
outputsRoundOne.add(bytes);
}
}
: new DexFilePerClassFileConsumer.ForwardingConsumer(null) {
@Override
- public void accept(
- String primaryClassDescriptor,
- ByteDataView data,
- Set<String> descriptors,
- DiagnosticsHandler handler) {
- byte[] bytes = data.copyByteData();
+ public void acceptDexFile(DexFilePerClassFileConsumerData data) {
+ byte[] bytes = data.getByteDataCopy();
assert bytes != null;
outputsRoundOne.add(bytes);
}
diff --git a/src/test/java/com/android/tools/r8/desugar/backports/BackportMainDexTest.java b/src/test/java/com/android/tools/r8/desugar/backports/BackportMainDexTest.java
index 5369238..4a55fc2 100644
--- a/src/test/java/com/android/tools/r8/desugar/backports/BackportMainDexTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/backports/BackportMainDexTest.java
@@ -9,8 +9,8 @@
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
-import com.android.tools.r8.ByteDataView;
import com.android.tools.r8.DexIndexedConsumer;
+import com.android.tools.r8.DexIndexedConsumerData;
import com.android.tools.r8.DiagnosticsHandler;
import com.android.tools.r8.GenerateMainDexListRunResult;
import com.android.tools.r8.OutputMode;
@@ -361,13 +361,12 @@
Set<String> mainDexDescriptors;
@Override
- public void accept(
- int fileIndex, ByteDataView data, Set<String> descriptors, DiagnosticsHandler handler) {
- if (fileIndex == 0) {
+ public void acceptDexIndexedFile(DexIndexedConsumerData data) {
+ if (data.getFileIndex() == 0) {
assertNull(mainDexBytes);
assertNull(mainDexDescriptors);
- mainDexBytes = data.copyByteData();
- mainDexDescriptors = descriptors;
+ mainDexBytes = data.getByteDataCopy();
+ mainDexDescriptors = data.getClassDescriptors();
}
}
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/EmptyDesugaredLibrary.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/EmptyDesugaredLibrary.java
index 3fd5104..2f65784 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/EmptyDesugaredLibrary.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/EmptyDesugaredLibrary.java
@@ -9,9 +9,8 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
-import com.android.tools.r8.ByteDataView;
import com.android.tools.r8.DexIndexedConsumer;
-import com.android.tools.r8.DiagnosticsHandler;
+import com.android.tools.r8.DexIndexedConsumerData;
import com.android.tools.r8.L8TestBuilder;
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.desugar.desugaredlibrary.test.CompilationSpecification;
@@ -22,7 +21,6 @@
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
-import java.util.Set;
import java.util.zip.ZipFile;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -67,8 +65,7 @@
}
@Override
- public void accept(
- int fileIndex, ByteDataView data, Set<String> descriptors, DiagnosticsHandler handler) {
+ public void acceptDexIndexedFile(DexIndexedConsumerData data) {
count++;
}
}
diff --git a/src/test/java/com/android/tools/r8/dexsplitter/SplitterTestBase.java b/src/test/java/com/android/tools/r8/dexsplitter/SplitterTestBase.java
index 1d8821e..3988efd 100644
--- a/src/test/java/com/android/tools/r8/dexsplitter/SplitterTestBase.java
+++ b/src/test/java/com/android/tools/r8/dexsplitter/SplitterTestBase.java
@@ -3,10 +3,8 @@
import static junit.framework.TestCase.fail;
import static org.junit.Assume.assumeTrue;
-import com.android.tools.r8.ByteDataView;
import com.android.tools.r8.CompilationFailedException;
import com.android.tools.r8.DexIndexedConsumer.ArchiveConsumer;
-import com.android.tools.r8.DiagnosticsHandler;
import com.android.tools.r8.FeatureSplit;
import com.android.tools.r8.R8FullTestBuilder;
import com.android.tools.r8.R8TestCompileResult;
@@ -92,17 +90,7 @@
builder
.addProgramResourceProvider(ArchiveResourceProvider.fromArchive(featureJar, true))
- .setProgramConsumer(
- new ArchiveConsumer(outputPath, true) {
- @Override
- public void accept(
- int fileIndex,
- ByteDataView data,
- Set<String> descriptors,
- DiagnosticsHandler handler) {
- super.accept(fileIndex, data, descriptors, handler);
- }
- });
+ .setProgramConsumer(new ArchiveConsumer(outputPath, true));
}
public static FeatureSplit splitWithNonJavaFile(
diff --git a/src/test/java/com/android/tools/r8/regress/Regress37740372.java b/src/test/java/com/android/tools/r8/regress/Regress37740372.java
index 8047716..b46866c 100644
--- a/src/test/java/com/android/tools/r8/regress/Regress37740372.java
+++ b/src/test/java/com/android/tools/r8/regress/Regress37740372.java
@@ -8,12 +8,11 @@
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
-import com.android.tools.r8.ByteDataView;
import com.android.tools.r8.D8;
import com.android.tools.r8.D8Command;
import com.android.tools.r8.D8Command.Builder;
import com.android.tools.r8.DexIndexedConsumer;
-import com.android.tools.r8.DiagnosticsHandler;
+import com.android.tools.r8.DexIndexedConsumerData;
import com.android.tools.r8.origin.EmbeddedOrigin;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.smali.SmaliTestBase;
@@ -22,7 +21,6 @@
import com.android.tools.r8.utils.codeinspector.ClassSubject;
import com.android.tools.r8.utils.codeinspector.CodeInspector;
import java.util.Base64;
-import java.util.Set;
import org.junit.Test;
public class Regress37740372 extends SmaliTestBase {
@@ -142,10 +140,9 @@
}
@Override
- public void accept(
- int fileIndex, ByteDataView data, Set<String> descriptors, DiagnosticsHandler handler) {
- assertEquals(0, fileIndex);
- this.data = data.copyByteData();
+ public void acceptDexIndexedFile(DexIndexedConsumerData data) {
+ assertEquals(0, data.getFileIndex());
+ this.data = data.getByteDataCopy();
}
}
diff --git a/src/test/java/com/android/tools/r8/utils/Smali.java b/src/test/java/com/android/tools/r8/utils/Smali.java
index 4321812..4190da5 100644
--- a/src/test/java/com/android/tools/r8/utils/Smali.java
+++ b/src/test/java/com/android/tools/r8/utils/Smali.java
@@ -3,8 +3,8 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.utils;
-import com.android.tools.r8.ByteDataView;
import com.android.tools.r8.DexIndexedConsumer;
+import com.android.tools.r8.DexIndexedConsumerData;
import com.android.tools.r8.DiagnosticsHandler;
import com.android.tools.r8.dex.ApplicationReader;
import com.android.tools.r8.dex.ApplicationWriter;
@@ -19,7 +19,6 @@
import java.io.StringReader;
import java.util.Arrays;
import java.util.List;
-import java.util.Set;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import org.antlr.runtime.CommonTokenStream;
@@ -129,9 +128,8 @@
byte[] contents;
@Override
- public void accept(
- int fileIndex, ByteDataView data, Set<String> descriptors, DiagnosticsHandler handler) {
- contents = data.copyByteData();
+ public void acceptDexIndexedFile(DexIndexedConsumerData data) {
+ contents = data.getByteDataCopy();
}
@Override