Make sure all golem-dependent dex-segments are reported
Some of our open-source apps will not report a benchmark for
AnnotationSetRefs and DebugInfo. This CL will ensure all reported
benchmarks will be output.
Change-Id: Ifa2561820bcdb350e4699c4ae7d5feb6bedd6d92
diff --git a/src/main/java/com/android/tools/r8/DexSegments.java b/src/main/java/com/android/tools/r8/DexSegments.java
index 4e7a5c2..591b1f3 100644
--- a/src/main/java/com/android/tools/r8/DexSegments.java
+++ b/src/main/java/com/android/tools/r8/DexSegments.java
@@ -4,6 +4,7 @@
package com.android.tools.r8;
import com.android.tools.r8.ProgramResource.Kind;
+import com.android.tools.r8.dex.Constants;
import com.android.tools.r8.dex.DexParser;
import com.android.tools.r8.dex.DexSection;
import com.android.tools.r8.origin.CommandLineOrigin;
@@ -96,6 +97,30 @@
AndroidApp app = command.getInputApp();
Map<String, SegmentInfo> result = new LinkedHashMap<>();
+ // Fill the results with all benchmark items otherwise golem may report missing benchmarks.
+ int[] benchmarks =
+ new int[] {
+ Constants.TYPE_ENCODED_ARRAY_ITEM,
+ Constants.TYPE_HEADER_ITEM,
+ Constants.TYPE_DEBUG_INFO_ITEM,
+ Constants.TYPE_FIELD_ID_ITEM,
+ Constants.TYPE_ANNOTATION_SET_REF_LIST,
+ Constants.TYPE_STRING_ID_ITEM,
+ Constants.TYPE_MAP_LIST,
+ Constants.TYPE_PROTO_ID_ITEM,
+ Constants.TYPE_METHOD_ID_ITEM,
+ Constants.TYPE_TYPE_ID_ITEM,
+ Constants.TYPE_STRING_DATA_ITEM,
+ Constants.TYPE_CLASS_DATA_ITEM,
+ Constants.TYPE_TYPE_LIST,
+ Constants.TYPE_ANNOTATIONS_DIRECTORY_ITEM,
+ Constants.TYPE_ANNOTATION_ITEM,
+ Constants.TYPE_ANNOTATION_SET_ITEM,
+ Constants.TYPE_CLASS_DEF_ITEM
+ };
+ for (int benchmark : benchmarks) {
+ result.computeIfAbsent(DexSection.typeName(benchmark), (key) -> new SegmentInfo());
+ }
try (Closer closer = Closer.create()) {
for (ProgramResource resource : app.computeAllProgramResources()) {
if (resource.getKind() == Kind.DEX) {
diff --git a/src/main/java/com/android/tools/r8/dex/DexSection.java b/src/main/java/com/android/tools/r8/dex/DexSection.java
index 3013f7a..39a01b2 100644
--- a/src/main/java/com/android/tools/r8/dex/DexSection.java
+++ b/src/main/java/com/android/tools/r8/dex/DexSection.java
@@ -30,6 +30,10 @@
}
public String typeName() {
+ return typeName(this.type);
+ }
+
+ public static String typeName(int type) {
// Type names are in UpperCamelCase because they're used as labels in
// benchmarks.
switch (type) {