|
||||||||||
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, coverageTestFlag, coverageTestId, definiteInits, extra, extraLength, maxFieldCount, nullBit1, nullBit2, nullBit3, nullBit4, potentialInits |
Fields inherited from class org.eclipse.jdt.internal.compiler.flow.FlowInfo |
---|
DEAD_END, NON_NULL, NULL, NULL_FLAG_MASK, REACHABLE, tagBits, UNKNOWN, UNREACHABLE |
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. |
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. |
java.lang.String |
toString()
|
Methods inherited from class org.eclipse.jdt.internal.compiler.flow.FlowInfo |
---|
asNegatedCondition, conditional, initial, mergedOptimizedBranches, reachMode |
Methods inherited from class java.lang.Object |
---|
equals, 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 constructorMethod Detail |
---|
public NullInfoRegistry add(NullInfoRegistry other)
other
- - NullInfoRegistry: the information to add to this
public void markAsComparedEqualToNonNull(LocalVariableBinding local)
FlowInfo
markAsComparedEqualToNonNull
in class UnconditionalFlowInfo
local
- the checked local variablepublic void markAsDefinitelyNonNull(LocalVariableBinding local)
FlowInfo
markAsDefinitelyNonNull
in class UnconditionalFlowInfo
public void markAsDefinitelyNull(LocalVariableBinding local)
FlowInfo
markAsDefinitelyNull
in class UnconditionalFlowInfo
public void markAsDefinitelyUnknown(LocalVariableBinding local)
UnconditionalFlowInfo
markAsDefinitelyUnknown
in class UnconditionalFlowInfo
local
- the local to markpublic UnconditionalFlowInfo mitigateNullInfoOf(FlowInfo flowInfo)
flowInfo
- - FlowInfo: the flow information that this null info
registry may mitigate
public java.lang.String toString()
toString
in class UnconditionalFlowInfo
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |