org.eclipse.jdt.internal.compiler.flow
类 NullInfoRegistry

java.lang.Object
  继承者 org.eclipse.jdt.internal.compiler.flow.FlowInfo
      继承者 org.eclipse.jdt.internal.compiler.flow.UnconditionalFlowInfo
          继承者 org.eclipse.jdt.internal.compiler.flow.NullInfoRegistry

public class NullInfoRegistry
extends UnconditionalFlowInfo

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.


嵌套类摘要
 
从类 org.eclipse.jdt.internal.compiler.flow.UnconditionalFlowInfo 继承的嵌套类/接口
UnconditionalFlowInfo.AssertionFailedException
 
字段摘要
 
从类 org.eclipse.jdt.internal.compiler.flow.UnconditionalFlowInfo 继承的字段
BitCacheSize, COVERAGE_TEST_FLAG, CoverageTestId, definiteInits, extra, extraLength, maxFieldCount, nullBit1, nullBit2, nullBit3, nullBit4, nullStatusChangedInAssert, potentialInits
 
从类 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
 
构造方法摘要
NullInfoRegistry(UnconditionalFlowInfo upstream)
          Make a new null info registry, using an upstream flow info.
 
方法摘要
 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()
           
 
从类 org.eclipse.jdt.internal.compiler.flow.UnconditionalFlowInfo 继承的方法
addInitializationsFrom, addNullInfoFrom, addPotentialInitializationsFrom, addPotentialNullInfoFrom, cannotBeDefinitelyNullOrNonNull, cannotBeNull, canOnlyBeNull, copy, discardInitializationInfo, discardNonFieldInitializations, initsWhenFalse, initsWhenTrue, isDefinitelyAssigned, isDefinitelyAssigned, isDefinitelyNonNull, isDefinitelyNull, isDefinitelyUnknown, isMarkedAsNullOrNonNullInAssertExpression, isPotentiallyAssigned, isPotentiallyAssigned, isPotentiallyNonNull, isPotentiallyNull, isPotentiallyUnknown, isProtectedNonNull, isProtectedNull, isTrue, markAsComparedEqualToNull, markAsDefinitelyAssigned, markAsDefinitelyAssigned, markedAsNullOrNonNullInAssertExpression, mergedWith, nullInfoLessUnconditionalCopy, resetNullInfo, safeInitsWhenTrue, setReachMode, unconditionalCopy, unconditionalFieldLessCopy, unconditionalInits, unconditionalInitsWithoutSideEffect
 
从类 org.eclipse.jdt.internal.compiler.flow.FlowInfo 继承的方法
asNegatedCondition, conditional, initial, markNullStatus, mergedOptimizedBranches, mergedOptimizedBranchesIfElse, nullStatus, reachMode
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

构造方法详细信息

NullInfoRegistry

public NullInfoRegistry(UnconditionalFlowInfo upstream)
Make a new null info registry, using an upstream flow info. All definite assignments of the upstream are carried forward, since a try block may exit before its first statement.

参数:
upstream - - UnconditionalFlowInfo: the flow info before we enter the try block; only definite assignments are considered; this parameter is not modified by this constructor
方法详细信息

add

public NullInfoRegistry add(NullInfoRegistry other)
Add the information held by another NullInfoRegistry instance to this, then return this.

参数:
other - - NullInfoRegistry: the information to add to this
返回:
this, modified to carry the information held by other

markAsComparedEqualToNonNull

public void markAsComparedEqualToNonNull(LocalVariableBinding local)
从类 FlowInfo 复制的描述
Record that a local variable got checked to be non null.

覆盖:
UnconditionalFlowInfo 中的 markAsComparedEqualToNonNull
参数:
local - the checked local variable

markAsDefinitelyNonNull

public void markAsDefinitelyNonNull(LocalVariableBinding local)
从类 FlowInfo 复制的描述
Record a local got definitely assigned to a non-null value.

覆盖:
UnconditionalFlowInfo 中的 markAsDefinitelyNonNull

markAsDefinitelyNull

public void markAsDefinitelyNull(LocalVariableBinding local)
从类 FlowInfo 复制的描述
Record a local got definitely assigned to null.

覆盖:
UnconditionalFlowInfo 中的 markAsDefinitelyNull

markAsDefinitelyUnknown

public void markAsDefinitelyUnknown(LocalVariableBinding local)
从类 UnconditionalFlowInfo 复制的描述
Mark a local as having been assigned to an unknown value.

覆盖:
UnconditionalFlowInfo 中的 markAsDefinitelyUnknown
参数:
local - the local to mark

mitigateNullInfoOf

public 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. May return flowInfo unchanged, or a modified, fresh copy of flowInfo.

参数:
flowInfo - - FlowInfo: the flow information that this null info registry may mitigate
返回:
a copy of flowInfo carrying mitigated information, or else flowInfo unchanged

toString

public String toString()
覆盖:
UnconditionalFlowInfo 中的 toString

markPotentiallyUnknownBit

public void markPotentiallyUnknownBit(LocalVariableBinding local)
Mark a local as potentially having been assigned to an unknown value.

覆盖:
UnconditionalFlowInfo 中的 markPotentiallyUnknownBit
参数:
local - the local to mark

markPotentiallyNullBit

public void markPotentiallyNullBit(LocalVariableBinding local)
从类 FlowInfo 复制的描述
Record a local may have got assigned to null (set the bit on existing info).

覆盖:
UnconditionalFlowInfo 中的 markPotentiallyNullBit

markPotentiallyNonNullBit

public void markPotentiallyNonNullBit(LocalVariableBinding local)
从类 FlowInfo 复制的描述
Record a local may have got assigned to non-null (set the bit on existing info).

覆盖:
UnconditionalFlowInfo 中的 markPotentiallyNonNullBit


Copyright © 2013. All Rights Reserved.