@ -80,6 +80,7 @@ type global_state =
; name_generator : Ident . NameGenerator . t
; name_generator : Ident . NameGenerator . t
; proc_analysis_time : ( Mtime . Span . t * string ) option
; proc_analysis_time : ( Mtime . Span . t * string ) option
(* * the time elapsed doing [status] so far *)
(* * the time elapsed doing [status] so far *)
; pulse_address_generator : PulseDomain . AbstractAddress . state
; symexec_state : State . t }
; symexec_state : State . t }
let save_global_state () =
let save_global_state () =
@ -94,6 +95,7 @@ let save_global_state () =
; proc_analysis_time =
; proc_analysis_time =
Option . map ! current_taskbar_status ~ f : ( fun ( t0 , status ) ->
Option . map ! current_taskbar_status ~ f : ( fun ( t0 , status ) ->
( Mtime . span t0 ( Mtime_clock . now () ) , status ) )
( Mtime . span t0 ( Mtime_clock . now () ) , status ) )
; pulse_address_generator = PulseDomain . AbstractAddress . get_state ()
; symexec_state = State . save_state () }
; symexec_state = State . save_state () }
@ -104,6 +106,7 @@ let restore_global_state st =
BiabductionConfig . footprint := st . footprint_mode ;
BiabductionConfig . footprint := st . footprint_mode ;
Printer . curr_html_formatter := st . html_formatter ;
Printer . curr_html_formatter := st . html_formatter ;
Ident . NameGenerator . set_current st . name_generator ;
Ident . NameGenerator . set_current st . name_generator ;
PulseDomain . AbstractAddress . set_state st . pulse_address_generator ;
State . restore_state st . symexec_state ;
State . restore_state st . symexec_state ;
current_taskbar_status :=
current_taskbar_status :=
Option . map st . proc_analysis_time ~ f : ( fun ( suspended_span , status ) ->
Option . map st . proc_analysis_time ~ f : ( fun ( suspended_span , status ) ->