Module Phase_cache.With_cache

Parameters

module Phase : S

Signature

module Version : sig ... end

Version represents a naive, generic stamp of a cache entry and is recomputed each time the cache is refreshed. It is robust to Fingerprint.make errors.

type t = {
  1. output : Phase.output;
  2. cache_was_hit : bool;
  3. version : Version.t;
}
val apply : ?cache_disabling:string option -> ?force_invalidation:bool -> Phase.t -> t

apply ~cache_disabling ~force_invalidation phase_input runs the phase computation Phase.f phase_input, if there's some cache_disabling. Otherwise, the phase computation is run with a cache mechanism. Whether the cache is invalidated depends on the outcome of a Phase.Fingerprint comparison between the current fingerprint and the last one. Additionally, the invalidation of the cache can be forced by setting the force_invalidation parameter to true.