Version 1.6.56
Cherry pick: Support checksums for classes with non-ascii names.
CL: https://r8-review.googlesource.com/c/r8/+/47136
Bug: 146597396
Change-Id: Ie5d0320400a2dfac1532575a69c8c6e382ad7e10
diff --git a/src/main/java/com/android/tools/r8/Version.java b/src/main/java/com/android/tools/r8/Version.java
index f19e454..8e7e7fd 100644
--- a/src/main/java/com/android/tools/r8/Version.java
+++ b/src/main/java/com/android/tools/r8/Version.java
@@ -11,7 +11,7 @@
// This field is accessed from release scripts using simple pattern matching.
// Therefore, changing this field could break our release scripts.
- public static final String LABEL = "1.6.55";
+ public static final String LABEL = "1.6.56";
private Version() {
}
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 c62df61..3ec1a7f 100644
--- a/src/main/java/com/android/tools/r8/dex/ApplicationWriter.java
+++ b/src/main/java/com/android/tools/r8/dex/ApplicationWriter.java
@@ -47,8 +47,8 @@
import com.android.tools.r8.utils.StringUtils;
import com.android.tools.r8.utils.ThreadUtils;
import com.google.common.collect.ObjectArrays;
-import it.unimi.dsi.fastutil.objects.Object2LongMap;
-import it.unimi.dsi.fastutil.objects.Object2LongOpenHashMap;
+import it.unimi.dsi.fastutil.objects.Reference2LongMap;
+import it.unimi.dsi.fastutil.objects.Reference2LongOpenHashMap;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
@@ -200,14 +200,15 @@
*/
private void encodeChecksums(Iterable<VirtualFile> files) {
List<DexProgramClass> classes = application.classes();
- Object2LongMap<String> inputChecksums = new Object2LongOpenHashMap<>(classes.size());
+ Reference2LongMap<DexString> inputChecksums = new Reference2LongOpenHashMap<>(classes.size());
for (DexProgramClass clazz : classes) {
- inputChecksums.put(clazz.getType().descriptor.toASCIIString(), clazz.getChecksum());
+ inputChecksums.put(clazz.getType().descriptor, clazz.getChecksum());
}
for (VirtualFile file : files) {
ClassesChecksum toWrite = new ClassesChecksum();
- for (String desc : file.getClassDescriptors()) {
- toWrite.addChecksum(desc, inputChecksums.getLong(desc));
+ for (DexProgramClass clazz : file.classes()) {
+ DexString desc = clazz.type.descriptor;
+ toWrite.addChecksum(desc.toString(), inputChecksums.getLong(desc));
}
file.injectString(application.dexItemFactory.createString(toWrite.toJsonString()));
}
diff --git a/src/main/java/com/android/tools/r8/dex/DexParser.java b/src/main/java/com/android/tools/r8/dex/DexParser.java
index 9085e5a..b345994 100644
--- a/src/main/java/com/android/tools/r8/dex/DexParser.java
+++ b/src/main/java/com/android/tools/r8/dex/DexParser.java
@@ -716,7 +716,7 @@
Long checksum = null;
if (checksums != null && !checksums.isEmpty()) {
- String desc = type.descriptor.toASCIIString();
+ String desc = type.toDescriptorString();
checksum = checksums.getOrDefault(desc, null);
if (!options.dexClassChecksumFilter.test(desc, checksum)) {
continue;