Skip to content

Commit eb3ba2a

Browse files
A Googlercopybara-github
authored andcommitted
Update R8 to 9.1.5-dev
This version of D8/R8 uses shorter minimal names, using a naming convention similar to the one javac uses for anonymous inner classes ($0, $1, ...). Existing D8/R8 builds are updated to use the previous naming scheme, with `$$ExternalSynthetic` markers. Commits merged (since 9.1.2-dev): 08852644ce Version 9.1.5-dev 18318cc30f Merge commit '048a805162f6d0a4d405187b455b1a7a3c25080b' into dev-release 048a805162 Support for verbose synthetic names in GlobalSyntheticsGenerator CLI 9605a571ce Suppress errorprone warning in same file policy 22b15c7684 Format InternalOptions 15f247933b Relax same file policy for synthetic classes be94ff4e23 Version 9.1.4-dev 035b95051f Merge commit '0418ebca1a206d3202ac6f7327846de002b67191' into dev-release 0418ebca1a Support for enabling verbose synthetic names in D8 CLI 81ccdd3d7f Add -Pdisable_download_deps property for skipping downloadDeps task 1d307634c0 Introduce "enable_r8_turbo_builds" gradle property 9fea8bb37b Version 9.1.3-dev 8fee7be0b1 Merge commit '6f6301de90ff4cd5a1a08d550bcf350a9bf0ec42' into dev-release 6f6301de90 Account for api outlines in examples tests c7b6ec68b0 Use jstack from third_party dependencies 6fc71e3937 Add support for releasing main to 9.0 stable branch 67ae3cf5ae Hold reference to Unsafe in a static field in VarHandle desugaring 777b810d99 Add a test that final flag of record fields is not unset 38b686c0e7 Fix missing argument c51ad7f192 API for enabling verbose synthetic names 8e0fc7296f Enable minimal synthetic names b5aea02388 Remove @deprecated method from SyntheticItemsTestUtils f768907903 Refactor D8 examples tests to be independent of synthetic naming 885ffeecb9 Refactor desugaring and examples tests to not rely on synthetic naming 32dd65c956 Add missing @OverRide annotations See https://r8.googlesource.com/r8/+log/08852644ce79fc699a3e0694ef3125509affc455 PiperOrigin-RevId: 839627647 Change-Id: I0491f6d72a1084fc513daac49c3924f84e24a0db
1 parent db71ce3 commit eb3ba2a

5 files changed

Lines changed: 29 additions & 5 deletions

File tree

src/tools/java/com/google/devtools/build/android/r8/CompatDexBuilder.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,7 @@ private DexConsumer dexEntry(
362362
.setMinApiLevel(minSdkVersion)
363363
.setDisableDesugaring(true)
364364
.setIntermediate(true);
365+
R8Utils.setEnableVerboseSyntheticNames(builder);
365366
byte[] cachedDexBytes = null;
366367
byte[] classFileBytes = null;
367368
try (InputStream stream = zipFile.getInputStream(classEntry)) {

src/tools/java/com/google/devtools/build/android/r8/CompatDx.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -437,16 +437,15 @@ private static void run(String[] args)
437437

438438
try {
439439
D8Command.Builder builder = D8Command.builder();
440-
inputs.forEach(
441-
input ->
442-
builder.addProgramResourceProvider(ArchiveResourceProvider.fromArchive(input, true)));
443-
440+
for (Path input : inputs) {
441+
builder.addProgramResourceProvider(ArchiveResourceProvider.fromArchive(input, true));
442+
}
444443
builder
445-
// .addProgramFiles(inputs)
446444
.setProgramConsumer(createConsumer(inputs, output, singleDexFile, dexArgs.keepClasses))
447445
.setMode(mode)
448446
.setDisableDesugaring(true) // DX does not desugar.
449447
.setMinApiLevel(dexArgs.minApiLevel);
448+
R8Utils.setEnableVerboseSyntheticNames(builder);
450449
if (mainDexList != null) {
451450
builder.addMainDexListFiles(mainDexList);
452451
}

src/tools/java/com/google/devtools/build/android/r8/Desugar.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -426,6 +426,7 @@ private void desugar(
426426
.setMinApiLevel(options.minSdkVersion)
427427
.setSyntheticInfoConsumer(consumer.getContextConsumer())
428428
.setProgramConsumer(consumer);
429+
R8Utils.setEnableVerboseSyntheticNames(builder);
429430
bootclasspathProviders.forEach(builder::addLibraryResourceProvider);
430431
if (desugaredLibConfig != null) {
431432
builder.addDesugaredLibraryConfiguration(Files.readString(desugaredLibConfig));

src/tools/java/com/google/devtools/build/android/r8/DexFileMerger.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ public boolean isMultidexAllowed() {
101101

102102
/** Option converter for {@link MultidexStrategy}. */
103103
public static class MultidexStrategyConverter implements IStringConverter<MultidexStrategy> {
104+
@Override
104105
public MultidexStrategy convert(String value) {
105106
return MultidexStrategy.valueOf(value.toUpperCase());
106107
}
@@ -325,6 +326,9 @@ public static void run(String[] args) throws CompilationFailedException, IOExcep
325326
// The merge step assumes that no further desugaring is needed.
326327
builder = builder.setDisableDesugaring(true);
327328

329+
// Enable verbose synthetic names that use the `$$ExternalSynthetic` marker.
330+
R8Utils.setEnableVerboseSyntheticNames(builder);
331+
328332
// D8 does not allow duplicate classes. Resolve conflicts based on input order.
329333
Map<String, Integer> inputOrdering =
330334
Maps.newHashMapWithExpectedSize(options.inputArchives.size());

src/tools/java/com/google/devtools/build/android/r8/R8Utils.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,29 @@
1313
// limitations under the License.
1414
package com.google.devtools.build.android.r8;
1515

16+
import java.lang.reflect.InvocationTargetException;
17+
import java.lang.reflect.Method;
18+
1619
/** Utilities related to the R8 code base */
1720
public class R8Utils {
1821
public static final String INTERFACE_COMPANION_SUFFIX = "$-CC";
1922
public static final String DESUGAR_INTERFACE_COMPANION_SUFFIX = "$$CC";
2023

2124
private R8Utils() {}
25+
26+
public static void setEnableVerboseSyntheticNames(Object commandBuilder) {
27+
try {
28+
Class<?> commandBuilderClass = commandBuilder.getClass();
29+
Method setEnableVerboseSyntheticNamesMethod =
30+
commandBuilderClass.getDeclaredMethod(
31+
"setEnableVerboseSyntheticNames", boolean.class);
32+
setEnableVerboseSyntheticNamesMethod.invoke(commandBuilder, true);
33+
} catch (IllegalAccessException e) {
34+
// Intentionally empty.
35+
} catch (InvocationTargetException e) {
36+
// Intentionally empty.
37+
} catch (NoSuchMethodException e) {
38+
// Intentionally empty.
39+
}
40+
}
2241
}

0 commit comments

Comments
 (0)