blob: 6e0b20344d3aecdea471431eeba19f5a7cf52cba [file] [log] [blame]
// Copyright (c) 2021, 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.ir.analysis.fieldaccess.state;
import com.android.tools.r8.ir.analysis.value.AbstractValue;
import com.android.tools.r8.ir.analysis.value.AbstractValueFactory;
/** An abstraction of the runtime values that may flow into each field. */
public abstract class FieldState {
public static BottomFieldState bottom() {
return BottomFieldState.getInstance();
}
public static UnknownFieldState unknown() {
return UnknownFieldState.getInstance();
}
public abstract AbstractValue getAbstractValue(AbstractValueFactory abstractValueFactory);
public boolean isArray() {
return false;
}
public ConcreteArrayTypeFieldState asArray() {
return null;
}
public boolean isBottom() {
return false;
}
public boolean isClass() {
return false;
}
public ConcreteClassTypeFieldState asClass() {
return null;
}
public boolean isConcrete() {
return false;
}
public ConcreteFieldState asConcrete() {
return null;
}
public boolean isPrimitive() {
return false;
}
public ConcretePrimitiveTypeFieldState asPrimitive() {
return null;
}
public boolean isReference() {
return false;
}
public ConcreteReferenceTypeFieldState asReference() {
return null;
}
public boolean isUnknown() {
return false;
}
}