Merge "Update gradle in third-party to 3.5.1."
diff --git a/src/main/java/com/android/tools/r8/dex/VirtualFile.java b/src/main/java/com/android/tools/r8/dex/VirtualFile.java
index 0e89d4a..f336a3d 100644
--- a/src/main/java/com/android/tools/r8/dex/VirtualFile.java
+++ b/src/main/java/com/android/tools/r8/dex/VirtualFile.java
@@ -67,7 +67,7 @@
// TODO(sgjesse): Does "minimal main dex" combined with "leave space for growth" make sense?
}
- private static final int MAX_ENTRIES = (Short.MAX_VALUE << 1) + 1;
+ private static final int MAX_ENTRIES = Constants.U16BIT_MAX + 1;
/**
* When distributing classes across files we aim to leave some space. The amount of space left is
* driven by this constant.
diff --git a/src/main/java/com/android/tools/r8/graph/ObjectToOffsetMapping.java b/src/main/java/com/android/tools/r8/graph/ObjectToOffsetMapping.java
index 7dab70a..74a0800 100644
--- a/src/main/java/com/android/tools/r8/graph/ObjectToOffsetMapping.java
+++ b/src/main/java/com/android/tools/r8/graph/ObjectToOffsetMapping.java
@@ -88,7 +88,7 @@
private void setIndexes(IndexedDexItem[] items) {
int index = 0;
for (IndexedDexItem item : items) {
- item.assignVirtualFileIndex(virtualFileId, index++);
+ item.assignVirtualFileIndex(virtualFileId, index);
// For strings collect the first jumbo string (if any).
if (index > Constants.MAX_NON_JUMBO_INDEX) {
assert item instanceof DexString;
@@ -96,6 +96,7 @@
firstJumboString = (DexString) item;
}
}
+ index++;
}
}
diff --git a/src/test/java/com/android/tools/r8/compatdx/CompatDxTests.java b/src/test/java/com/android/tools/r8/compatdx/CompatDxTests.java
index b3d31c5..5af5c0c 100644
--- a/src/test/java/com/android/tools/r8/compatdx/CompatDxTests.java
+++ b/src/test/java/com/android/tools/r8/compatdx/CompatDxTests.java
@@ -100,10 +100,21 @@
}
@Test
+ public void singleDexProgramFull() throws IOException, ExecutionException {
+ // Generate an application that fills the whole dex file.
+ AndroidApp generated =
+ MainDexListTests.generateApplication(
+ ImmutableList.of("A"), Constants.ANDROID_L_API, Constants.U16BIT_MAX + 1);
+ Path applicationJar = temp.newFile("application.jar").toPath();
+ generated.write(applicationJar, OutputMode.Indexed);
+ runDexer(applicationJar.toString());
+ }
+
+ @Test
public void singleDexProgramIsTooLarge() throws IOException, ExecutionException {
// Generate an application that will not fit into a single dex file.
AndroidApp generated = MainDexListTests.generateApplication(
- ImmutableList.of("A", "B"), Constants.ANDROID_L_API, Constants.U16BIT_MAX / 2 + 1);
+ ImmutableList.of("A", "B"), Constants.ANDROID_L_API, Constants.U16BIT_MAX / 2 + 2);
Path applicationJar = temp.newFile("application.jar").toPath();
generated.write(applicationJar, OutputMode.Indexed);
thrown.expect(CompilationError.class);