module SlicingMarks:sig
..end
generated spare
= the smallest visible mark
module Mark:sig
..end
Mark
is used to represent some information about the status of
a PDF element in a slice.
SlicingInternals.pdg_mark
is associated with each element of the PDG in a slice.
The first component gives the mark propagated from a user request, while
the second one is used to propagate informations to the called functions.val mk_m1 : SlicingInternals.mark -> SlicingInternals.pdg_mark
val mk_m2 : SlicingInternals.mark -> SlicingInternals.pdg_mark
val bottom_mark : SlicingInternals.pdg_mark
val user_mark : SlicingInternals.pdg_mark -> SlicingInternals.mark
val is_bottom_mark : SlicingInternals.pdg_mark -> bool
module MarkPair:sig
..end
module SigMarks:sig
..end
SigMarks
works on the marks in function signatures.
max_in
)
and marks for the call outputs (numbered from 0 to max_out
val mk_gen_spare : SlicingInternals.pdg_mark
spare
= the smallest visible markval mk_user_spare : SlicingInternals.pdg_mark
val mk_user_mark : data:bool -> addr:bool -> ctrl:bool -> SlicingInternals.pdg_mark
val is_top_mark : SlicingInternals.pdg_mark -> bool
val is_spare_mark : SlicingInternals.pdg_mark -> bool
val is_ctrl_mark : SlicingInternals.pdg_mark -> bool
val is_addr_mark : SlicingInternals.pdg_mark -> bool
val is_data_mark : SlicingInternals.pdg_mark -> bool
val merge_marks : SlicingInternals.pdg_mark list -> SlicingInternals.pdg_mark
val combine_marks : SlicingInternals.pdg_mark ->
SlicingInternals.pdg_mark ->
SlicingInternals.pdg_mark * SlicingInternals.pdg_mark
combine_marks
add a new information to the old value.
is_new=true
if the new mark is not included in the old one.val inter_marks : SlicingInternals.pdg_mark list -> SlicingInternals.pdg_mark
val minus_marks : SlicingInternals.pdg_mark ->
SlicingInternals.pdg_mark -> SlicingInternals.pdg_mark
val compare_marks : SlicingInternals.pdg_mark -> SlicingInternals.pdg_mark -> int
val pretty_mark : Format.formatter -> SlicingInternals.pdg_mark -> unit
val mark_to_string : SlicingInternals.pdg_mark -> string
val missing_input_mark : call:SlicingInternals.pdg_mark ->
called:SlicingInternals.pdg_mark -> SlicingInternals.pdg_mark option
val missing_output_mark : call:SlicingInternals.pdg_mark ->
called:SlicingInternals.pdg_mark -> SlicingInternals.pdg_mark option
typesig_marks =
SigMarks.t
val empty_sig : 'a PdgIndex.Signature.t
val get_input_mark : SigMarks.t -> int -> SlicingInternals.pdg_mark
val get_all_input_marks : SigMarks.t ->
(PdgIndex.Signature.in_key * SlicingInternals.pdg_mark) list
val get_matching_input_marks : SigMarks.t ->
Locations.Zone.t ->
(PdgIndex.Signature.in_key * SlicingInternals.pdg_mark) list
val merge_inputs_m1_mark : SlicingInternals.pdg_mark PdgIndex.Signature.t -> SlicingInternals.pdg_mark
val get_input_loc_under_mark : SlicingInternals.pdg_mark PdgIndex.Signature.t ->
Locations.Zone.t -> SlicingInternals.pdg_mark
val get_in_ctrl_mark : SigMarks.t -> SlicingInternals.pdg_mark
val something_visible : SigMarks.t -> bool
val some_visible_out : SlicingInternals.pdg_mark PdgIndex.Signature.t -> bool
val is_topin_visible : SigMarks.t -> bool
val get_marked_out_zone : SlicingInternals.pdg_mark PdgIndex.Signature.t -> bool * Locations.Zone.t
val pretty_sig : Format.formatter -> SlicingInternals.pdg_mark PdgIndex.Signature.t -> unit