public class LockStore extends CFAbstractStore<CFValue,LockStore>
Store.FlowRule, Store.Kind| Modifier and Type | Field and Description | 
|---|---|
| protected boolean | inConstructorOrInitializerIf true, indicates that the store refers to a point in the code inside a constructor or
 initializer. | 
analysis, arrayValues, classValues, fieldValues, localVariableValues, methodValues, sequentialSemantics, thisValue| Constructor and Description | 
|---|
| LockStore(LockAnalysis analysis,
         boolean sequentialSemantics) | 
| LockStore(LockAnalysis analysis,
         CFAbstractStore<CFValue,LockStore> other)Copy constructor. | 
| Modifier and Type | Method and Description | 
|---|---|
| @Nullable CFValue | getValue(JavaExpression expr)Returns the current abstract value of a Java expression, or  nullif no information is
 available. | 
| void | insertLockPossiblyHeld(JavaExpression je) | 
| void | insertValue(JavaExpression je,
           @Nullable CFValue value,
           boolean permitNondeterministic) | 
| protected String | internalVisualize(CFGVisualizer<CFValue,LockStore,?> viz)Adds a representation of the internal information of this Store to visualizer  viz. | 
| protected boolean | isSideEffectFree(AnnotatedTypeFactory atypeFactory,
                ExecutableElement method)Indicates whether the given method is side-effect-free as far as the current store is
 concerned. | 
| LockStore | leastUpperBound(LockStore other)Compute the least upper bound of two stores. | 
| void | setInConstructorOrInitializer() | 
| void | updateForMethodCall(MethodInvocationNode n,
                   AnnotatedTypeFactory atypeFactory,
                   CFValue val)Remove any information that might not be valid any more after a method call, and add
 information guaranteed by the method. | 
canAlias, canInsertJavaExpression, clearValue, computeNewValueAndInsert, copy, equals, getFieldValue, getFieldValues, getUid, getValue, getValue, getValue, getValue, getValue, hashCode, initializeMethodParameter, initializeThisValue, insertOrRefine, insertOrRefine, insertOrRefinePermitNondeterministic, insertThisValue, insertValue, insertValue, insertValuePermitNondeterministic, insertValuePermitNondeterministic, isMonotonicUpdate, removeConflicting, removeConflicting, removeConflicting, replaceValue, shouldInsert, supersetOf, toString, updateForArrayAssignment, updateForAssignment, updateForFieldAccessAssignment, updateForLocalVariableAssignment, visualize, widenedUpperBoundprotected boolean inConstructorOrInitializer
public LockStore(LockAnalysis analysis, boolean sequentialSemantics)
public LockStore(LockAnalysis analysis, CFAbstractStore<CFValue,LockStore> other)
public LockStore leastUpperBound(LockStore other)
StoreImportant: This method must fulfill the following contract:
this.
   other.
   this, even if the signature is
       more permissive.
   leastUpperBound in interface Store<LockStore>leastUpperBound in class CFAbstractStore<CFValue,LockStore>public void insertLockPossiblyHeld(JavaExpression je)
public void setInConstructorOrInitializer()
public @Nullable CFValue getValue(JavaExpression expr)
CFAbstractStorenull if no information is
 available.getValue in class CFAbstractStore<CFValue,LockStore>null if no information is
     availableprotected String internalVisualize(CFGVisualizer<CFValue,LockStore,?> viz)
CFAbstractStoreviz.internalVisualize in class CFAbstractStore<CFValue,LockStore>viz - the visualizerStoreprotected boolean isSideEffectFree(AnnotatedTypeFactory atypeFactory, ExecutableElement method)
CFAbstractStoreisSideEffectFree in class CFAbstractStore<CFValue,LockStore>atypeFactory - the type factory used to retrieve annotations on the method elementmethod - the method elementpublic void updateForMethodCall(MethodInvocationNode n, AnnotatedTypeFactory atypeFactory, CFValue val)
CFAbstractStoreSideEffectFree or Pure), then no information needs to be removed.
   a.f needs to be removed, except
       if the method n cannot modify a.f (e.g., if a is a local variable
       or this, and f is final).
   val in the store.updateForMethodCall in class CFAbstractStore<CFValue,LockStore>public void insertValue(JavaExpression je, @Nullable CFValue value, boolean permitNondeterministic)
CFAbstractStoreCFAbstractStore.insertValue(JavaExpression, CFAbstractValue) and CFAbstractStore.insertValuePermitNondeterministic(org.checkerframework.dataflow.expression.JavaExpression, javax.lang.model.element.AnnotationMirror).
 Every overriding implementation should start with
 if (!shouldInsert) {
   return;
 }
 insertValue in class CFAbstractStore<CFValue,LockStore>je - the expression to insert in the storevalue - the value of the expressionpermitNondeterministic - if false, does nothing if expr is nondeterministic; if
     true, permits nondeterministic expressions to be placed in the store