Class AllIntegerDueToBranchePiPolicy

  • All Implemented Interfaces:
    SSAPiNodePolicy

    public class AllIntegerDueToBranchePiPolicy
    extends java.lang.Object
    implements SSAPiNodePolicy
    A policy, that adds pi nodes for all variables, that are used in a branch instruction.
    • Constructor Detail

      • AllIntegerDueToBranchePiPolicy

        public AllIntegerDueToBranchePiPolicy()
    • Method Detail

      • getPi

        public com.ibm.wala.util.collections.Pair<java.lang.Integer,​SSAInstruction> getPi​(SSAAbstractInvokeInstruction call,
                                                                                                SymbolTable symbolTable)
        Description copied from interface: SSAPiNodePolicy
        Do we need to introduce a new name for some value immediately after a call?

        If so, returns a pair consisting of the value number needing renaming, and the instruction which should be recorded as the cause of the pi instruction

        Specified by:
        getPi in interface SSAPiNodePolicy
        Parameters:
        call - the call instruction in question
        symbolTable - current state of the symbol table for the IR under construction
        Returns:
        description of the necessary pi instruction, or null if no pi instruction is needed.
      • getPi

        public com.ibm.wala.util.collections.Pair<java.lang.Integer,​SSAInstruction> getPi​(SSAConditionalBranchInstruction cond,
                                                                                                SSAInstruction def1,
                                                                                                SSAInstruction def2,
                                                                                                SymbolTable symbolTable)
        Description copied from interface: SSAPiNodePolicy
        Do we need to introduce a new name for some value after deciding on an outcome for a conditional branch instruction?

        If so, returns a pair consisting of the value number needing renaming, and the instruction which should be recorded as the cause of the pi instruction

        Specified by:
        getPi in interface SSAPiNodePolicy
        Parameters:
        cond - the conditional branch instruction in question
        def1 - the SSAInstruction that defs cond.getUse(0), or null if none
        def2 - the SSAInstruction that defs cond.getUse(1), or null if none
        symbolTable - current state of the symbol table for the IR under construction
        Returns:
        description of the necessary pi instruction, or null if no pi instruction is needed.