public class LockStore extends CFAbstractStore<CFValue,LockStore>
Store.FlowRule, Store.Kind| Modifier and Type | Field and Description | 
|---|---|
protected boolean | 
inConstructorOrInitializer
If 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  
null if 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