edu.cmu.cs.crystal.analysis.alias
Class MayAliasTransferFunction

java.lang.Object
  extended by edu.cmu.cs.crystal.tac.AbstractTACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
      extended by edu.cmu.cs.crystal.analysis.alias.MayAliasTransferFunction
All Implemented Interfaces:
IFlowAnalysisDefinition<TupleLatticeElement<Variable,AliasLE>>, ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>

public class MayAliasTransferFunction
extends AbstractTACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>


Constructor Summary
MayAliasTransferFunction(ICrystalAnalysis analysis)
           
 
Method Summary
 TupleLatticeElement<Variable,AliasLE> createEntryValue(MethodDeclaration m)
          Creates entry analysis information for analyzing a given method.
 ILatticeOperations<TupleLatticeElement<Variable,AliasLE>> getLatticeOperations()
          Gets the lattice operations for computing flow analysis results for a given method.
 IResult<TupleLatticeElement<Variable,AliasLE>> transfer(ArrayInitInstruction instr, List<ILabel> labels, TupleLatticeElement<Variable,AliasLE> value)
           
 IResult<TupleLatticeElement<Variable,AliasLE>> transfer(BinaryOperation binop, List<ILabel> labels, TupleLatticeElement<Variable,AliasLE> value)
           
 IResult<TupleLatticeElement<Variable,AliasLE>> transfer(CastInstruction instr, List<ILabel> labels, TupleLatticeElement<Variable,AliasLE> value)
           
 IResult<TupleLatticeElement<Variable,AliasLE>> transfer(CopyInstruction instr, List<ILabel> labels, TupleLatticeElement<Variable,AliasLE> value)
           
 IResult<TupleLatticeElement<Variable,AliasLE>> transfer(DotClassInstruction instr, List<ILabel> labels, TupleLatticeElement<Variable,AliasLE> value)
           
 IResult<TupleLatticeElement<Variable,AliasLE>> transfer(InstanceofInstruction instr, List<ILabel> labels, TupleLatticeElement<Variable,AliasLE> value)
           
 IResult<TupleLatticeElement<Variable,AliasLE>> transfer(LoadArrayInstruction instr, List<ILabel> labels, TupleLatticeElement<Variable,AliasLE> value)
           
 IResult<TupleLatticeElement<Variable,AliasLE>> transfer(LoadFieldInstruction instr, List<ILabel> labels, TupleLatticeElement<Variable,AliasLE> value)
           
 IResult<TupleLatticeElement<Variable,AliasLE>> transfer(LoadLiteralInstruction instr, List<ILabel> labels, TupleLatticeElement<Variable,AliasLE> value)
           
 IResult<TupleLatticeElement<Variable,AliasLE>> transfer(MethodCallInstruction instr, List<ILabel> labels, TupleLatticeElement<Variable,AliasLE> value)
           
 IResult<TupleLatticeElement<Variable,AliasLE>> transfer(NewArrayInstruction instr, List<ILabel> labels, TupleLatticeElement<Variable,AliasLE> value)
           
 IResult<TupleLatticeElement<Variable,AliasLE>> transfer(NewObjectInstruction instr, List<ILabel> labels, TupleLatticeElement<Variable,AliasLE> value)
           
 IResult<TupleLatticeElement<Variable,AliasLE>> transfer(SourceVariableDeclaration instr, List<ILabel> labels, TupleLatticeElement<Variable,AliasLE> value)
           
 IResult<TupleLatticeElement<Variable,AliasLE>> transfer(UnaryOperation unop, List<ILabel> labels, TupleLatticeElement<Variable,AliasLE> value)
           
 
Methods inherited from class edu.cmu.cs.crystal.tac.AbstractTACBranchSensitiveTransferFunction
getAnalysisContext, getAnalysisDirection, setAnalysisContext, transfer, transfer, transfer, transfer, transfer, transfer
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MayAliasTransferFunction

public MayAliasTransferFunction(ICrystalAnalysis analysis)
Method Detail

getLatticeOperations

public ILatticeOperations<TupleLatticeElement<Variable,AliasLE>> getLatticeOperations()
Description copied from interface: IFlowAnalysisDefinition
Gets the lattice operations for computing flow analysis results for a given method. Crystal uses the result of this method to compare and join intermediate results.

Returns:
lattice operations to be used for computing flow analysis results for a given method.

createEntryValue

public TupleLatticeElement<Variable,AliasLE> createEntryValue(MethodDeclaration m)
Description copied from interface: IFlowAnalysisDefinition
Creates entry analysis information for analyzing a given method. Crystal's flow analysis uses the result of this method as the incoming analysis information to transfer over the first (or last, for backwards analyses) instruction in the given method.

Parameters:
m - the method to create the lattice operations for
Returns:
entry analysis information for analyzing a given method.

transfer

public IResult<TupleLatticeElement<Variable,AliasLE>> transfer(ArrayInitInstruction instr,
                                                               List<ILabel> labels,
                                                               TupleLatticeElement<Variable,AliasLE> value)
Specified by:
transfer in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
Overrides:
transfer in class AbstractTACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>

transfer

public IResult<TupleLatticeElement<Variable,AliasLE>> transfer(BinaryOperation binop,
                                                               List<ILabel> labels,
                                                               TupleLatticeElement<Variable,AliasLE> value)
Specified by:
transfer in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
Overrides:
transfer in class AbstractTACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>

transfer

public IResult<TupleLatticeElement<Variable,AliasLE>> transfer(CastInstruction instr,
                                                               List<ILabel> labels,
                                                               TupleLatticeElement<Variable,AliasLE> value)
Specified by:
transfer in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
Overrides:
transfer in class AbstractTACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>

transfer

public IResult<TupleLatticeElement<Variable,AliasLE>> transfer(DotClassInstruction instr,
                                                               List<ILabel> labels,
                                                               TupleLatticeElement<Variable,AliasLE> value)
Specified by:
transfer in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
Overrides:
transfer in class AbstractTACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>

transfer

public IResult<TupleLatticeElement<Variable,AliasLE>> transfer(CopyInstruction instr,
                                                               List<ILabel> labels,
                                                               TupleLatticeElement<Variable,AliasLE> value)
Specified by:
transfer in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
Overrides:
transfer in class AbstractTACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>

transfer

public IResult<TupleLatticeElement<Variable,AliasLE>> transfer(InstanceofInstruction instr,
                                                               List<ILabel> labels,
                                                               TupleLatticeElement<Variable,AliasLE> value)
Specified by:
transfer in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
Overrides:
transfer in class AbstractTACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>

transfer

public IResult<TupleLatticeElement<Variable,AliasLE>> transfer(LoadLiteralInstruction instr,
                                                               List<ILabel> labels,
                                                               TupleLatticeElement<Variable,AliasLE> value)
Specified by:
transfer in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
Overrides:
transfer in class AbstractTACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>

transfer

public IResult<TupleLatticeElement<Variable,AliasLE>> transfer(LoadArrayInstruction instr,
                                                               List<ILabel> labels,
                                                               TupleLatticeElement<Variable,AliasLE> value)
Specified by:
transfer in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
Overrides:
transfer in class AbstractTACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>

transfer

public IResult<TupleLatticeElement<Variable,AliasLE>> transfer(LoadFieldInstruction instr,
                                                               List<ILabel> labels,
                                                               TupleLatticeElement<Variable,AliasLE> value)
Specified by:
transfer in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
Overrides:
transfer in class AbstractTACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>

transfer

public IResult<TupleLatticeElement<Variable,AliasLE>> transfer(MethodCallInstruction instr,
                                                               List<ILabel> labels,
                                                               TupleLatticeElement<Variable,AliasLE> value)
Specified by:
transfer in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
Overrides:
transfer in class AbstractTACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>

transfer

public IResult<TupleLatticeElement<Variable,AliasLE>> transfer(NewArrayInstruction instr,
                                                               List<ILabel> labels,
                                                               TupleLatticeElement<Variable,AliasLE> value)
Specified by:
transfer in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
Overrides:
transfer in class AbstractTACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>

transfer

public IResult<TupleLatticeElement<Variable,AliasLE>> transfer(NewObjectInstruction instr,
                                                               List<ILabel> labels,
                                                               TupleLatticeElement<Variable,AliasLE> value)
Specified by:
transfer in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
Overrides:
transfer in class AbstractTACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>

transfer

public IResult<TupleLatticeElement<Variable,AliasLE>> transfer(UnaryOperation unop,
                                                               List<ILabel> labels,
                                                               TupleLatticeElement<Variable,AliasLE> value)
Specified by:
transfer in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
Overrides:
transfer in class AbstractTACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>

transfer

public IResult<TupleLatticeElement<Variable,AliasLE>> transfer(SourceVariableDeclaration instr,
                                                               List<ILabel> labels,
                                                               TupleLatticeElement<Variable,AliasLE> value)
Specified by:
transfer in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
Overrides:
transfer in class AbstractTACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>