Class CFGCall

    • Constructor Detail

      • CFGCall

        public CFGCall​(CFG cfg,
                       CodeLocation location,
                       Call.CallType callType,
                       java.lang.String qualifier,
                       java.lang.String targetName,
                       java.util.Collection<CFG> targets,
                       Expression... parameters)
        Builds the CFG call, happening at the given location in the program. The EvaluationOrder of the parameter is LeftToRightEvaluation. The static type of this call is the common supertype of the return types of all targets.
        Parameters:
        cfg - the cfg that this expression belongs to
        location - the location where this expression is defined within program
        callType - the call type of this call
        qualifier - the optional qualifier of the call (can be null or empty - see Call.getFullTargetName() for more info)
        targetName - the qualified name of the static target of this call
        targets - the CFGs that are targeted by this CFG call
        parameters - the parameters of this call
      • CFGCall

        public CFGCall​(CFG cfg,
                       CodeLocation location,
                       Call.CallType callType,
                       java.lang.String qualifier,
                       java.lang.String targetName,
                       EvaluationOrder order,
                       java.util.Collection<CFG> targets,
                       Expression... parameters)
        Builds the CFG call, happening at the given location in the program. The static type of this call is the common supertype of the return types of all targets.
        Parameters:
        cfg - the cfg that this expression belongs to
        location - the location where this expression is defined within program
        callType - the call type of this call
        qualifier - the optional qualifier of the call (can be null or empty - see Call.getFullTargetName() for more info)
        targetName - the qualified name of the static target of this call
        order - the evaluation order of the sub-expressions
        targets - the CFGs that are targeted by this CFG call
        parameters - the parameters of this call
      • CFGCall

        public CFGCall​(UnresolvedCall source,
                       java.util.Collection<CFG> targets)
        Creates a cfg call as the resolved version of the given source call, copying all its data.
        Parameters:
        source - the unresolved call to copy
        targets - the CFGs that the call has been resolved against
    • Method Detail

      • getTargetedCFGs

        public java.util.Collection<CFG> getTargetedCFGs()
        Yields the CFGs that are targeted by this CFG call.
        Returns:
        the target CFG
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Call
      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class Call
      • compareCallAux

        protected int compareCallAux​(Call o)
        Description copied from class: Call
        Auxiliary method for Statement.compareTo(Statement) that can safely assume that the two calls happen at the same CodeLocation, are instances of the same class, have the same parameters according to their implementation of Statement.compareTo(Statement), and have all fields defined in the Call class equal according to their Comparable.compareTo(Object). This method is thus responsible for only comparing the implementation-specific fields.
        Specified by:
        compareCallAux in class Call
        Parameters:
        o - the other call
        Returns:
        a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified object
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class Call
      • getMetaVariable

        public final Identifier getMetaVariable()
        Description copied from interface: MetaVariableCreator
        Yields the meta variable that is introduced during the evaluation of the semantics of this object to store information about the value produced by this object. Since the meta variable simulates a value pushed on the stack, it should be forgotten after it is consumed.
        Specified by:
        getMetaVariable in interface MetaVariableCreator
        Returns:
        the meta variable introduced by this object
      • compute

        public <A extends AbstractState<A>> AnalysisState<A> compute​(AnalysisState<A> entryState,
                                                                     InterproceduralAnalysis<A> interprocedural,
                                                                     StatementStore<A> expressions,
                                                                     ExpressionSet[] parameters)
                                                              throws SemanticException
        Description copied from class: CallWithResult
        Computes an analysis state that abstracts the result of this call when parameters are used as actual parameters, and the state when the call is executed is entryState.
        Specified by:
        compute in class CallWithResult
        Type Parameters:
        A - the type of AbstractState
        Parameters:
        entryState - the abstract analysis state when the call is reached
        interprocedural - the interprocedural analysis of the program to analyze
        expressions - the cache where analysis states of intermediate expressions must be stored
        parameters - the expressions representing the actual parameters of the call
        Returns:
        an abstract analysis state representing the abstract result of the cfg call. The AnalysisState.getComputedExpressions() will contain an Identifier pointing to the meta variable containing the abstraction of the returned value, if any
        Throws:
        SemanticException - if something goes wrong during the computation