Module Backend.ClosuresSubstitution
module L = IBase.Logging- module ExpClosure : sig ... end
- value domain, with the following concretization function - gamma:
module VDom : sig ... endmodule CFG = Absint.ProcCfg.Normalmodule Domain : sig ... end- val get_var : Domain.t -> IR.Var.t -> Domain.value
- val eval_expr : Domain.t -> IR.Exp.t -> Domain.value
- val eval_instr : Domain.t -> IR.Sil.instr -> Domain.t
module TransferFunctions : sig ... endmodule Analyzer : sig ... end- val get_invariant_at_node : Analyzer.invariant_map -> IR.Procdesc.Node.t -> Domain.t
- val replace_closure_call : CFG.Node.t -> Domain.t -> IR.Sil.instr -> IR.Sil.instr
- val replace_closure_param : CFG.Node.t -> Domain.t -> IR.Sil.instr -> IR.Sil.instr
- replace_closure_parampropagates closures to function parameters, so that more functions are specialized by- CCallSpecializedWithClosures.process. Note that unlike- replace_closure_callrunning at the analysis phase,- replace_closure_paramshould run before- CCallSpecializedWithClosures.processat the capture phase.
- val process_common : (IR.Procdesc.Node.t -> Domain.t -> IR.Sil.instr -> IR.Sil.instr) -> IR.Procdesc.t -> unit
- val process_closure_call : Summary.t -> unit
- val process_closure_param : IR.Procdesc.t -> unit