module Lmap:sig..end
Maps from bases to memory maps. The memory maps are those of the
Offsetmap module.
type 'a default_contents =
| |
Bottom |
| |
Top of |
| |
Constant of |
| |
Other |
Contents of a variable when it is not present in the state.
See function default_contents in the functor below
module Make_LOffset:functor (V:siginclude Offsetmap_lattice_with_isotropyinclude Lattice_type.With_Top_Optend) ->functor (Offsetmap:module type of Offsetmap_sigwith type v = V.t and type widen_hint = V.numerical_widen_hint) ->functor (Default_offsetmap:sigval name :stringUsed to create different datatypes each time the functor is applied
val default_offsetmap :Base.t -> Offsetmap.t Lattice_bounds.or_bottomValue returned when a map is queried, and the base is not present.
`Bottomindicates that the base is never bound in such a map.val default_contents :V.t Lmap.default_contentsThis function is used to optimize functions that add keys in a map, in particular when maintaining canonicity w.r.t. default contents. It describes the contents
cof the offsetmap resulting fromdefault_offsetmap b. The possible values are:
Bottommeans thatcisV.bottomeverywhere, and furthermore thatV.bottomhas an empty concretization. We deduce from this fact that unmapped keys do not contribute to a join, and thatjoin c vis nevercas soon asvis not itselfv.Topmeans thatcisV.topeverywhere. Thus unmapped keys have a default value more general than the one in a map where the key is bound.`Constant vmeans thatcis an offsetmap with a single interval containingveverywhere.vmust be isotropic (in the sense ofV.is_isotropic).`Othermeans thatdefault_offsetmapreturns something arbitrary.This function is only used on keys that change values. Thus it is safe to have
default_offsetmapreturn something that do not matchdefault_contentson constant keys.end) ->module type of Lmap_sigwith type v = V.t and type widen_hint_base = V.numerical_widen_hint and type offsetmap = Offsetmap.t