blob: 3ee53c7c79289c1984436e81a7b0218a8d2c67aa [file] [log] [blame]
// Copyright (c) 2022, the R8 project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.startup;
import com.android.tools.r8.Keep;
import com.android.tools.r8.TextInputStream;
import com.android.tools.r8.profile.art.HumanReadableArtProfileParserBuilder;
import java.util.function.Consumer;
/** Interface for providing a startup profile to the compiler. */
@Keep
public interface StartupProfileBuilder {
/** API for adding information about a startup class to the compiler. */
StartupProfileBuilder addStartupClass(Consumer<StartupClassBuilder> startupClassBuilderConsumer);
/** API for adding information about a startup method to the compiler. */
StartupProfileBuilder addStartupMethod(
Consumer<StartupMethodBuilder> startupMethodBuilderConsumer);
/**
* Adds the rules from the given human-readable ART profile to the startup profile and then closes
* the stream.
*
* @see <a href="https://developer.android.com/topic/performance/baselineprofiles">ART Baseline
* Profiles</a>
*/
StartupProfileBuilder addHumanReadableArtProfile(
TextInputStream textInputStream,
Consumer<HumanReadableArtProfileParserBuilder> parserBuilderConsumer);
}