blob: 1a58eba14e2b5be31c4c09f4b012dc6ec84983c0 [file] [log] [blame]
// Copyright (c) 2018, 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.graph;
import com.android.tools.r8.graph.DexEncodedMethod.ClassInlinerEligibility;
import com.android.tools.r8.graph.DexEncodedMethod.TrivialInitializer;
import com.android.tools.r8.graph.ParameterUsagesInfo.ParameterUsage;
import java.util.BitSet;
public interface OptimizationInfo {
enum InlinePreference {
NeverInline,
ForceInline,
Default
}
ParameterUsage getParameterUsages(int parameter);
BitSet getNonNullParamHints();
boolean isReachabilitySensitive();
boolean returnsArgument();
int getReturnedArgument();
boolean neverReturnsNull();
boolean neverReturnsNormally();
boolean returnsConstant();
ClassInlinerEligibility getClassInlinerEligibility();
TrivialInitializer getTrivialInitializerInfo();
boolean isInitializerEnablingJavaAssertions();
long getReturnedConstant();
boolean forceInline();
boolean neverInline();
boolean useIdentifierNameString();
boolean checksNullReceiverBeforeAnySideEffect();
boolean triggersClassInitBeforeAnySideEffect();
UpdatableOptimizationInfo mutableCopy();
}