Add internal API for adding art profiles to command builders

This allows configuring the D8/R8 commands of L8 such that art profiles given to L8 is correctly rewritten (see also DesugaredLibraryArtProfileRewritingTest).

Change-Id: Ied7993137154f3faf58cbf7bd8042294fcbe8a7a
diff --git a/src/main/java/com/android/tools/r8/BaseCompilerCommand.java b/src/main/java/com/android/tools/r8/BaseCompilerCommand.java
index 02e06d1..0900897 100644
--- a/src/main/java/com/android/tools/r8/BaseCompilerCommand.java
+++ b/src/main/java/com/android/tools/r8/BaseCompilerCommand.java
@@ -12,6 +12,7 @@
 import com.android.tools.r8.ir.desugar.desugaredlibrary.DesugaredLibrarySpecificationParser;
 import com.android.tools.r8.ir.desugar.desugaredlibrary.humanspecification.HumanDesugaredLibrarySpecification;
 import com.android.tools.r8.origin.Origin;
+import com.android.tools.r8.profile.art.ArtProfileInput;
 import com.android.tools.r8.startup.StartupProfileProvider;
 import com.android.tools.r8.utils.AndroidApiLevel;
 import com.android.tools.r8.utils.AndroidApp;
@@ -57,6 +58,7 @@
   private final MapIdProvider mapIdProvider;
   private final SourceFileProvider sourceFileProvider;
   private final boolean isAndroidPlatformBuild;
+  private final List<ArtProfileInput> artProfileInputs;
   private final List<StartupProfileProvider> startupProfileProviders;
   private final ClassConflictResolver classConflictResolver;
 
@@ -78,6 +80,7 @@
     mapIdProvider = null;
     sourceFileProvider = null;
     isAndroidPlatformBuild = false;
+    artProfileInputs = null;
     startupProfileProviders = null;
     classConflictResolver = null;
   }
@@ -100,6 +103,7 @@
       MapIdProvider mapIdProvider,
       SourceFileProvider sourceFileProvider,
       boolean isAndroidPlatformBuild,
+      List<ArtProfileInput> artProfileInputs,
       List<StartupProfileProvider> startupProfileProviders,
       ClassConflictResolver classConflictResolver) {
     super(app);
@@ -121,6 +125,7 @@
     this.mapIdProvider = mapIdProvider;
     this.sourceFileProvider = sourceFileProvider;
     this.isAndroidPlatformBuild = isAndroidPlatformBuild;
+    this.artProfileInputs = artProfileInputs;
     this.startupProfileProviders = startupProfileProviders;
     this.classConflictResolver = classConflictResolver;
   }
@@ -219,6 +224,10 @@
     return isAndroidPlatformBuild;
   }
 
+  List<ArtProfileInput> getArtProfileInputs() {
+    return artProfileInputs;
+  }
+
   List<StartupProfileProvider> getStartupProfileProviders() {
     return startupProfileProviders;
   }
@@ -268,6 +277,7 @@
     private MapIdProvider mapIdProvider = null;
     private SourceFileProvider sourceFileProvider = null;
     private boolean isAndroidPlatformBuild = false;
+    private List<ArtProfileInput> artProfileInputs = new ArrayList<>();
     private List<StartupProfileProvider> startupProfileProviders = new ArrayList<>();
     private ClassConflictResolver classConflictResolver = null;
 
@@ -685,6 +695,19 @@
       return isAndroidPlatformBuild;
     }
 
+    B addArtProfileInputs(ArtProfileInput... artProfileInputs) {
+      return addArtProfileInputs(Arrays.asList(artProfileInputs));
+    }
+
+    B addArtProfileInputs(Collection<ArtProfileInput> artProfileInputs) {
+      this.artProfileInputs.addAll(artProfileInputs);
+      return self();
+    }
+
+    List<ArtProfileInput> getArtProfileInputs() {
+      return artProfileInputs;
+    }
+
     B addStartupProfileProviders(StartupProfileProvider... startupProfileProviders) {
       return addStartupProfileProviders(Arrays.asList(startupProfileProviders));
     }