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) {