Skip to content

Commit 8e63bd4

Browse files
A Googlercopybara-github
authored andcommitted
This allows the dex processing to back out if there are too many type ids.
PiperOrigin-RevId: 721819820 Change-Id: Icd2bea3d0860b6d4c20c53e6dc2ff170c20c181f
1 parent 7419a27 commit 8e63bd4

1 file changed

Lines changed: 10 additions & 3 deletions

File tree

src/tools/java/com/google/devtools/build/android/dexer/DexLimitTracker.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ class DexLimitTracker {
3131

3232
private final LinkedHashSet<FieldDescriptor> fieldsSeen = new LinkedHashSet<>();
3333
private final LinkedHashSet<MethodDescriptor> methodsSeen = new LinkedHashSet<>();
34+
private final LinkedHashSet<String> typesSeen = new LinkedHashSet<>();
3435
private final int maxNumberOfIdxPerDex;
3536

3637
public DexLimitTracker(int maxNumberOfIdxPerDex) {
@@ -40,17 +41,19 @@ public DexLimitTracker(int maxNumberOfIdxPerDex) {
4041
/**
4142
* Returns whether we're within limits.
4243
*
43-
* @return {@code true} if method or field references are outside limits, {@code false} both are
44-
* within limits.
44+
* @return {@code true} if method, field or type references are outside limits, {@code false} if
45+
* all are within limits.
4546
*/
4647
public boolean outsideLimits() {
4748
return fieldsSeen.size() > maxNumberOfIdxPerDex
48-
|| methodsSeen.size() > maxNumberOfIdxPerDex;
49+
|| methodsSeen.size() > maxNumberOfIdxPerDex
50+
|| typesSeen.size() > maxNumberOfIdxPerDex;
4951
}
5052

5153
public void clear() {
5254
fieldsSeen.clear();
5355
methodsSeen.clear();
56+
typesSeen.clear();
5457
}
5558

5659
public void track(Dex dexFile) {
@@ -62,6 +65,10 @@ public void track(Dex dexFile) {
6265
for (int methodIndex = 0; methodIndex < methodCount; ++methodIndex) {
6366
methodsSeen.add(MethodDescriptor.fromDex(dexFile, methodIndex));
6467
}
68+
int typeCount = dexFile.typeIds().size();
69+
for (int typeIndex = 0; typeIndex < typeCount; ++typeIndex) {
70+
typesSeen.add(typeName(dexFile, typeIndex));
71+
}
6572
}
6673

6774
private static String typeName(Dex dex, int typeIndex) {

0 commit comments

Comments
 (0)