public class ObjectScanner extends Object
ObjectScanner.ReusableSet).| Modifier and Type | Class and Description |
|---|---|
static class |
ObjectScanner.ArrayScan |
static class |
ObjectScanner.EmbeddedRootScan |
static class |
ObjectScanner.FieldConstantFold |
static class |
ObjectScanner.FieldScan |
static class |
ObjectScanner.MethodParsing |
static class |
ObjectScanner.OtherReason |
static class |
ObjectScanner.ReusableSet
This datastructure keeps track if an object was already put or not atomically.
|
static class |
ObjectScanner.ScanReason |
| Constructor and Description |
|---|
ObjectScanner(BigBang bb,
CompletionExecutor executor,
ObjectScanner.ReusableSet scannedObjects,
ObjectScanningObserver scanningObserver) |
| Modifier and Type | Method and Description |
|---|---|
static String |
asString(BigBang bb,
JavaConstant constant) |
static String |
asString(BigBang bb,
JavaConstant constant,
boolean appendToString) |
static AnalysisMethod |
buildObjectBacktrace(BigBang bb,
ObjectScanner.ScanReason reason,
StringBuilder objectBacktrace) |
static AnalysisMethod |
buildObjectBacktrace(BigBang bb,
ObjectScanner.ScanReason reason,
StringBuilder objectBacktrace,
String header) |
static Object |
constantAsObject(BigBang bb,
JavaConstant constant) |
static AnalysisType |
constantType(BigBang bb,
JavaConstant constant) |
protected void |
finish()
Process all consequences for scanned fields.
|
static String |
limit(String value,
int length) |
protected void |
scanArray(JavaConstant array,
ObjectScanner.ScanReason prevReason)
Scans constant arrays, one element at the time.
|
void |
scanBootImageHeapRoots() |
void |
scanBootImageHeapRoots(Comparator<AnalysisField> fieldComparator,
Comparator<jdk.vm.ci.code.BytecodePosition> embeddedRootComparator) |
void |
scanConstant(JavaConstant value,
ObjectScanner.ScanReason reason) |
protected void |
scanEmbeddedRoot(JavaConstant root,
jdk.vm.ci.code.BytecodePosition position) |
protected void |
scanField(AnalysisField field,
JavaConstant receiver,
ObjectScanner.ScanReason prevReason)
Scans the value of a field giving a receiver object.
|
protected void |
scanRootField(AnalysisField field)
Scans the value of a root field.
|
static void |
unsupportedFeature(BigBang bb,
String key,
String message,
ObjectScanner.ScanReason reason) |
static void |
unsupportedFeatureDuringConstantScan(BigBang bb,
JavaConstant constant,
UnsupportedFeatureException e,
ObjectScanner.ScanReason reason)
Use the constant hashCode as a key for the unsupported feature to register only one error
message if the constant is reachable from multiple places.
|
static void |
unsupportedFeatureDuringFieldFolding(BigBang bb,
AnalysisField field,
JavaConstant receiver,
UnsupportedFeatureException e,
AnalysisMethod parsedMethod,
int bci) |
static void |
unsupportedFeatureDuringFieldScan(BigBang bb,
AnalysisField field,
JavaConstant receiver,
UnsupportedFeatureException e,
ObjectScanner.ScanReason reason)
Use the field format and receiver hashCode as a key for the unsupported feature to register
only one error message if the value is reachable from multiple places.
|
protected final BigBang bb
public ObjectScanner(BigBang bb, CompletionExecutor executor, ObjectScanner.ReusableSet scannedObjects, ObjectScanningObserver scanningObserver)
public void scanBootImageHeapRoots()
public void scanBootImageHeapRoots(Comparator<AnalysisField> fieldComparator, Comparator<jdk.vm.ci.code.BytecodePosition> embeddedRootComparator)
protected void scanEmbeddedRoot(JavaConstant root,
jdk.vm.ci.code.BytecodePosition position)
protected final void scanRootField(AnalysisField field)
field - the scanned root fieldprotected void scanField(AnalysisField field, JavaConstant receiver, ObjectScanner.ScanReason prevReason)
field - the scanned fieldreceiver - the receiver objectprotected final void scanArray(JavaConstant array,
ObjectScanner.ScanReason prevReason)
array - the array to be scannedpublic void scanConstant(JavaConstant value,
ObjectScanner.ScanReason reason)
public static void unsupportedFeatureDuringConstantScan(BigBang bb, JavaConstant constant, UnsupportedFeatureException e, ObjectScanner.ScanReason reason)
public static void unsupportedFeatureDuringFieldScan(BigBang bb, AnalysisField field, JavaConstant receiver, UnsupportedFeatureException e, ObjectScanner.ScanReason reason)
public static void unsupportedFeatureDuringFieldFolding(BigBang bb, AnalysisField field, JavaConstant receiver, UnsupportedFeatureException e, AnalysisMethod parsedMethod, int bci)
public static void unsupportedFeature(BigBang bb, String key, String message, ObjectScanner.ScanReason reason)
public static AnalysisMethod buildObjectBacktrace(BigBang bb, ObjectScanner.ScanReason reason, StringBuilder objectBacktrace)
public static AnalysisMethod buildObjectBacktrace(BigBang bb, ObjectScanner.ScanReason reason, StringBuilder objectBacktrace, String header)
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.public static AnalysisType constantType(BigBang bb, JavaConstant constant)