Class OpenCall

    • Constructor Detail

      • OpenCall

        public OpenCall​(CFG cfg,
                        CodeLocation location,
                        Call.CallType callType,
                        java.lang.String qualifier,
                        java.lang.String targetName,
                        Expression... parameters)
        Builds the open call, happening at the given location in the program.
        Parameters:
        cfg - the cfg that this expression belongs to
        location - the location where the expression is defined within the 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 name of the target of this open call
        parameters - the parameters of this call
      • OpenCall

        public OpenCall​(CFG cfg,
                        CodeLocation location,
                        Call.CallType callType,
                        java.lang.String qualifier,
                        java.lang.String targetName,
                        EvaluationOrder order,
                        Expression... parameters)
        Builds the open call, happening at the given location in the program.
        Parameters:
        cfg - the cfg that this expression belongs to
        location - the location where the expression is defined within the 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 name of the target of this open call
        order - the evaluation order of the sub-expressions
        parameters - the parameters of this call
      • OpenCall

        public OpenCall​(CFG cfg,
                        CodeLocation location,
                        Call.CallType callType,
                        java.lang.String qualifier,
                        java.lang.String targetName,
                        Type staticType,
                        Expression... parameters)
        Builds the open call, happening at the given location in the program. The EvaluationOrder of the parameter is LeftToRightEvaluation.
        Parameters:
        cfg - the cfg that this expression belongs to
        location - the location where the expression is defined within the 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 name of the target of this open call
        parameters - the parameters of this call
        staticType - the static type of this call
      • OpenCall

        public OpenCall​(CFG cfg,
                        CodeLocation location,
                        Call.CallType callType,
                        java.lang.String qualifier,
                        java.lang.String targetName,
                        EvaluationOrder order,
                        Type staticType,
                        Expression... parameters)
        Builds the open call, happening at the given location in the program.
        Parameters:
        cfg - the cfg that this expression belongs to
        location - the location where the expression is defined within the 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 name of the target of this open call
        order - the evaluation order of the sub-expressions
        parameters - the parameters of this call
        staticType - the static type of this call
      • OpenCall

        public OpenCall​(UnresolvedCall source)
        Creates an open call as the resolved version of the given source call, copying all its data.
        Parameters:
        source - the unresolved call to copy
    • Method Detail

      • 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.
        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
      • getTargets

        public java.util.Collection<CodeMember> getTargets()
        Description copied from interface: ResolvedCall
        Yields the targets of the Call.
        Returns:
        the targets