blob: 1aa2129777d22da28a88924e8e6aedc9d77060cf [file] [log] [blame]
// Copyright (c) 2017, 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.ir.analysis.type.TypeLatticeElement;
import java.util.BitSet;
import java.util.Set;
public interface UpdatableMethodOptimizationInfo extends MethodOptimizationInfo {
void markInitializesClassesOnNormalExit(Set<DexType> initializedClasses);
void markReturnsArgument(int argument);
void markReturnsConstantNumber(long value);
void markReturnsConstantString(DexString value);
void markReturnsObjectOfType(TypeLatticeElement type);
void markAsPropagated();
void markMayNotHaveSideEffects();
void markNeverReturnsNull();
void markNeverReturnsNormally();
void markCheckNullReceiverBeforeAnySideEffect(boolean mark);
void markTriggerClassInitBeforeAnySideEffect(boolean mark);
void setClassInlinerEligibility(ClassInlinerEligibility eligibility);
void setTrivialInitializer(TrivialInitializer info);
void setInitializerEnablingJavaAssertions();
void setParameterUsages(ParameterUsagesInfo parameterUsagesInfo);
void setNonNullParamOrThrow(BitSet facts);
void setNonNullParamOnNormalExits(BitSet facts);
void setReachabilitySensitive(boolean reachabilitySensitive);
void markUseIdentifierNameString();
void markForceInline();
void unsetForceInline();
void markNeverInline();
}