Update test to check for number of outline call site informations
Bug: b/293630963
Bug: b/294904638
Change-Id: Ia6a4d0062af7d4d7e3a3b4d3acbdc4ede237642c
diff --git a/src/main/java/com/android/tools/r8/utils/StringUtils.java b/src/main/java/com/android/tools/r8/utils/StringUtils.java
index 1cbcad2..75f4a2e 100644
--- a/src/main/java/com/android/tools/r8/utils/StringUtils.java
+++ b/src/main/java/com/android/tools/r8/utils/StringUtils.java
@@ -501,4 +501,14 @@
public static String toUpperCase(String s) {
return s.toUpperCase(Locale.ROOT);
}
+
+ public static int occurrences(String largerString, String subString) {
+ int lastIndex = largerString.indexOf(subString);
+ int count = 0;
+ while (lastIndex > -1) {
+ count += 1;
+ lastIndex = largerString.indexOf(subString, lastIndex + 1);
+ }
+ return count;
+ }
}
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/outliner/OutlineMappingInformationTest.java b/src/test/java/com/android/tools/r8/ir/optimize/outliner/OutlineMappingInformationTest.java
index 6fb199c..362ac40 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/outliner/OutlineMappingInformationTest.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/outliner/OutlineMappingInformationTest.java
@@ -7,10 +7,12 @@
import com.android.tools.r8.NeverInline;
import com.android.tools.r8.NoHorizontalClassMerging;
+import com.android.tools.r8.R8TestCompileResult;
import com.android.tools.r8.TestBase;
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.naming.retrace.StackTrace;
import com.android.tools.r8.utils.BooleanUtils;
+import com.android.tools.r8.utils.StringUtils;
import com.android.tools.r8.utils.codeinspector.HorizontallyMergedClassesInspector;
import java.util.List;
import org.junit.Before;
@@ -58,23 +60,25 @@
@Test
public void test() throws Exception {
- testForR8(parameters.getBackend())
- .addProgramClasses(TestClass.class, TestClass2.class, Greeter.class)
- .addKeepMainRule(TestClass.class)
- .addOptionsModification(
- options -> {
- options.outline.threshold = 2;
- options.outline.minSize = 2;
- })
- .addKeepAttributeLineNumberTable()
- .addKeepAttributeSourceFile()
- .enableNoHorizontalClassMergingAnnotations()
- .noHorizontalClassMergingOfSynthetics()
- .addHorizontallyMergedClassesInspector(
- HorizontallyMergedClassesInspector::assertNoClassesMerged)
- .enableInliningAnnotations()
- .setMinApi(parameters)
- .compile()
+ R8TestCompileResult compileResult =
+ testForR8(parameters.getBackend())
+ .addProgramClasses(TestClass.class, TestClass2.class, Greeter.class)
+ .addKeepMainRule(TestClass.class)
+ .addOptionsModification(
+ options -> {
+ options.outline.threshold = 2;
+ options.outline.minSize = 2;
+ })
+ .addKeepAttributeLineNumberTable()
+ .addKeepAttributeSourceFile()
+ .enableNoHorizontalClassMergingAnnotations()
+ .noHorizontalClassMergingOfSynthetics()
+ .addHorizontallyMergedClassesInspector(
+ HorizontallyMergedClassesInspector::assertNoClassesMerged)
+ .enableInliningAnnotations()
+ .setMinApi(parameters)
+ .compile();
+ compileResult
.run(
parameters.getRuntime(),
TestClass.class,
@@ -91,6 +95,15 @@
assertEquals(5, inspector.allClasses().size());
assertEquals(expectedStackTrace, stackTrace);
});
+ String proguardMap = compileResult.getProguardMap();
+
+ if (parameters.isDexRuntime()) {
+ // TODO(b/263357015, b/293630963): Outline information is duplicated for pc encoding.
+ assertEquals(
+ 20, StringUtils.occurrences(proguardMap, "com.android.tools.r8.outlineCallsite"));
+ } else {
+ assertEquals(4, StringUtils.occurrences(proguardMap, "com.android.tools.r8.outlineCallsite"));
+ }
}
@NoHorizontalClassMerging