public abstract class AnalysisField extends AnalysisElement implements WrappedJavaField, OriginalFieldProvider
| Modifier and Type | Class and Description |
|---|---|
static interface |
AnalysisField.AnalysisFieldObserver |
AnalysisElement.ElementNotification, AnalysisElement.MethodOverrideReachableNotification, AnalysisElement.ReachabilityReason, AnalysisElement.ReachabilityTraceBuilder, AnalysisElement.SubtypeReachableNotification| Modifier and Type | Field and Description |
|---|---|
protected AnalysisType |
declaringClass |
protected AnalysisType |
fieldType |
protected FieldValueComputer |
fieldValueComputer
Marks a field whose value is computed during image building, in general derived from other
values, and it cannot be constant-folded or otherwise optimized.
|
protected TypeState |
instanceFieldTypeState |
protected int |
position
Field's position in the list of declaring type's fields, including inherited fields.
|
ResolvedJavaField |
wrapped |
| Constructor and Description |
|---|
AnalysisField(AnalysisUniverse universe,
ResolvedJavaField wrappedField) |
execute, getAnnotation, getAnnotations, getDeclaredAnnotation, getDeclaredAnnotations, isAnnotationPresent, isTriggered, notifyReachabilityCallback, notifyReachabilityCallbacks, registerReachabilityNotificationclone, equals, getClass, notify, notifyAll, wait, wait, waitgetJavaFieldgetAnnotationsByType, getDeclaredAnnotationsByTypepublic final ResolvedJavaField wrapped
protected TypeState instanceFieldTypeState
protected int position
protected final AnalysisType declaringClass
protected final AnalysisType fieldType
protected final FieldValueComputer fieldValueComputer
public AnalysisField(AnalysisUniverse universe, ResolvedJavaField wrappedField)
protected AnalysisUniverse getUniverse()
getUniverse in class AnalysisElementpublic ResolvedJavaField getWrapped()
getWrapped in interface WrappedElementgetWrapped in interface WrappedJavaFieldgetWrapped in class AnalysisElementpublic void copyAccessInfos(AnalysisField other)
public void intersectAccessInfos(AnalysisField other)
public int getId()
public JavaKind getStorageKind()
public TypeState getTypeState()
public TypeState getInstanceFieldTypeState()
public FieldTypeFlow getInitialInstanceFieldFlow()
public FieldTypeFlow getStaticFieldFlow()
public ContextInsensitiveFieldTypeFlow getInstanceFieldFlow()
public void cleanupAfterAnalysis()
public boolean registerAsAccessed(Object reason)
public boolean registerAsRead(Object reason)
reason - the reason why this field is read, non-nullpublic boolean registerAsWritten(Object reason)
reason - the reason why this field is written, non-nullpublic void registerAsFolded(Object reason)
public void registerAsUnsafeAccessed(Object reason)
public boolean registerAsUnsafeAccessed(com.oracle.svm.util.UnsafePartitionKind partitionKind,
Object reason)
public boolean isUnsafeAccessed()
public void registerAsJNIAccessed()
public boolean isJNIAccessed()
public void setUnsafeFrozenTypeState(boolean value)
public boolean hasUnsafeFrozenTypeState()
public Object getReadBy()
public Object getAccessedReason()
public boolean isAccessed()
public boolean isRead()
public Object getReadReason()
public boolean isWritten()
public Object getWrittenReason()
public boolean isFolded()
public Object getFoldedReason()
public boolean isReachable()
isReachable in class AnalysisElementpublic void onReachable()
onReachable in class AnalysisElementpublic boolean isValueAvailable()
public boolean isComputedValue()
public Class<?>[] computedValueTypes()
public boolean computedValueCanBeNull()
public void setCanBeNull(boolean canBeNull)
public boolean canBeNull()
public String getName()
public void setPosition(int newPosition)
public int getPosition()
public AnalysisType getType()
public int getModifiers()
public int getOffset()
public AnalysisType getDeclaringClass()
public boolean isInternal()
public boolean isSynthetic()
public boolean isStatic()
public Field getJavaField()
getJavaField in interface OriginalFieldProviderpublic JavaConstant getConstantValue()
public void addAnalysisFieldObserver(AnalysisField.AnalysisFieldObserver observer)
public void removeAnalysisFieldObserver(AnalysisField.AnalysisFieldObserver observer)