jon.recoil.org

Module Flambda2_from_lambda.Closure_conversion

Introduce closures into CPS code, producing Flambda.

val close_let_rec : Acc.t -> Env.t -> function_declarations:Function_decl.t list -> body:(Acc.t -> Env.t -> Expr_with_acc.t) -> current_region:Ident.t option -> Expr_with_acc.t
val close_apply : Acc.t -> Env.t -> IR.apply -> Expr_with_acc.t
val close_apply_cont : Acc.t -> Env.t -> dbg:Debuginfo.t -> Flambda2_identifiers.Continuation.t -> IR.trap_action option -> IR.simple list -> Expr_with_acc.t
val close_switch : Acc.t -> Env.t -> condition_dbg:Debuginfo.t -> Ident.t -> IR.switch -> Expr_with_acc.t
val close_raise : Acc.t -> Env.t -> raise_kind:Lambda.raise_kind -> arg:IR.simple -> dbg:Debuginfo.t -> IR.exn_continuation -> Expr_with_acc.t
val close_program : mode:'mode Flambda2_ui.Flambda_features.mode -> machine_width:Target_system.Machine_width.t -> big_endian:bool -> cmx_loader:Flambda2_cmx.Flambda_cmx.loader -> compilation_unit:Compilation_unit.t -> module_repr:Lambda.module_representation -> program:(Acc.t -> Env.t -> Expr_with_acc.t) -> prog_return_cont:Flambda2_identifiers.Continuation.t -> exn_continuation:Flambda2_identifiers.Continuation.t -> toplevel_my_region:Ident.t -> toplevel_my_ghost_region:Ident.t -> 'mode Flambda2_from_lambda.Closure_conversion.close_program_result