Module Backend.ClosuresSubstitution
module L = IBase.Loggingmodule ExpClosure : sig ... endvalue domain, with the following concretization function
gamma:
module VDom : sig ... endmodule CFG = Absint.ProcCfg.Normalmodule Domain : sig ... endval get_var : Domain.t -> IR.Var.t -> Domain.valueval eval_expr : Domain.t -> IR.Exp.t -> Domain.valueval eval_instr : Domain.t -> IR.Sil.instr -> Domain.t
module TransferFunctions : sig ... endmodule Analyzer : sig ... endval get_invariant_at_node : Analyzer.invariant_map -> IR.Procdesc.Node.t -> Domain.tval replace_closure_call : CFG.Node.t -> Domain.t -> IR.Sil.instr -> IR.Sil.instrval replace_closure_param : CFG.Node.t -> Domain.t -> IR.Sil.instr -> IR.Sil.instrreplace_closure_parampropagates closures to function parameters, so that more functions are specialized byCCallSpecializedWithClosures.process. Note that unlikereplace_closure_callrunning at the analysis phase,replace_closure_paramshould run beforeCCallSpecializedWithClosures.processat the capture phase.
val process_common : (IR.Procdesc.Node.t -> Domain.t -> IR.Sil.instr -> IR.Sil.instr) -> IR.Procdesc.t -> unitval process_closure_call : Summary.t -> unitval process_closure_param : IR.Procdesc.t -> unit