Add timing to ClassToFeatureSplitMap rewriting

Change-Id: Id900e45504c0d91591b88136fe84be6e74d91344
diff --git a/src/main/java/com/android/tools/r8/features/ClassToFeatureSplitMap.java b/src/main/java/com/android/tools/r8/features/ClassToFeatureSplitMap.java
index 3033f19..f4ed7cd 100644
--- a/src/main/java/com/android/tools/r8/features/ClassToFeatureSplitMap.java
+++ b/src/main/java/com/android/tools/r8/features/ClassToFeatureSplitMap.java
@@ -21,6 +21,7 @@
 import com.android.tools.r8.synthesis.SyntheticItems;
 import com.android.tools.r8.utils.InternalOptions;
 import com.android.tools.r8.utils.Reporter;
+import com.android.tools.r8.utils.Timing;
 import com.google.common.collect.Sets;
 import java.util.IdentityHashMap;
 import java.util.Map;
@@ -289,7 +290,11 @@
         == getFeatureSplit(b, options, startupProfile, syntheticItems);
   }
 
-  public ClassToFeatureSplitMap rewrittenWithLens(GraphLens lens) {
+  public ClassToFeatureSplitMap rewrittenWithLens(GraphLens lens, Timing timing) {
+    return timing.time("Rewrite ClassToFeatureSplitMap", () -> rewrittenWithLens(lens));
+  }
+
+  private ClassToFeatureSplitMap rewrittenWithLens(GraphLens lens) {
     Map<DexType, FeatureSplit> rewrittenClassToFeatureSplitMap = new IdentityHashMap<>();
     classToFeatureSplitMap.forEach(
         (type, featureSplit) -> {
diff --git a/src/main/java/com/android/tools/r8/graph/AppView.java b/src/main/java/com/android/tools/r8/graph/AppView.java
index c728fda..cda6d1f 100644
--- a/src/main/java/com/android/tools/r8/graph/AppView.java
+++ b/src/main/java/com/android/tools/r8/graph/AppView.java
@@ -980,7 +980,8 @@
           if (appView.hasLiveness()) {
             appView
                 .withLiveness()
-                .setAppInfo(appView.appInfoWithLiveness().rewrittenWithLens(application, lens));
+                .setAppInfo(
+                    appView.appInfoWithLiveness().rewrittenWithLens(application, lens, timing));
           } else {
             assert appView.hasClassHierarchy();
             AppView<AppInfoWithClassHierarchy> appViewWithClassHierarchy =
diff --git a/src/main/java/com/android/tools/r8/shaking/AppInfoWithLiveness.java b/src/main/java/com/android/tools/r8/shaking/AppInfoWithLiveness.java
index 472680e..ed40807 100644
--- a/src/main/java/com/android/tools/r8/shaking/AppInfoWithLiveness.java
+++ b/src/main/java/com/android/tools/r8/shaking/AppInfoWithLiveness.java
@@ -65,6 +65,7 @@
 import com.android.tools.r8.utils.ListUtils;
 import com.android.tools.r8.utils.PredicateSet;
 import com.android.tools.r8.utils.ThreadUtils;
+import com.android.tools.r8.utils.Timing;
 import com.android.tools.r8.utils.Visibility;
 import com.android.tools.r8.utils.WorkList;
 import com.android.tools.r8.utils.collections.ProgramMethodSet;
@@ -1113,7 +1114,7 @@
   }
 
   public AppInfoWithLiveness rewrittenWithLens(
-      DirectMappedDexApplication application, NonIdentityGraphLens lens) {
+      DirectMappedDexApplication application, NonIdentityGraphLens lens, Timing timing) {
     assert checkIfObsolete();
 
     // Switchmap classes should never be affected by renaming.
@@ -1129,7 +1130,7 @@
         committedItems.getApplication().getDefinitionsSupplier(committedItems);
     return new AppInfoWithLiveness(
         committedItems,
-        getClassToFeatureSplitMap().rewrittenWithLens(lens),
+        getClassToFeatureSplitMap().rewrittenWithLens(lens, timing),
         getMainDexInfo().rewrittenWithLens(getSyntheticItems(), lens),
         getMissingClasses(),
         deadProtoTypes,