Class IVarAbstraction

    • Field Detail

      • me

        public Node me
      • id

        public int id
      • Qpos

        public int Qpos
      • willUpdate

        public boolean willUpdate
      • top_value

        public int top_value
      • lrf_value

        public int lrf_value
    • Constructor Detail

      • IVarAbstraction

        public IVarAbstraction()
    • Method Detail

      • lessThan

        public boolean lessThan​(IVarAbstraction other)
        Used by ordering the nodes in priority worklist.
      • merge

        public IVarAbstraction merge​(IVarAbstraction other)
        Make the variable other be the parent of this variable.
        Parameters:
        other -
        Returns:
      • setNumber

        public void setNumber​(int number)
        Specified by:
        setNumber in interface Numberable
      • reachable

        public boolean reachable()
        This pointer/object is reachable if its enclosing method is reachable. Pleas always call this method to check the status before querying points-to information.
      • hasPTResult

        public boolean hasPTResult()
        Test if this pointer currently has points-to result. The result can be computed in the last iteration of geomPTA, although its willUpdate = false this round.
      • getWrappedNode

        public Node getWrappedNode()
        Processing the wrapped SPARK node.
      • getType

        public Type getType()
      • isLocalPointer

        public boolean isLocalPointer()
      • enclosingMethod

        public SootMethod enclosingMethod()
      • add_points_to_3

        public abstract boolean add_points_to_3​(AllocNode obj,
                                                long I1,
                                                long I2,
                                                long L)
      • add_points_to_4

        public abstract boolean add_points_to_4​(AllocNode obj,
                                                long I1,
                                                long I2,
                                                long L1,
                                                long L2)
      • add_simple_constraint_3

        public abstract boolean add_simple_constraint_3​(IVarAbstraction qv,
                                                        long I1,
                                                        long I2,
                                                        long L)
      • add_simple_constraint_4

        public abstract boolean add_simple_constraint_4​(IVarAbstraction qv,
                                                        long I1,
                                                        long I2,
                                                        long L1,
                                                        long L2)
      • put_complex_constraint

        public abstract void put_complex_constraint​(PlainConstraint cons)
      • reconstruct

        public abstract void reconstruct()
      • do_before_propagation

        public abstract void do_before_propagation()
      • do_after_propagation

        public abstract void do_after_propagation()
      • drop_duplicates

        public abstract void drop_duplicates()
      • remove_points_to

        public abstract void remove_points_to​(AllocNode obj)
      • deleteAll

        public abstract void deleteAll()
      • keepPointsToOnly

        public abstract void keepPointsToOnly()
      • injectPts

        public abstract void injectPts()
      • num_of_diff_objs

        public abstract int num_of_diff_objs()
        Return -1 if this pointer does not have points-to information. This function can be used for testing if the pointer has been processed by geomPTA.
      • num_of_diff_edges

        public abstract int num_of_diff_edges()
      • count_pts_intervals

        public abstract int count_pts_intervals​(AllocNode obj)
      • count_new_pts_intervals

        public abstract int count_new_pts_intervals()
      • count_flow_intervals

        public abstract int count_flow_intervals​(IVarAbstraction qv)
      • heap_sensitive_intersection

        public abstract boolean heap_sensitive_intersection​(IVarAbstraction qv)
        Perform context sensitive alias checking with qv.
        Parameters:
        qv -
        Returns:
      • pointer_interval_points_to

        public abstract boolean pointer_interval_points_to​(long l,
                                                           long r,
                                                           AllocNode obj)
        Test if the pointer in the context range [l, R) points to object obj.
        Parameters:
        l -
        r -
        obj -
        Returns:
      • isDeadObject

        public abstract boolean isDeadObject​(AllocNode obj)
        Test if the particular object has been obsoleted. It's mainly for points-to developer use.
        Parameters:
        obj -
        Returns:
      • get_all_points_to_objects

        public abstract Set<AllocNode> get_all_points_to_objects()
        Obtain context insensitive points-to result (by removing contexts).
        Returns:
      • get_all_context_sensitive_objects

        public abstract void get_all_context_sensitive_objects​(long l,
                                                               long r,
                                                               PtSensVisitor visitor)
        Given the pointers falling in the context range [l, r), we compute the set of context sensitive objects pointed to by those pointers. This function is designed in visitor pattern.
        See Also:
        Obj_1cfa_extractor, Obj_full_extractor
      • print_context_sensitive_points_to

        public abstract void print_context_sensitive_points_to​(PrintStream outPrintStream)