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 BigBang |
bb |
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(BigBang bb,
ImageHeap heap,
AnalysisMetaAccess aMetaAccess,
org.graalvm.compiler.api.replacements.SnippetReflectionProvider aSnippetReflection,
ConstantReflectionProvider aConstantReflection,
ObjectScanningObserver aScanningObserver) |
| Modifier and Type | Method and Description |
|---|---|
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 JavaConstant |
createFieldValue(AnalysisField field,
ImageHeapInstance receiver,
ValueSupplier<JavaConstant> rawValue,
ObjectScanner.ScanReason reason) |
protected JavaConstant |
createFieldValue(AnalysisField field,
ValueSupplier<JavaConstant> rawValue,
ObjectScanner.ScanReason reason) |
JavaConstant |
createImageHeapConstant(JavaConstant constant,
ObjectScanner.ScanReason reason) |
protected ImageHeapConstant |
createImageHeapObject(JavaConstant constant,
ObjectScanner.ScanReason reason)
Create the ImageHeapConstant object wrapper, capture the hosted state of fields and arrays,
and install a future that can process them.
|
protected String |
formatReason(String message,
ObjectScanner.ScanReason reason) |
protected abstract Class<?> |
getClass(String className) |
protected ImageHeapConstant |
getOrCreateImageHeapConstant(JavaConstant javaConstant,
ObjectScanner.ScanReason reason) |
ObjectScanningObserver |
getScanningObserver() |
boolean |
isValueAvailable(AnalysisField field) |
static boolean |
isWordType(JavaConstant rawElementValue,
UniverseMetaAccess metaAccess) |
protected AnalysisField |
lookupJavaField(String className,
String fieldName) |
protected AnalysisType |
lookupJavaType(String className) |
protected JavaConstant |
onArrayElementReachable(ImageHeapArray array,
AnalysisType arrayType,
JavaConstant rawElementValue,
int elementIndex,
ObjectScanner.ScanReason reason,
Consumer<ObjectScanner.ScanReason> onAnalysisModified) |
void |
onFieldRead(AnalysisField field) |
protected void |
onObjectReachable(ImageHeapConstant imageHeapConstant,
ObjectScanner.ScanReason reason,
Consumer<ObjectScanner.ScanReason> onAnalysisModified) |
protected AnalysisFuture<JavaConstant> |
patchArrayElement(ImageHeapObjectArray arrayObject,
int index,
JavaConstant elementValue,
ObjectScanner.ScanReason reason,
Consumer<ObjectScanner.ScanReason> onAnalysisModified) |
protected AnalysisFuture<JavaConstant> |
patchInstanceField(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(Runnable task) |
JavaConstant |
readFieldValue(AnalysisField field,
JavaConstant receiver) |
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.
|
void |
rescanRoot(Field reflectionField) |
void |
scanEmbeddedRoot(JavaConstant root,
BytecodePosition position) |
protected boolean |
skipScanning() |
ImageHeapConstant |
toImageHeapObject(JavaConstant constant,
ObjectScanner.ScanReason reason) |
protected JavaConstant |
transformFieldValue(AnalysisField field,
JavaConstant receiverConstant,
JavaConstant originalValueConstant) |
protected final BigBang bb
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(BigBang bb, 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)
public JavaConstant createImageHeapConstant(JavaConstant constant,
ObjectScanner.ScanReason reason)
public ImageHeapConstant toImageHeapObject(JavaConstant constant, ObjectScanner.ScanReason reason)
protected ImageHeapConstant getOrCreateImageHeapConstant(JavaConstant javaConstant, ObjectScanner.ScanReason reason)
protected ImageHeapConstant createImageHeapObject(JavaConstant constant, ObjectScanner.ScanReason reason)
protected JavaConstant createFieldValue(AnalysisField field, ValueSupplier<JavaConstant> rawValue, ObjectScanner.ScanReason reason)
protected JavaConstant createFieldValue(AnalysisField field, ImageHeapInstance receiver, ValueSupplier<JavaConstant> rawValue, ObjectScanner.ScanReason reason)
protected JavaConstant transformFieldValue(AnalysisField field, JavaConstant receiverConstant, JavaConstant originalValueConstant)
protected JavaConstant onArrayElementReachable(ImageHeapArray array, AnalysisType arrayType, JavaConstant rawElementValue, int elementIndex, ObjectScanner.ScanReason reason, Consumer<ObjectScanner.ScanReason> onAnalysisModified)
public static boolean isWordType(JavaConstant rawElementValue,
UniverseMetaAccess metaAccess)
protected void onObjectReachable(ImageHeapConstant imageHeapConstant, ObjectScanner.ScanReason reason, Consumer<ObjectScanner.ScanReason> onAnalysisModified)
public boolean isValueAvailable(AnalysisField field)
protected String formatReason(String message, ObjectScanner.ScanReason reason)
protected ValueSupplier<JavaConstant> readHostedFieldValue(AnalysisField field, JavaConstant receiver)
public JavaConstant readFieldValue(AnalysisField field, JavaConstant receiver)
protected boolean skipScanning()
public void rescanRoot(Field reflectionField)
protected AnalysisFuture<JavaConstant> patchStaticField(TypeData typeData, AnalysisField field, JavaConstant fieldValue, ObjectScanner.ScanReason reason, Consumer<ObjectScanner.ScanReason> onAnalysisModified)
protected AnalysisFuture<JavaConstant> patchInstanceField(ImageHeapInstance receiverObject, AnalysisField field, JavaConstant fieldValue, ObjectScanner.ScanReason reason, Consumer<ObjectScanner.ScanReason> onAnalysisModified)
protected AnalysisFuture<JavaConstant> patchArrayElement(ImageHeapObjectArray arrayObject, int index, JavaConstant elementValue, 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 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(Runnable task)