|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.eclipse.jdt.internal.compiler.flow.FlowInfo
org.eclipse.jdt.internal.compiler.flow.UnconditionalFlowInfo
org.eclipse.jdt.internal.compiler.flow.NullInfoRegistry
public class NullInfoRegistry
A degenerate form of UnconditionalFlowInfo explicitly meant to capture
the effects of null related operations within try blocks. Given the fact
that a try block might exit at any time, a null related operation that
occurs within such a block mitigates whatever we know about the previous
null status of involved variables. NullInfoRegistry handles that
by negating upstream definite information that clashes with what a given
statement contends about the same variable. It also implements
mitigateNullInfo so as to elaborate the
flow info presented in input of finally blocks.
| Nested Class Summary |
|---|
| Nested classes/interfaces inherited from class org.eclipse.jdt.internal.compiler.flow.UnconditionalFlowInfo |
|---|
UnconditionalFlowInfo.AssertionFailedException |
| Field Summary |
|---|
| Fields inherited from class org.eclipse.jdt.internal.compiler.flow.UnconditionalFlowInfo |
|---|
BitCacheSize, COVERAGE_TEST_FLAG, CoverageTestId, definiteInits, extra, extraLength, maxFieldCount, nullBit1, nullBit2, nullBit3, nullBit4, nullStatusChangedInAssert, potentialInits |
| Fields inherited from class org.eclipse.jdt.internal.compiler.flow.FlowInfo |
|---|
DEAD_END, NON_NULL, NULL, NULL_FLAG_MASK, POTENTIALLY_NON_NULL, POTENTIALLY_NULL, POTENTIALLY_UNKNOWN, REACHABLE, tagBits, UNKNOWN, UNREACHABLE, UNREACHABLE_BY_NULLANALYSIS, UNREACHABLE_OR_DEAD |
| Constructor Summary | |
|---|---|
NullInfoRegistry(UnconditionalFlowInfo upstream)
Make a new null info registry, using an upstream flow info. |
|
| Method Summary | |
|---|---|
NullInfoRegistry |
add(NullInfoRegistry other)
Add the information held by another NullInfoRegistry instance to this, then return this. |
void |
markAsComparedEqualToNonNull(LocalVariableBinding local)
Record that a local variable got checked to be non null. |
void |
markAsDefinitelyNonNull(LocalVariableBinding local)
Record a local got definitely assigned to a non-null value. |
void |
markAsDefinitelyNull(LocalVariableBinding local)
Record a local got definitely assigned to null. |
void |
markAsDefinitelyUnknown(LocalVariableBinding local)
Mark a local as having been assigned to an unknown value. |
void |
markPotentiallyNonNullBit(LocalVariableBinding local)
Record a local may have got assigned to non-null (set the bit on existing info). |
void |
markPotentiallyNullBit(LocalVariableBinding local)
Record a local may have got assigned to null (set the bit on existing info). |
void |
markPotentiallyUnknownBit(LocalVariableBinding local)
Mark a local as potentially having been assigned to an unknown value. |
UnconditionalFlowInfo |
mitigateNullInfoOf(FlowInfo flowInfo)
Mitigate the definite and protected info of flowInfo, depending on what this null info registry knows about potential assignments and messages sends involving locals. |
String |
toString()
|
| Methods inherited from class org.eclipse.jdt.internal.compiler.flow.FlowInfo |
|---|
asNegatedCondition, conditional, initial, markNullStatus, mergedOptimizedBranches, mergedOptimizedBranchesIfElse, nullStatus, reachMode |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Constructor Detail |
|---|
public NullInfoRegistry(UnconditionalFlowInfo upstream)
upstream - - UnconditionalFlowInfo: the flow info before we enter the
try block; only definite assignments are considered; this parameter is
not modified by this constructor| Method Detail |
|---|
public NullInfoRegistry add(NullInfoRegistry other)
other - - NullInfoRegistry: the information to add to this
public void markAsComparedEqualToNonNull(LocalVariableBinding local)
FlowInfo
markAsComparedEqualToNonNull in class UnconditionalFlowInfolocal - the checked local variablepublic void markAsDefinitelyNonNull(LocalVariableBinding local)
FlowInfo
markAsDefinitelyNonNull in class UnconditionalFlowInfopublic void markAsDefinitelyNull(LocalVariableBinding local)
FlowInfo
markAsDefinitelyNull in class UnconditionalFlowInfopublic void markAsDefinitelyUnknown(LocalVariableBinding local)
UnconditionalFlowInfo
markAsDefinitelyUnknown in class UnconditionalFlowInfolocal - the local to markpublic UnconditionalFlowInfo mitigateNullInfoOf(FlowInfo flowInfo)
flowInfo - - FlowInfo: the flow information that this null info
registry may mitigate
public String toString()
toString in class UnconditionalFlowInfopublic void markPotentiallyUnknownBit(LocalVariableBinding local)
markPotentiallyUnknownBit in class UnconditionalFlowInfolocal - the local to markpublic void markPotentiallyNullBit(LocalVariableBinding local)
FlowInfo
markPotentiallyNullBit in class UnconditionalFlowInfopublic void markPotentiallyNonNullBit(LocalVariableBinding local)
FlowInfo
markPotentiallyNonNullBit in class UnconditionalFlowInfo
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||