BO.ArrayBlkmodule ArrInfo : sig ... endinclude Absint.AbstractDomain.MapS
with type key = AbsLoc.Allocsite.t
and type value = ArrInfo.tinclude IStdlib.PrettyPrintable.PPMonoMap
with type key = AbsLoc.Allocsite.t
with type value = ArrInfo.tinclude IStdlib.PrettyPrintable.MonoMap
with type key = AbsLoc.Allocsite.t
with type value = ArrInfo.ttype key = AbsLoc.Allocsite.ttype value = ArrInfo.tval empty : tval is_empty : t -> boolval cardinal : t -> intval is_singleton_or_more :
t ->
(key * value) IStdlib.IContainer.singleton_or_moreinclude IStdlib.PrettyPrintable.PrintableType with type t := tval pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unitinclude Absint.AbstractDomain.WithBottom with type t := tinclude Absint.AbstractDomain.S with type t := tinclude Absint.AbstractDomain.Comparable with type t := tinclude IStdlib.PrettyPrintable.PrintableType with type t := tval pp : IStdlib.PrettyPrintable.F.formatter -> t -> unitval bottom : tThe bottom value of the domain.
val is_bottom : t -> boolReturn true if this is the bottom value
val bot : tval make_c :
AbsLoc.Allocsite.t ->
offset:Itv.t ->
size:Itv.t ->
stride:Itv.t ->
tMake an array block for C
val make_java : AbsLoc.Allocsite.t -> length:Itv.t -> tMake an array block for Java
val unknown : tval get_pow_loc : t -> AbsLoc.PowLoc.tReturn all allocsites as PowLoc.t
val is_bot : t -> boolval is_unknown : t -> boolval is_symbolic : t -> boolCheck if there is a symbolic integer value in its offset or size
Lift a comparison of Itv.t and Loc.t to that of t. The comparison for Itv.t is used for integer values such as offset and size, and the comparison for Loc.t is used for allocsites.
val prune_binop : IR.Binop.t -> t -> t -> tprune_binop bop x y returns a pruned value of x by bop and y.
Normalize all interval values such as offset and size in it. Thus, if an interval value is invalid, the interval value is replaced with bottom.
val subst :
t ->
Bounds.Bound.eval_sym ->
AbsLoc.PowLoc.eval_locpath ->
AbsLoc.PowLoc.t * tSubstitute symbolic abstract locations and symbolic interval value in the array block. eval_sym is to get substituted interval values and eval_locpath is to get substituted abstract locaion values. It also returns a set of abstract locations containing non-allocsite locations from the substitution results. Since the key of ArrayBlk.t is AbsLoc.Allocsite.t, they cannot be written in this domain.
val get_symbols : t -> Symb.SymbolSet.tReturn all symbols for integer values in it
Return offset of the array block. If cost_mode is true, it returns a conservative (bigger than correct one), but not correct offset results.