Revert "Introduce a consumer data abstraction for all program consumers."
This reverts commit 1d834576b0065e8a8e801362919f095a69b5db54.
The change to the program consumers is not backwards compatible.
A new API needs to be introduced to record the synthesized items graph.
Bug: b/241351268
Change-Id: I1f09551a58b0f9235ceba89415a5afd46cd39e42
diff --git a/src/main/java/com/android/tools/r8/ClassFileConsumer.java b/src/main/java/com/android/tools/r8/ClassFileConsumer.java
index 79330fb..fa3e5c4 100644
--- a/src/main/java/com/android/tools/r8/ClassFileConsumer.java
+++ b/src/main/java/com/android/tools/r8/ClassFileConsumer.java
@@ -4,7 +4,6 @@
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;
@@ -37,28 +36,22 @@
* {@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} 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.
+ * <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 data Java class-file encoded data and its meta-data.
+ * @param data Java class-file encoded data.
+ * @param descriptor Class descriptor of the class the data pertains to.
+ * @param handler Diagnostics handler for reporting.
*/
- 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));
- }
+ void accept(ByteDataView data, String descriptor, DiagnosticsHandler 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);
@@ -75,9 +68,9 @@
}
@Override
- public void acceptClassFile(ClassFileConsumerData data) {
+ public void accept(ByteDataView data, String descriptor, DiagnosticsHandler handler) {
if (consumer != null) {
- consumer.acceptClassFile(data);
+ consumer.accept(data, descriptor, handler);
}
}
@@ -124,12 +117,9 @@
}
@Override
- public void acceptClassFile(ClassFileConsumerData data) {
- super.acceptClassFile(data);
- outputBuilder.addFile(
- DescriptorUtils.getClassFileName(data.getClassDescriptor()),
- data.getByteDataView(),
- data.getDiagnosticsHandler());
+ public void accept(ByteDataView data, String descriptor, DiagnosticsHandler handler) {
+ super.accept(data, descriptor, handler);
+ outputBuilder.addFile(DescriptorUtils.getClassFileName(descriptor), data, handler);
}
@Override
@@ -204,12 +194,9 @@
}
@Override
- public void acceptClassFile(ClassFileConsumerData data) {
- super.acceptClassFile(data);
- outputBuilder.addFile(
- DescriptorUtils.getClassFileName(data.getClassDescriptor()),
- data.getByteDataView(),
- data.getDiagnosticsHandler());
+ public void accept(ByteDataView data, String descriptor, DiagnosticsHandler handler) {
+ super.accept(data, descriptor, handler);
+ outputBuilder.addFile(DescriptorUtils.getClassFileName(descriptor), data, handler);
}
@Override
diff --git a/src/main/java/com/android/tools/r8/ClassFileConsumerData.java b/src/main/java/com/android/tools/r8/ClassFileConsumerData.java
deleted file mode 100644
index eeef801..0000000
--- a/src/main/java/com/android/tools/r8/ClassFileConsumerData.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// 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 85a0fbf..c57bc22 100644
--- a/src/main/java/com/android/tools/r8/D8.java
+++ b/src/main/java/com/android/tools/r8/D8.java
@@ -53,6 +53,7 @@
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;
@@ -440,14 +441,12 @@
private final List<ProgramResource> resources = new ArrayList<>();
@Override
- public synchronized void acceptDexIndexedFile(DexIndexedConsumerData data) {
+ public synchronized void accept(
+ int fileIndex, ByteDataView data, Set<String> descriptors, DiagnosticsHandler handler) {
// TODO(b/154106502): Map Origin information.
resources.add(
ProgramResource.fromBytes(
- Origin.unknown(),
- ProgramResource.Kind.DEX,
- data.getByteDataCopy(),
- data.getClassDescriptors()));
+ Origin.unknown(), ProgramResource.Kind.DEX, data.copyByteData(), descriptors));
}
@Override
diff --git a/src/main/java/com/android/tools/r8/DexFilePerClassFileConsumer.java b/src/main/java/com/android/tools/r8/DexFilePerClassFileConsumer.java
index 68e6f12..1675cb2 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 {
- boolean SHOULD_COMBINE_SYNTHETIC_CLASSES = true;
+ static final boolean SHOULD_COMBINE_SYNTHETIC_CLASSES = true;
/**
* Callback to receive DEX data for a single Java class-file input and its companion classes.
@@ -42,30 +42,24 @@
* <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
- * {@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.
+ * {@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} 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.
+ * <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.
*/
- 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 compatibility, old consumers not implementing the new API will be
- // forwarded to. New consumers must implement the accept method on the data object.
+ // To avoid breaking binary compatiblity, old consumers not implementing the new API will be
+ // forwarded to. New consumers must implement the accept on ByteDataView.
accept(primaryClassDescriptor, data.copyByteData(), descriptors, handler);
}
@@ -98,8 +92,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);
@@ -116,9 +110,13 @@
}
@Override
- public void acceptDexFile(DexFilePerClassFileConsumerData data) {
+ public void accept(
+ String primaryClassDescriptor,
+ ByteDataView data,
+ Set<String> descriptors,
+ DiagnosticsHandler handler) {
if (consumer != null) {
- consumer.acceptDexFile(data);
+ consumer.accept(primaryClassDescriptor, data, descriptors, handler);
}
}
@@ -180,12 +178,13 @@
}
@Override
- public void acceptDexFile(DexFilePerClassFileConsumerData data) {
- super.acceptDexFile(data);
- outputBuilder.addFile(
- getDexFileName(data.getPrimaryClassDescriptor()),
- data.getByteDataView(),
- data.getDiagnosticsHandler());
+ public void accept(
+ String primaryClassDescriptor,
+ ByteDataView data,
+ Set<String> descriptors,
+ DiagnosticsHandler handler) {
+ super.accept(primaryClassDescriptor, data, descriptors, handler);
+ outputBuilder.addFile(getDexFileName(primaryClassDescriptor), data, handler);
}
@Override
@@ -263,12 +262,13 @@
}
@Override
- public void acceptDexFile(DexFilePerClassFileConsumerData data) {
- super.acceptDexFile(data);
- outputBuilder.addFile(
- getDexFileName(data.getPrimaryClassDescriptor()),
- data.getByteDataView(),
- data.getDiagnosticsHandler());
+ public void accept(
+ String primaryClassDescriptor,
+ ByteDataView data,
+ Set<String> descriptors,
+ DiagnosticsHandler handler) {
+ super.accept(primaryClassDescriptor, data, descriptors, handler);
+ outputBuilder.addFile(getDexFileName(primaryClassDescriptor), data, handler);
}
@Override
diff --git a/src/main/java/com/android/tools/r8/DexFilePerClassFileConsumerData.java b/src/main/java/com/android/tools/r8/DexFilePerClassFileConsumerData.java
index fba6b8d..e69de29 100644
--- a/src/main/java/com/android/tools/r8/DexFilePerClassFileConsumerData.java
+++ b/src/main/java/com/android/tools/r8/DexFilePerClassFileConsumerData.java
@@ -1,35 +0,0 @@
-// 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();
-
- /**
- * Class descriptor of the primary-class's synthetic context.
- *
- * <p>If primary class is a compiler-synthesized class (i.e. it is an input that was synthesized
- * by a prior D8 intermediate compilation) then the value is the descriptor of the class that
- * caused the primary class to be synthesized. The value is null in all other cases.
- */
- String getSynthesizingContextForPrimaryClass();
-}
diff --git a/src/main/java/com/android/tools/r8/DexIndexedConsumer.java b/src/main/java/com/android/tools/r8/DexIndexedConsumer.java
index cbccf59..39f5b2e 100644
--- a/src/main/java/com/android/tools/r8/DexIndexedConsumer.java
+++ b/src/main/java/com/android/tools/r8/DexIndexedConsumer.java
@@ -46,22 +46,17 @@
* <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
- * {@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.
+ * {@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} 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.
+ * <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.
*/
- 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
@@ -82,8 +77,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);
@@ -100,9 +95,10 @@
}
@Override
- public void acceptDexIndexedFile(DexIndexedConsumerData data) {
+ public void accept(
+ int fileIndex, ByteDataView data, Set<String> descriptors, DiagnosticsHandler handler) {
if (consumer != null) {
- consumer.acceptDexIndexedFile(data);
+ consumer.accept(fileIndex, data, descriptors, handler);
}
}
@@ -154,13 +150,11 @@
}
@Override
- public void acceptDexIndexedFile(DexIndexedConsumerData data) {
- super.acceptDexIndexedFile(data);
+ public void accept(
+ int fileIndex, ByteDataView data, Set<String> descriptors, DiagnosticsHandler handler) {
+ super.accept(fileIndex, data, descriptors, handler);
outputBuilder.addIndexedClassFile(
- data.getFileIndex(),
- DexUtils.getDefaultDexFileName(data.getFileIndex()),
- data.getByteDataView(),
- data.getDiagnosticsHandler());
+ fileIndex, DexUtils.getDefaultDexFileName(fileIndex), data, handler);
}
@Override
@@ -251,17 +245,15 @@
}
@Override
- public void acceptDexIndexedFile(DexIndexedConsumerData data) {
- super.acceptDexIndexedFile(data);
+ public void accept(
+ int fileIndex, ByteDataView data, Set<String> descriptors, DiagnosticsHandler handler) {
+ super.accept(fileIndex, data, descriptors, handler);
try {
prepareDirectory();
} catch (IOException e) {
- data.getDiagnosticsHandler().error(new ExceptionDiagnostic(e, new PathOrigin(directory)));
+ handler.error(new ExceptionDiagnostic(e, new PathOrigin(directory)));
}
- outputBuilder.addFile(
- DexUtils.getDefaultDexFileName(data.getFileIndex()),
- data.getByteDataView(),
- data.getDiagnosticsHandler());
+ outputBuilder.addFile(DexUtils.getDefaultDexFileName(fileIndex), data, handler);
}
@Override
diff --git a/src/main/java/com/android/tools/r8/DexIndexedConsumerData.java b/src/main/java/com/android/tools/r8/DexIndexedConsumerData.java
deleted file mode 100644
index 1c46f8c..0000000
--- a/src/main/java/com/android/tools/r8/DexIndexedConsumerData.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// 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 d0daf58..99cb304 100644
--- a/src/main/java/com/android/tools/r8/dex/ApplicationWriter.java
+++ b/src/main/java/com/android/tools/r8/dex/ApplicationWriter.java
@@ -58,8 +58,6 @@
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;
@@ -588,14 +586,13 @@
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 (primaryClassDescriptor != null) {
+ } else if (virtualFile.getPrimaryClassDescriptor() != null) {
consumer = options.getDexFilePerClassFileConsumer();
byteBufferProvider = options.getDexFilePerClassFileConsumer();
} else {
@@ -623,18 +620,14 @@
timing.begin("Pass bytes to consumer");
if (consumer instanceof DexFilePerClassFileConsumer) {
((DexFilePerClassFileConsumer) consumer)
- .acceptDexFile(
- new DexFilePerClassFileConsumerDataImpl(
- primaryClassDescriptor,
- virtualFile.getPrimaryClassSynthesizingContextDescriptor(),
- data,
- virtualFile.getClassDescriptors(),
- options.reporter));
+ .accept(
+ virtualFile.getPrimaryClassDescriptor(),
+ data,
+ virtualFile.getClassDescriptors(),
+ options.reporter);
} else {
((DexIndexedConsumer) consumer)
- .acceptDexIndexedFile(
- new DexIndexedConsumerDataImpl(
- virtualFile.getId(), data, virtualFile.getClassDescriptors(), options.reporter));
+ .accept(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 cdb74b5..0a81bd2 100644
--- a/src/main/java/com/android/tools/r8/dex/ApplicationWriterExperimental.java
+++ b/src/main/java/com/android/tools/r8/dex/ApplicationWriterExperimental.java
@@ -18,7 +18,6 @@
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;
@@ -173,9 +172,7 @@
if (consumer instanceof DexFilePerClassFileConsumer) {
assert false;
} else {
- ((DexIndexedConsumer) consumer)
- .acceptDexIndexedFile(
- new DexIndexedConsumerDataImpl(0, data, Sets.newIdentityHashSet(), options.reporter));
+ ((DexIndexedConsumer) consumer).accept(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 49f2fbb..cc88ca9 100644
--- a/src/main/java/com/android/tools/r8/jar/CfApplicationWriter.java
+++ b/src/main/java/com/android/tools/r8/jar/CfApplicationWriter.java
@@ -47,7 +47,6 @@
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;
@@ -335,10 +334,7 @@
verifyCf(result);
}
ExceptionUtils.withConsumeResourceHandler(
- options.reporter,
- handler ->
- consumer.acceptClassFile(
- new ClassFileConsumerDataImpl(ByteDataView.of(result), desc, handler)));
+ options.reporter, handler -> consumer.accept(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 1c01a7b..7a77e25 100644
--- a/src/main/java/com/android/tools/r8/utils/AndroidAppConsumers.java
+++ b/src/main/java/com/android/tools/r8/utils/AndroidAppConsumers.java
@@ -4,16 +4,14 @@
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;
@@ -105,9 +103,13 @@
new Int2ReferenceAVLTreeMap<>();
@Override
- public void acceptDexIndexedFile(DexIndexedConsumerData data) {
- super.acceptDexIndexedFile(data);
- addDexFile(data.getFileIndex(), data.getByteDataCopy(), data.getClassDescriptors());
+ public void accept(
+ int fileIndex,
+ ByteDataView data,
+ Set<String> descriptors,
+ DiagnosticsHandler handler) {
+ super.accept(fileIndex, data, descriptors, handler);
+ addDexFile(fileIndex, data.copyByteData(), descriptors);
}
@Override
@@ -180,12 +182,13 @@
private TreeMap<String, DescriptorsWithContents> files = new TreeMap<>();
@Override
- public void acceptDexFile(DexFilePerClassFileConsumerData data) {
- super.acceptDexFile(data);
- addDexFile(
- data.getPrimaryClassDescriptor(),
- data.getByteDataCopy(),
- data.getClassDescriptors());
+ public void accept(
+ String primaryClassDescriptor,
+ ByteDataView data,
+ Set<String> descriptors,
+ DiagnosticsHandler handler) {
+ super.accept(primaryClassDescriptor, data, descriptors, handler);
+ addDexFile(primaryClassDescriptor, data.copyByteData(), descriptors);
}
synchronized void addDexFile(
@@ -255,9 +258,9 @@
private List<DescriptorsWithContents> files = new ArrayList<>();
@Override
- public void acceptClassFile(ClassFileConsumerData data) {
- super.acceptClassFile(data);
- addClassFile(data.getByteDataCopy(), data.getClassDescriptor());
+ public void accept(ByteDataView data, String descriptor, DiagnosticsHandler handler) {
+ super.accept(data, descriptor, handler);
+ addClassFile(data.copyByteData(), descriptor);
}
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
deleted file mode 100644
index b375086..0000000
--- a/src/main/java/com/android/tools/r8/utils/ClassFileConsumerDataImpl.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// 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
index 9dc9e8b..e69de29 100644
--- a/src/main/java/com/android/tools/r8/utils/DexFilePerClassFileConsumerDataImpl.java
+++ b/src/main/java/com/android/tools/r8/utils/DexFilePerClassFileConsumerDataImpl.java
@@ -1,61 +0,0 @@
-// 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 String synthesizingContextDescriptor;
- private final ByteDataView data;
- private final Set<String> classDescriptors;
- private final DiagnosticsHandler handler;
-
- public DexFilePerClassFileConsumerDataImpl(
- String primaryClassDescriptor,
- String synthesizingContextDescriptor,
- ByteDataView data,
- Set<String> classDescriptors,
- DiagnosticsHandler handler) {
- this.primaryClassDescriptor = primaryClassDescriptor;
- this.synthesizingContextDescriptor = synthesizingContextDescriptor;
- this.data = data;
- this.classDescriptors = classDescriptors;
- this.handler = handler;
- }
-
- @Override
- public String getPrimaryClassDescriptor() {
- return primaryClassDescriptor;
- }
-
- @Override
- public String getSynthesizingContextForPrimaryClass() {
- return synthesizingContextDescriptor;
- }
-
- @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
deleted file mode 100644
index 2de21e4..0000000
--- a/src/main/java/com/android/tools/r8/utils/DexIndexedConsumerDataImpl.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// 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 6fcc519..1428459 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalGlobalSyntheticsProgramConsumer.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalGlobalSyntheticsProgramConsumer.java
@@ -9,7 +9,6 @@
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;
@@ -103,8 +102,12 @@
}
@Override
- public synchronized void acceptDexFile(DexFilePerClassFileConsumerData data) {
- builder.addGlobalSynthetic(data.getPrimaryClassDescriptor(), data.getByteDataCopy());
+ public synchronized void accept(
+ String primaryClassDescriptor,
+ ByteDataView data,
+ Set<String> descriptors,
+ DiagnosticsHandler handler) {
+ builder.addGlobalSynthetic(primaryClassDescriptor, data.copyByteData());
}
@Override
@@ -146,8 +149,12 @@
}
@Override
- public void acceptDexFile(DexFilePerClassFileConsumerData data) {
- addGlobal(data.getPrimaryClassDescriptor(), data.getByteDataView());
+ public void accept(
+ String primaryClassDescriptor,
+ ByteDataView data,
+ Set<String> descriptors,
+ DiagnosticsHandler handler) {
+ addGlobal(primaryClassDescriptor, data);
}
@Override
diff --git a/src/test/java/com/android/tools/r8/D8CommandTest.java b/src/test/java/com/android/tools/r8/D8CommandTest.java
index ff10302..11cebfd 100644
--- a/src/test/java/com/android/tools/r8/D8CommandTest.java
+++ b/src/test/java/com/android/tools/r8/D8CommandTest.java
@@ -44,6 +44,7 @@
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;
@@ -465,10 +466,15 @@
class MultiTypeConsumer implements DexIndexedConsumer, DexFilePerClassFileConsumer {
@Override
- public void acceptDexFile(DexFilePerClassFileConsumerData data) {}
+ public void accept(
+ String primaryClassDescriptor,
+ ByteDataView data,
+ Set<String> descriptors,
+ DiagnosticsHandler handler) {}
@Override
- public void acceptDexIndexedFile(DexIndexedConsumerData data) {}
+ public void accept(
+ int fileIndex, ByteDataView data, Set<String> descriptors, DiagnosticsHandler handler) {}
@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 e8a4d1d..6ed73d8 100644
--- a/src/test/java/com/android/tools/r8/ExtractMarkerTest.java
+++ b/src/test/java/com/android/tools/r8/ExtractMarkerTest.java
@@ -14,6 +14,7 @@
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;
@@ -59,11 +60,15 @@
.setProgramConsumer(
new DexIndexedConsumer.ForwardingConsumer(null) {
@Override
- public void acceptDexIndexedFile(DexIndexedConsumerData data) {
+ public void accept(
+ int fileIndex,
+ ByteDataView data,
+ Set<String> descriptors,
+ DiagnosticsHandler handler) {
Marker marker;
try {
Collection<Marker> markers =
- ExtractMarker.extractMarkerFromDexProgramData(data.getByteDataCopy());
+ ExtractMarker.extractMarkerFromDexProgramData(data.copyByteData());
assertEquals(1, markers.size());
marker = markers.iterator().next();
} catch (Exception e) {
@@ -99,11 +104,12 @@
.setProgramConsumer(
new ClassFileConsumer.ForwardingConsumer(null) {
@Override
- public void acceptClassFile(ClassFileConsumerData data) {
+ public void accept(
+ ByteDataView data, String descriptor, DiagnosticsHandler handler) {
Marker marker;
try {
Collection<Marker> markers =
- ExtractMarker.extractMarkerFromClassProgramData(data.getByteDataCopy());
+ ExtractMarker.extractMarkerFromClassProgramData(data.copyByteData());
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 5be0095..f0b68de 100644
--- a/src/test/java/com/android/tools/r8/ProguardMapMarkerTest.java
+++ b/src/test/java/com/android/tools/r8/ProguardMapMarkerTest.java
@@ -63,11 +63,15 @@
.setProgramConsumer(
new DexIndexedConsumer.ForwardingConsumer(null) {
@Override
- public void acceptDexIndexedFile(DexIndexedConsumerData data) {
+ public void accept(
+ int fileIndex,
+ ByteDataView data,
+ Set<String> descriptors,
+ DiagnosticsHandler handler) {
Marker marker;
try {
Collection<Marker> markers =
- ExtractMarker.extractMarkerFromDexProgramData(data.getByteDataCopy());
+ ExtractMarker.extractMarkerFromDexProgramData(data.copyByteData());
assertEquals(1, markers.size());
marker = markers.iterator().next();
} catch (Exception e) {
@@ -107,11 +111,12 @@
.setProgramConsumer(
new ClassFileConsumer.ForwardingConsumer(null) {
@Override
- public void acceptClassFile(ClassFileConsumerData data) {
+ public void accept(
+ ByteDataView data, String descriptor, DiagnosticsHandler handler) {
Marker marker;
try {
Collection<Marker> markers =
- ExtractMarker.extractMarkerFromClassProgramData(data.getByteDataCopy());
+ ExtractMarker.extractMarkerFromClassProgramData(data.copyByteData());
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 d4ab329..32f0871 100644
--- a/src/test/java/com/android/tools/r8/R8ModeMarkerTest.java
+++ b/src/test/java/com/android/tools/r8/R8ModeMarkerTest.java
@@ -8,6 +8,7 @@
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;
@@ -39,10 +40,11 @@
}
@Override
- public void acceptDexIndexedFile(DexIndexedConsumerData data) {
+ public void accept(
+ int fileIndex, ByteDataView data, Set<String> descriptors, DiagnosticsHandler handler) {
try {
Collection<Marker> markers =
- ExtractMarker.extractMarkerFromDexProgramData(data.getByteDataCopy());
+ ExtractMarker.extractMarkerFromDexProgramData(data.copyByteData());
assertEquals(1, markers.size());
marker = markers.iterator().next();
} catch (Exception e) {
@@ -65,10 +67,10 @@
}
@Override
- public void acceptClassFile(ClassFileConsumerData data) {
+ public void accept(ByteDataView data, String descriptors, DiagnosticsHandler handler) {
try {
Collection<Marker> markers =
- ExtractMarker.extractMarkerFromClassProgramData(data.getByteDataCopy());
+ ExtractMarker.extractMarkerFromClassProgramData(data.copyByteData());
assertEquals(1, markers.size());
marker = markers.iterator().next();
} catch (Exception e) {
diff --git a/src/test/java/com/android/tools/r8/compilerapi/dexconsumers/PerClassSyntheticContextsTest.java b/src/test/java/com/android/tools/r8/compilerapi/dexconsumers/PerClassSyntheticContextsTest.java
index 69f7b9b..7172b17 100644
--- a/src/test/java/com/android/tools/r8/compilerapi/dexconsumers/PerClassSyntheticContextsTest.java
+++ b/src/test/java/com/android/tools/r8/compilerapi/dexconsumers/PerClassSyntheticContextsTest.java
@@ -3,14 +3,13 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.compilerapi.dexconsumers;
-import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import com.android.tools.r8.ByteDataView;
import com.android.tools.r8.ClassFileConsumer;
-import com.android.tools.r8.ClassFileConsumerData;
import com.android.tools.r8.D8;
import com.android.tools.r8.D8Command;
import com.android.tools.r8.DexFilePerClassFileConsumer;
-import com.android.tools.r8.DexFilePerClassFileConsumerData;
import com.android.tools.r8.DiagnosticsHandler;
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.compilerapi.CompilerApiTest;
@@ -20,6 +19,7 @@
import com.android.tools.r8.synthesis.SyntheticItemsTestUtils;
import java.util.HashMap;
import java.util.Map;
+import java.util.Set;
import java.util.function.Consumer;
import org.junit.Test;
@@ -47,8 +47,8 @@
new ClassFileConsumer() {
@Override
- public void acceptClassFile(ClassFileConsumerData data) {
- outputs.put(data.getClassDescriptor(), data.getByteDataCopy());
+ public void accept(ByteDataView data, String descriptor, DiagnosticsHandler handler) {
+ outputs.put(descriptor, data.copyByteData());
}
@Override
@@ -60,7 +60,10 @@
new ApiTest(ApiTest.PARAMETERS)
.run(
outputs.get(backport.getDescriptor()),
- context -> assertEquals(descriptor(UsesBackport.class), context));
+ context -> {
+ // TODO(b/241351268): This should be the UsesBackport class as context.
+ assertNull(context);
+ });
}
public static class UsesBackport {
@@ -83,9 +86,15 @@
.setMinApiLevel(1)
.setProgramConsumer(
new DexFilePerClassFileConsumer() {
+
@Override
- public void acceptDexFile(DexFilePerClassFileConsumerData data) {
- syntheticContext.accept(data.getSynthesizingContextForPrimaryClass());
+ public void accept(
+ String primaryClassDescriptor,
+ ByteDataView data,
+ Set<String> descriptors,
+ DiagnosticsHandler handler) {
+ // TODO(b/241351268): Inform the caller of the context once possible.
+ syntheticContext.accept(null);
}
@Override
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 7c82964..f413f98 100644
--- a/src/test/java/com/android/tools/r8/d8/DexVersionTests.java
+++ b/src/test/java/com/android/tools/r8/d8/DexVersionTests.java
@@ -5,17 +5,18 @@
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;
@@ -76,7 +77,8 @@
boolean hasOutput = false;
@Override
- public void acceptDexIndexedFile(DexIndexedConsumerData data) {
+ public void accept(
+ int fileIndex, ByteDataView data, Set<String> descriptors, DiagnosticsHandler handler) {
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 2bc0090..efcc639 100644
--- a/src/test/java/com/android/tools/r8/desugar/DesugarToClassFileDeprecatedAttribute.java
+++ b/src/test/java/com/android/tools/r8/desugar/DesugarToClassFileDeprecatedAttribute.java
@@ -6,10 +6,11 @@
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;
@@ -90,8 +91,9 @@
.setProgramConsumer(
new ClassFileConsumer.ForwardingConsumer(null) {
@Override
- public void acceptClassFile(ClassFileConsumerData data) {
- checkDeprecatedAttributes(data.getByteDataView().getBuffer());
+ public void accept(
+ ByteDataView data, String descriptor, DiagnosticsHandler handler) {
+ checkDeprecatedAttributes(data.getBuffer());
}
})
.compile();
@@ -126,8 +128,8 @@
builder.setProgramConsumer(
new ForwardingConsumer(null) {
@Override
- public void acceptClassFile(ClassFileConsumerData data) {
- checkDeprecatedAttributes(data.getByteDataView().getBuffer());
+ public void accept(ByteDataView data, String descriptor, DiagnosticsHandler handler) {
+ checkDeprecatedAttributes(data.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 9be08a2..ed2dd4e 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.DexFilePerClassFileConsumerData;
+import com.android.tools.r8.DiagnosticsHandler;
import com.android.tools.r8.OutputMode;
import com.android.tools.r8.TestBase;
import com.android.tools.r8.TestParameters;
@@ -247,16 +247,21 @@
firstRoundOutput.isCf()
? new ClassFileConsumer.ForwardingConsumer(null) {
@Override
- public void acceptClassFile(ClassFileConsumerData data) {
- byte[] bytes = data.getByteDataCopy();
+ public void accept(
+ ByteDataView data, String descriptor, DiagnosticsHandler handler) {
+ byte[] bytes = data.copyByteData();
assert bytes != null;
outputsRoundOne.add(bytes);
}
}
: new DexFilePerClassFileConsumer.ForwardingConsumer(null) {
@Override
- public void acceptDexFile(DexFilePerClassFileConsumerData data) {
- byte[] bytes = data.getByteDataCopy();
+ public void accept(
+ String primaryClassDescriptor,
+ ByteDataView data,
+ Set<String> descriptors,
+ DiagnosticsHandler handler) {
+ byte[] bytes = data.copyByteData();
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 4a55fc2..5369238 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,12 +361,13 @@
Set<String> mainDexDescriptors;
@Override
- public void acceptDexIndexedFile(DexIndexedConsumerData data) {
- if (data.getFileIndex() == 0) {
+ public void accept(
+ int fileIndex, ByteDataView data, Set<String> descriptors, DiagnosticsHandler handler) {
+ if (fileIndex == 0) {
assertNull(mainDexBytes);
assertNull(mainDexDescriptors);
- mainDexBytes = data.getByteDataCopy();
- mainDexDescriptors = data.getClassDescriptors();
+ mainDexBytes = data.copyByteData();
+ mainDexDescriptors = descriptors;
}
}
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 2f65784..3fd5104 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,8 +9,9 @@
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.DexIndexedConsumerData;
+import com.android.tools.r8.DiagnosticsHandler;
import com.android.tools.r8.L8TestBuilder;
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.desugar.desugaredlibrary.test.CompilationSpecification;
@@ -21,6 +22,7 @@
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;
@@ -65,7 +67,8 @@
}
@Override
- public void acceptDexIndexedFile(DexIndexedConsumerData data) {
+ public void accept(
+ int fileIndex, ByteDataView data, Set<String> descriptors, DiagnosticsHandler handler) {
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 3988efd..1d8821e 100644
--- a/src/test/java/com/android/tools/r8/dexsplitter/SplitterTestBase.java
+++ b/src/test/java/com/android/tools/r8/dexsplitter/SplitterTestBase.java
@@ -3,8 +3,10 @@
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;
@@ -90,7 +92,17 @@
builder
.addProgramResourceProvider(ArchiveResourceProvider.fromArchive(featureJar, true))
- .setProgramConsumer(new ArchiveConsumer(outputPath, 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);
+ }
+ });
}
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 b46866c..8047716 100644
--- a/src/test/java/com/android/tools/r8/regress/Regress37740372.java
+++ b/src/test/java/com/android/tools/r8/regress/Regress37740372.java
@@ -8,11 +8,12 @@
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.DexIndexedConsumerData;
+import com.android.tools.r8.DiagnosticsHandler;
import com.android.tools.r8.origin.EmbeddedOrigin;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.smali.SmaliTestBase;
@@ -21,6 +22,7 @@
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 {
@@ -140,9 +142,10 @@
}
@Override
- public void acceptDexIndexedFile(DexIndexedConsumerData data) {
- assertEquals(0, data.getFileIndex());
- this.data = data.getByteDataCopy();
+ public void accept(
+ int fileIndex, ByteDataView data, Set<String> descriptors, DiagnosticsHandler handler) {
+ assertEquals(0, fileIndex);
+ this.data = data.copyByteData();
}
}
diff --git a/src/test/java/com/android/tools/r8/synthesis/RepeatedCompilationNestedSyntheticsTest.java b/src/test/java/com/android/tools/r8/synthesis/RepeatedCompilationNestedSyntheticsTest.java
index e273552..b18935b 100644
--- a/src/test/java/com/android/tools/r8/synthesis/RepeatedCompilationNestedSyntheticsTest.java
+++ b/src/test/java/com/android/tools/r8/synthesis/RepeatedCompilationNestedSyntheticsTest.java
@@ -10,11 +10,10 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
+import com.android.tools.r8.ByteDataView;
import com.android.tools.r8.ClassFileConsumer;
-import com.android.tools.r8.ClassFileConsumerData;
import com.android.tools.r8.DesugarGraphConsumer;
import com.android.tools.r8.DexFilePerClassFileConsumer;
-import com.android.tools.r8.DexFilePerClassFileConsumerData;
import com.android.tools.r8.DiagnosticsHandler;
import com.android.tools.r8.TestBase;
import com.android.tools.r8.TestParameters;
@@ -70,8 +69,8 @@
.setProgramConsumer(
new ClassFileConsumer() {
@Override
- public void acceptClassFile(ClassFileConsumerData data) {
- firstCompilation.put(data.getClassDescriptor(), data.getByteDataCopy());
+ public void accept(ByteDataView data, String descriptor, DiagnosticsHandler handler) {
+ firstCompilation.put(descriptor, data.copyByteData());
}
@Override
@@ -122,9 +121,10 @@
b.setProgramConsumer(
new ClassFileConsumer() {
@Override
- public void acceptClassFile(ClassFileConsumerData data) {
- secondCompilation.put(data.getClassDescriptor(), data.getByteDataCopy());
- allDescriptors.add(data.getClassDescriptor());
+ public void accept(
+ ByteDataView data, String descriptor, DiagnosticsHandler handler) {
+ secondCompilation.put(descriptor, data.copyByteData());
+ allDescriptors.add(descriptor);
}
@Override
@@ -133,12 +133,15 @@
b ->
b.setProgramConsumer(
new DexFilePerClassFileConsumer() {
+
@Override
- public synchronized void acceptDexFile(
- DexFilePerClassFileConsumerData data) {
- secondCompilation.put(
- data.getPrimaryClassDescriptor(), data.getByteDataCopy());
- allDescriptors.addAll(data.getClassDescriptors());
+ public void accept(
+ String primaryClassDescriptor,
+ ByteDataView data,
+ Set<String> descriptors,
+ DiagnosticsHandler handler) {
+ secondCompilation.put(primaryClassDescriptor, data.copyByteData());
+ allDescriptors.addAll(descriptors);
}
@Override
diff --git a/src/test/java/com/android/tools/r8/synthesis/RepeatedCompilationSyntheticsTest.java b/src/test/java/com/android/tools/r8/synthesis/RepeatedCompilationSyntheticsTest.java
index 842c56e..e7e5c3c 100644
--- a/src/test/java/com/android/tools/r8/synthesis/RepeatedCompilationSyntheticsTest.java
+++ b/src/test/java/com/android/tools/r8/synthesis/RepeatedCompilationSyntheticsTest.java
@@ -10,7 +10,6 @@
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.TestBase;
import com.android.tools.r8.TestParameters;
@@ -23,6 +22,7 @@
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.Set;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@@ -113,9 +113,12 @@
b.setProgramConsumer(
new DexFilePerClassFileConsumer() {
@Override
- public synchronized void acceptDexFile(
- DexFilePerClassFileConsumerData data) {
- secondCompilation.addAll(data.getClassDescriptors());
+ public void accept(
+ String primaryClassDescriptor,
+ ByteDataView data,
+ Set<String> descriptors,
+ DiagnosticsHandler handler) {
+ secondCompilation.addAll(descriptors);
}
@Override
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 4190da5..4321812 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,6 +19,7 @@
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;
@@ -128,8 +129,9 @@
byte[] contents;
@Override
- public void acceptDexIndexedFile(DexIndexedConsumerData data) {
- contents = data.getByteDataCopy();
+ public void accept(
+ int fileIndex, ByteDataView data, Set<String> descriptors, DiagnosticsHandler handler) {
+ contents = data.copyByteData();
}
@Override