Source file slicingState.ml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
module P =
State_builder.Option_ref
(SlicingTypes.Sl_project)
(struct
let name = "Slicing.Project"
let dependencies = []
end)
let self = P.self
let () =
Cmdline.run_after_extended_stage
(fun () ->
State_dependency_graph.add_codependencies
~onto:self
[ Pdg.Api.self; Inout.self ])
let get () =
try P.get ()
with Not_found -> SlicingParameters.fatal "slicing not initialized."
let may f = match P.get_option () with
| None -> ()
| Some _ -> f ()
let may_map ~none f = match P.get_option () with
| None -> none
| Some _ -> f ()
let reset_slicing () =
Eva.Analysis.compute () ;
let initialized = match P.get_option () with | None -> false | Some _ -> true in
if not initialized then
SlicingParameters.feedback ~level:1 "initializing slicing ..."
else
SlicingParameters.feedback ~level:1 "reinitializing slicing ...";
P.set
SlicingInternals.{ functions = Cil_datatype.Varinfo.Hashtbl.create 17;
actions = [] };
if not initialized then
SlicingParameters.feedback ~level:2 "done (initializing slicing)."
else
SlicingParameters.feedback ~level:2 "done (reinitializing slicing)."