edu.cmu.cs.crystal.tac
Interface ITACBranchSensitiveTransferFunction<LE>

Type Parameters:
LE - Type representing the analysis knowledge.
All Superinterfaces:
IFlowAnalysisDefinition<LE>
All Known Implementing Classes:
AbstractTACBranchSensitiveTransferFunction, ConstantTransferFunction, MayAliasTransferFunction

public interface ITACBranchSensitiveTransferFunction<LE>
extends IFlowAnalysisDefinition<LE>

Interface for defining branch-sensitive flow analysis transfer functions based on 3-address code instructions. Implement this interface directly or use a pre-defined abstract base classes for it. To create a flow analysis, pass an instance of this interface to TACFlowAnalysis.

Author:
Kevin Bierhoff
See Also:
TACInstruction, ITACTransferFunction

Method Summary
 void setAnalysisContext(ITACAnalysisContext context)
          This method is used to pass a variable query interface to the transfer function.
 IResult<LE> transfer(ArrayInitInstruction instr, List<ILabel> labels, LE value)
           
 IResult<LE> transfer(BinaryOperation binop, List<ILabel> labels, LE value)
           
 IResult<LE> transfer(CastInstruction instr, List<ILabel> labels, LE value)
           
 IResult<LE> transfer(ConstructorCallInstruction instr, List<ILabel> labels, LE value)
           
 IResult<LE> transfer(CopyInstruction instr, List<ILabel> labels, LE value)
           
 IResult<LE> transfer(DotClassInstruction instr, List<ILabel> labels, LE value)
           
 IResult<LE> transfer(EnhancedForConditionInstruction instr, List<ILabel> labels, LE value)
           
 IResult<LE> transfer(InstanceofInstruction instr, List<ILabel> labels, LE value)
           
 IResult<LE> transfer(LoadArrayInstruction instr, List<ILabel> labels, LE value)
           
 IResult<LE> transfer(LoadFieldInstruction instr, List<ILabel> labels, LE value)
           
 IResult<LE> transfer(LoadLiteralInstruction instr, List<ILabel> labels, LE value)
           
 IResult<LE> transfer(MethodCallInstruction instr, List<ILabel> labels, LE value)
           
 IResult<LE> transfer(NewArrayInstruction instr, List<ILabel> labels, LE value)
           
 IResult<LE> transfer(NewObjectInstruction instr, List<ILabel> labels, LE value)
           
 IResult<LE> transfer(ReturnInstruction instr, List<ILabel> labels, LE value)
           
 IResult<LE> transfer(SourceVariableDeclaration instr, List<ILabel> labels, LE value)
           
 IResult<LE> transfer(SourceVariableReadInstruction instr, List<ILabel> labels, LE value)
           
 IResult<LE> transfer(StoreArrayInstruction instr, List<ILabel> labels, LE value)
           
 IResult<LE> transfer(StoreFieldInstruction instr, List<ILabel> labels, LE value)
           
 IResult<LE> transfer(UnaryOperation unop, List<ILabel> labels, LE value)
           
 
Methods inherited from interface edu.cmu.cs.crystal.flow.IFlowAnalysisDefinition
createEntryValue, getAnalysisDirection, getLatticeOperations
 

Method Detail

setAnalysisContext

void setAnalysisContext(ITACAnalysisContext context)
This method is used to pass a variable query interface to the transfer function. Transfer functions can, but do not have to, store the passed object in one of their fields for future use. The provided object can be used to find Variable objects for AST nodes.

Parameters:
context - Interface to query for variables given AST nodes.

transfer

IResult<LE> transfer(ArrayInitInstruction instr,
                     List<ILabel> labels,
                     LE value)

transfer

IResult<LE> transfer(BinaryOperation binop,
                     List<ILabel> labels,
                     LE value)

transfer

IResult<LE> transfer(CastInstruction instr,
                     List<ILabel> labels,
                     LE value)

transfer

IResult<LE> transfer(DotClassInstruction instr,
                     List<ILabel> labels,
                     LE value)

transfer

IResult<LE> transfer(ConstructorCallInstruction instr,
                     List<ILabel> labels,
                     LE value)

transfer

IResult<LE> transfer(CopyInstruction instr,
                     List<ILabel> labels,
                     LE value)

transfer

IResult<LE> transfer(EnhancedForConditionInstruction instr,
                     List<ILabel> labels,
                     LE value)

transfer

IResult<LE> transfer(InstanceofInstruction instr,
                     List<ILabel> labels,
                     LE value)

transfer

IResult<LE> transfer(LoadLiteralInstruction instr,
                     List<ILabel> labels,
                     LE value)

transfer

IResult<LE> transfer(LoadArrayInstruction instr,
                     List<ILabel> labels,
                     LE value)

transfer

IResult<LE> transfer(LoadFieldInstruction instr,
                     List<ILabel> labels,
                     LE value)

transfer

IResult<LE> transfer(MethodCallInstruction instr,
                     List<ILabel> labels,
                     LE value)

transfer

IResult<LE> transfer(NewArrayInstruction instr,
                     List<ILabel> labels,
                     LE value)

transfer

IResult<LE> transfer(NewObjectInstruction instr,
                     List<ILabel> labels,
                     LE value)

transfer

IResult<LE> transfer(ReturnInstruction instr,
                     List<ILabel> labels,
                     LE value)

transfer

IResult<LE> transfer(StoreArrayInstruction instr,
                     List<ILabel> labels,
                     LE value)

transfer

IResult<LE> transfer(StoreFieldInstruction instr,
                     List<ILabel> labels,
                     LE value)

transfer

IResult<LE> transfer(SourceVariableDeclaration instr,
                     List<ILabel> labels,
                     LE value)

transfer

IResult<LE> transfer(SourceVariableReadInstruction instr,
                     List<ILabel> labels,
                     LE value)

transfer

IResult<LE> transfer(UnaryOperation unop,
                     List<ILabel> labels,
                     LE value)