public abstract class ObjectScanner extends Object
ObjectScanner.ReusableSet).| Modifier and Type | Class and Description |
|---|---|
protected static class |
ObjectScanner.FieldScan |
protected static class |
ObjectScanner.MethodScan |
static class |
ObjectScanner.ReusableSet
This datastructure keeps track if an object was already put or not atomically.
|
static interface |
ObjectScanner.ScanReason |
| Constructor and Description |
|---|
ObjectScanner(BigBang bb,
CompletionExecutor executor,
ObjectScanner.ReusableSet scannedObjects,
ObjectScanningObserver scanningObserver) |
| Modifier and Type | Method and Description |
|---|---|
protected static AnalysisType |
analysisType(BigBang bb,
Object constant) |
protected static Object |
constantAsObject(BigBang bb,
jdk.vm.ci.meta.JavaConstant constant) |
protected static AnalysisType |
constantType(BigBang bb,
jdk.vm.ci.meta.JavaConstant constant) |
protected void |
finish()
Process all consequences for scanned fields.
|
protected void |
scanArray(jdk.vm.ci.meta.JavaConstant array,
com.oracle.graal.pointsto.ObjectScanner.WorklistEntry previous)
Scans constant arrays, one element at the time.
|
void |
scanBootImageHeapRoots(Comparator<AnalysisField> fieldComparator,
Comparator<jdk.vm.ci.code.BytecodePosition> embeddedRootComparator) |
void |
scanConstant(jdk.vm.ci.meta.JavaConstant value,
ObjectScanner.ScanReason reason) |
void |
scanConstant(jdk.vm.ci.meta.JavaConstant value,
ObjectScanner.ScanReason reason,
com.oracle.graal.pointsto.ObjectScanner.WorklistEntry previous) |
protected void |
scanField(AnalysisField field,
jdk.vm.ci.meta.JavaConstant receiver,
com.oracle.graal.pointsto.ObjectScanner.WorklistEntry previous)
Scans the value of a field giving a receiver object.
|
protected void |
scanRootField(AnalysisField field)
Scans the value of a root field.
|
protected final BigBang bb
public ObjectScanner(BigBang bb, CompletionExecutor executor, ObjectScanner.ReusableSet scannedObjects, ObjectScanningObserver scanningObserver)
public void scanBootImageHeapRoots(Comparator<AnalysisField> fieldComparator, Comparator<jdk.vm.ci.code.BytecodePosition> embeddedRootComparator)
protected final void scanRootField(AnalysisField field)
field - the scanned root fieldprotected final void scanField(AnalysisField field, jdk.vm.ci.meta.JavaConstant receiver, com.oracle.graal.pointsto.ObjectScanner.WorklistEntry previous)
field - the scanned fieldreceiver - the receiver objectprevious - reference to the work list entry containing parent objectprotected final void scanArray(jdk.vm.ci.meta.JavaConstant array,
com.oracle.graal.pointsto.ObjectScanner.WorklistEntry previous)
array - the array to be scannedprevious - reference to the work list entry containing parent objectpublic final void scanConstant(jdk.vm.ci.meta.JavaConstant value,
ObjectScanner.ScanReason reason)
public final void scanConstant(jdk.vm.ci.meta.JavaConstant value,
ObjectScanner.ScanReason reason,
com.oracle.graal.pointsto.ObjectScanner.WorklistEntry previous)
protected void finish()
exec, to mitigate the calling overhead.
Processing fields can issue new fields to be scanned so we always add the check for workitems
at the end of the worklist.protected static AnalysisType analysisType(BigBang bb, Object constant)
protected static AnalysisType constantType(BigBang bb, jdk.vm.ci.meta.JavaConstant constant)