public abstract class ImageHeapScanner extends Object
When an instance field is marked as accessed the objects of its declaring type (and all the subtypes) are re-scanned.
| Modifier and Type | Field and Description |
|---|---|
protected ConstantReflectionProvider |
constantReflection |
protected ConstantReflectionProvider |
hostedConstantReflection |
protected org.graalvm.compiler.api.replacements.SnippetReflectionProvider |
hostedSnippetReflection |
protected HostVM |
hostVM |
protected ImageHeap |
imageHeap |
protected AnalysisMetaAccess |
metaAccess |
protected ObjectScanningObserver |
scanningObserver |
protected org.graalvm.compiler.api.replacements.SnippetReflectionProvider |
snippetReflection |
protected AnalysisUniverse |
universe |
| Constructor and Description |
|---|
ImageHeapScanner(ImageHeap heap,
AnalysisMetaAccess aMetaAccess,
org.graalvm.compiler.api.replacements.SnippetReflectionProvider aSnippetReflection,
ConstantReflectionProvider aConstantReflection,
ObjectScanningObserver aScanningObserver) |
| Modifier and Type | Method and Description |
|---|---|
protected AnalysisType |
analysisType(Object constant) |
JavaConstant |
asConstant(Object object) |
protected Object |
asObject(JavaConstant constant) |
void |
cleanupAfterAnalysis() |
TypeData |
computeTypeData(AnalysisType type)
Computes the class initialization status and the snapshot of all static fields.
|
protected AnalysisType |
constantType(JavaConstant constant) |
protected ImageHeapObject |
createImageHeapObject(JavaConstant constant,
ObjectScanner.ScanReason reason,
Consumer<ObjectScanner.ScanReason> onAnalysisModified) |
protected String |
formatReason(String message,
ObjectScanner.ScanReason reason) |
protected abstract Class<?> |
getClass(String className) |
protected ImageHeapObject |
getOrCreateConstantReachableTask(JavaConstant javaConstant,
ObjectScanner.ScanReason reason,
Consumer<ObjectScanner.ScanReason> onAnalysisModified) |
ObjectScanningObserver |
getScanningObserver() |
boolean |
isValueAvailable(AnalysisField field) |
protected AnalysisField |
lookupJavaField(String className,
String fieldName) |
protected AnalysisType |
lookupJavaType(String className) |
protected JavaConstant |
onArrayElementReachable(JavaConstant array,
AnalysisType arrayType,
JavaConstant rawElementValue,
int elementIndex,
ObjectScanner.ScanReason reason) |
protected JavaConstant |
onArrayElementReachable(JavaConstant array,
AnalysisType arrayType,
JavaConstant rawElementValue,
int elementIndex,
ObjectScanner.ScanReason reason,
Consumer<ObjectScanner.ScanReason> onAnalysisModified) |
void |
onFieldRead(AnalysisField field) |
protected void |
onObjectReachable(ImageHeapObject imageHeapObject) |
protected AnalysisFuture<JavaConstant> |
patchInstanceField(com.oracle.graal.pointsto.heap.ImageHeapInstance receiverObject,
AnalysisField field,
JavaConstant fieldValue,
ObjectScanner.ScanReason reason,
Consumer<ObjectScanner.ScanReason> onAnalysisModified) |
protected AnalysisFuture<JavaConstant> |
patchStaticField(TypeData typeData,
AnalysisField field,
JavaConstant fieldValue,
ObjectScanner.ScanReason reason,
Consumer<ObjectScanner.ScanReason> onAnalysisModified) |
void |
postTask(AnalysisFuture<?> future) |
void |
postTask(Runnable task) |
protected ValueSupplier<JavaConstant> |
readHostedFieldValue(AnalysisField field,
JavaConstant receiver) |
protected void |
rescanEconomicMap(org.graalvm.collections.EconomicMap<?,?> object) |
void |
rescanField(Object receiver,
Field reflectionField) |
void |
rescanObject(Object object)
Add the object to the image heap and, if the object is a collection, rescan its elements.
|
void |
rescanObject(Object object,
ObjectScanner.ScanReason reason)
Add the object to the image heap.
|
Object |
rescanRoot(Field reflectionField) |
void |
scanEmbeddedRoot(JavaConstant root,
BytecodePosition position) |
protected boolean |
skipScanning() |
protected ImageHeapObject |
toImageHeapObject(JavaConstant constant) |
protected ImageHeapObject |
toImageHeapObject(JavaConstant constant,
ObjectScanner.ScanReason reason,
Consumer<ObjectScanner.ScanReason> onAnalysisModified) |
protected JavaConstant |
transformFieldValue(AnalysisField field,
JavaConstant receiverConstant,
JavaConstant originalValueConstant) |
protected Object |
unwrapObject(JavaConstant constant) |
protected final ImageHeap imageHeap
protected final AnalysisMetaAccess metaAccess
protected final AnalysisUniverse universe
protected final HostVM hostVM
protected final org.graalvm.compiler.api.replacements.SnippetReflectionProvider snippetReflection
protected final ConstantReflectionProvider constantReflection
protected final ConstantReflectionProvider hostedConstantReflection
protected final org.graalvm.compiler.api.replacements.SnippetReflectionProvider hostedSnippetReflection
protected ObjectScanningObserver scanningObserver
public ImageHeapScanner(ImageHeap heap, AnalysisMetaAccess aMetaAccess, org.graalvm.compiler.api.replacements.SnippetReflectionProvider aSnippetReflection, ConstantReflectionProvider aConstantReflection, ObjectScanningObserver aScanningObserver)
public void scanEmbeddedRoot(JavaConstant root,
BytecodePosition position)
public void onFieldRead(AnalysisField field)
public TypeData computeTypeData(AnalysisType type)
protected ImageHeapObject toImageHeapObject(JavaConstant constant)
protected ImageHeapObject toImageHeapObject(JavaConstant constant, ObjectScanner.ScanReason reason, Consumer<ObjectScanner.ScanReason> onAnalysisModified)
protected ImageHeapObject getOrCreateConstantReachableTask(JavaConstant javaConstant, ObjectScanner.ScanReason reason, Consumer<ObjectScanner.ScanReason> onAnalysisModified)
protected ImageHeapObject createImageHeapObject(JavaConstant constant, ObjectScanner.ScanReason reason, Consumer<ObjectScanner.ScanReason> onAnalysisModified)
protected Object unwrapObject(JavaConstant constant)
protected JavaConstant transformFieldValue(AnalysisField field, JavaConstant receiverConstant, JavaConstant originalValueConstant)
protected JavaConstant onArrayElementReachable(JavaConstant array,
AnalysisType arrayType,
JavaConstant rawElementValue,
int elementIndex,
ObjectScanner.ScanReason reason)
protected JavaConstant onArrayElementReachable(JavaConstant array,
AnalysisType arrayType,
JavaConstant rawElementValue,
int elementIndex,
ObjectScanner.ScanReason reason,
Consumer<ObjectScanner.ScanReason> onAnalysisModified)
protected void onObjectReachable(ImageHeapObject imageHeapObject)
public boolean isValueAvailable(AnalysisField field)
protected String formatReason(String message, ObjectScanner.ScanReason reason)
protected ValueSupplier<JavaConstant> readHostedFieldValue(AnalysisField field, JavaConstant receiver)
protected boolean skipScanning()
protected AnalysisFuture<JavaConstant> patchStaticField(TypeData typeData, AnalysisField field, JavaConstant fieldValue, ObjectScanner.ScanReason reason, Consumer<ObjectScanner.ScanReason> onAnalysisModified)
protected AnalysisFuture<JavaConstant> patchInstanceField(com.oracle.graal.pointsto.heap.ImageHeapInstance receiverObject, AnalysisField field, JavaConstant fieldValue, ObjectScanner.ScanReason reason, Consumer<ObjectScanner.ScanReason> onAnalysisModified)
public void rescanObject(Object object)
public void rescanObject(Object object, ObjectScanner.ScanReason reason)
protected void rescanEconomicMap(org.graalvm.collections.EconomicMap<?,?> object)
protected AnalysisType analysisType(Object constant)
protected AnalysisType constantType(JavaConstant constant)
protected Object asObject(JavaConstant constant)
public JavaConstant asConstant(Object object)
public void cleanupAfterAnalysis()
public ObjectScanningObserver getScanningObserver()
protected AnalysisType lookupJavaType(String className)
protected AnalysisField lookupJavaField(String className, String fieldName)
public void postTask(AnalysisFuture<?> future)
public void postTask(Runnable task)