Module Serialize.Cache

Module to cache the data for incremental analaysis during a run, before it is stored to disk, as well as for the server mode

type t = {
  1. mutable solver_data : Stdlib.Obj.t option;
  2. mutable analysis_data : Stdlib.Obj.t option;
  3. mutable version_data : MaxIdUtil.max_ids option;
  4. mutable cil_file : GoblintCil.file option;
}
val data : t Batteries.ref
type _ data_query =
  1. | SolverData : _ data_query
  2. | CilFile : GoblintCil.file data_query
  3. | VersionData : MaxIdUtil.max_ids data_query
  4. | AnalysisData : _ data_query

GADT that may be used to query data from and pass data to the cache.

val load_data : unit -> unit

Loads data for incremental runs from the appropriate file

val store_data : unit -> unit

Stores data for future incremental runs at the appropriate file.

val update_data : 'a. 'a data_query -> 'a -> unit

Update the incremental data in the in-memory cache

val reset_data : 'a. 'a data_query -> unit

Reset some incremental data in the in-memory cache to None

val get_opt_data : 'a. 'a data_query -> 'a option

Get incremental data from the in-memory cache wrapped in an optional. To populate the in-memory cache with data, call load_data first.

val get_data : 'a. 'a data_query -> 'a

Get incremental data from the in-memory cache. Same as get_opt_data, except not yielding an optional and failing when the requested data is not present.