Class LockTransfer
java.lang.Object
org.checkerframework.dataflow.cfg.node.AbstractNodeVisitor<TransferResult<V,S>,TransferInput<V,S>>
org.checkerframework.framework.flow.CFAbstractTransfer<CFValue,LockStore,LockTransfer>
org.checkerframework.checker.lock.LockTransfer
- All Implemented Interfaces:
ForwardTransferFunction<CFValue,
,LockStore> TransferFunction<CFValue,
,LockStore> NodeVisitor<TransferResult<CFValue,
LockStore>, TransferInput<CFValue, LockStore>>
LockTransfer handles constructors, initializers, synchronized methods, and synchronized blocks.
-
Field Summary
Fields inherited from class org.checkerframework.framework.flow.CFAbstractTransfer
analysis, sequentialSemantics
-
Constructor Summary
ConstructorDescriptionLockTransfer
(LockAnalysis analysis, LockChecker checker) Create a transfer function for the Lock Checker. -
Method Summary
Modifier and TypeMethodDescriptioninitialStore
(UnderlyingAST underlyingAST, List<LocalVariableNode> parameters) The initial store maps method formal parameters to their currently most refined type.protected void
makeLockHeld
(LockStore store, Node node) Sets a givenNode
to @LockHeld in the givenstore
.protected void
makeLockHeld
(TransferResult<CFValue, LockStore> result, Node node) protected void
makeLockPossiblyHeld
(LockStore store, Node node) Sets a givenNode
to @LockPossiblyHeld in the givenstore
.protected void
makeLockPossiblyHeld
(TransferResult<CFValue, LockStore> result, Node node) Methods inherited from class org.checkerframework.framework.flow.CFAbstractTransfer
addInformationFromPreconditions, createTransferResult, createTransferResult, finishValue, finishValue, getNarrowedValue, getValueFromFactory, getWidenedValue, insertIntoStores, isNotFullyInitializedReceiver, moreSpecificValue, processCommonAssignment, processConditionalPostconditions, processPostconditions, recreateTransferResult, recreateTransferResult, setFixedInitialStore, shouldPerformWholeProgramInference, shouldPerformWholeProgramInference, splitAssignments, strengthenAnnotationOfEqualTo, usesSequentialSemantics, visitArrayAccess, visitAssignment, visitCase, visitClassName, visitConditionalNot, visitDeconstructorPattern, visitEqualTo, visitExpressionStatement, visitFieldAccess, visitInstanceOf, visitLambdaResultExpression, visitLocalVariable, visitMethodInvocation, visitNarrowingConversion, visitNode, visitNotEqual, visitObjectCreation, visitReturn, visitStringConversion, visitSwitchExpressionNode, visitTernaryExpression, visitThis, visitVariableDeclaration, visitWideningConversion
Methods inherited from class org.checkerframework.dataflow.cfg.node.AbstractNodeVisitor
visitArrayCreation, visitArrayType, visitAssertionError, visitBitwiseAnd, visitBitwiseComplement, visitBitwiseOr, visitBitwiseXor, visitBooleanLiteral, visitCharacterLiteral, visitClassDeclaration, visitConditionalAnd, visitConditionalOr, visitDoubleLiteral, visitExplicitThis, visitFloatingDivision, visitFloatingRemainder, visitFloatLiteral, visitGreaterThan, visitGreaterThanOrEqual, visitImplicitThis, visitIntegerDivision, visitIntegerLiteral, visitIntegerRemainder, visitLeftShift, visitLessThan, visitLessThanOrEqual, visitLongLiteral, visitMarker, visitMemberReference, visitMethodAccess, visitNullChk, visitNullLiteral, visitNumericalAddition, visitNumericalMinus, visitNumericalMultiplication, visitNumericalPlus, visitNumericalSubtraction, visitPackageName, visitParameterizedType, visitPrimitiveType, visitShortLiteral, visitSignedRightShift, visitStringConcatenate, visitStringLiteral, visitSuper, visitThrow, visitTypeCast, visitUnsignedRightShift, visitValueLiteral
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.checkerframework.dataflow.cfg.node.NodeVisitor
visitArrayCreation, visitArrayType, visitAssertionError, visitBitwiseAnd, visitBitwiseComplement, visitBitwiseOr, visitBitwiseXor, visitBooleanLiteral, visitCharacterLiteral, visitClassDeclaration, visitConditionalAnd, visitConditionalOr, visitDoubleLiteral, visitExplicitThis, visitFloatingDivision, visitFloatingRemainder, visitFloatLiteral, visitGreaterThan, visitGreaterThanOrEqual, visitImplicitThis, visitIntegerDivision, visitIntegerLiteral, visitIntegerRemainder, visitLeftShift, visitLessThan, visitLessThanOrEqual, visitLongLiteral, visitMarker, visitMemberReference, visitMethodAccess, visitNullChk, visitNullLiteral, visitNumericalAddition, visitNumericalMinus, visitNumericalMultiplication, visitNumericalPlus, visitNumericalSubtraction, visitPackageName, visitParameterizedType, visitPrimitiveType, visitShortLiteral, visitSignedRightShift, visitStringConcatenate, visitStringLiteral, visitSuper, visitThrow, visitTypeCast, visitUnsignedRightShift
-
Constructor Details
-
LockTransfer
Create a transfer function for the Lock Checker.- Parameters:
analysis
- the analysis this transfer function belongs tochecker
- the type-checker this transfer function belongs to
-
-
Method Details
-
makeLockHeld
Sets a givenNode
to @LockHeld in the givenstore
.- Parameters:
store
- the store to updatenode
- the node that should be @LockHeld
-
makeLockPossiblyHeld
Sets a givenNode
to @LockPossiblyHeld in the givenstore
.- Parameters:
store
- the store to updatenode
- the node that should be @LockPossiblyHeld
-
makeLockHeld
-
makeLockPossiblyHeld
-
initialStore
Description copied from class:CFAbstractTransfer
The initial store maps method formal parameters to their currently most refined type.- Specified by:
initialStore
in interfaceForwardTransferFunction<CFValue,
LockStore> - Overrides:
initialStore
in classCFAbstractTransfer<CFValue,
LockStore, LockTransfer> - Parameters:
underlyingAST
- an abstract syntax treeparameters
- a list of local variable nodes representing formal parameters (if any)- Returns:
- the initial store
-
visitSynchronized
public TransferResult<CFValue,LockStore> visitSynchronized(SynchronizedNode n, TransferInput<CFValue, LockStore> p) - Specified by:
visitSynchronized
in interfaceNodeVisitor<TransferResult<CFValue,
LockStore>, TransferInput<CFValue, LockStore>> - Overrides:
visitSynchronized
in classAbstractNodeVisitor<TransferResult<CFValue,
LockStore>, TransferInput<CFValue, LockStore>>
-