Module Closure_conversion_aux.Acc
Used to pipe some data through closure conversion
type closure_info = private {code_id : Flambda2_identifiers.Code_id.t;return_continuation : Flambda2_identifiers.Continuation.t;exn_continuation : Flambda2_terms.Exn_continuation.t;my_closure : Flambda2_identifiers.Variable.t;is_purely_tailrec : bool;slot_offsets_at_definition : Flambda2_simplify_shared.Slot_offsets.t;
}val create :
cmx_loader:Flambda2_cmx.Flambda_cmx.loader ->
machine_width:Target_system.Machine_width.t ->
Flambda2_from_lambda.Closure_conversion_aux.Acc.tval manufacture_symbol_short_name :
Flambda2_from_lambda.Closure_conversion_aux.Acc.t ->
Flambda2_from_lambda.Closure_conversion_aux.Acc.t * Linkage_name.tval declared_symbols :
Flambda2_from_lambda.Closure_conversion_aux.Acc.t ->
(Flambda2_identifiers.Symbol.t * Flambda2_terms.Static_const.t) listval lifted_sets_of_closures :
Flambda2_from_lambda.Closure_conversion_aux.Acc.t ->
(Flambda2_identifiers.Symbol.t Flambda2_identifiers.Function_slot.Lmap.t
* Flambda2_terms.Flambda.Set_of_closures.t)
listval free_names :
Flambda2_from_lambda.Closure_conversion_aux.Acc.t ->
Flambda2_nominal.Name_occurrences.tval machine_width :
Flambda2_from_lambda.Closure_conversion_aux.Acc.t ->
Target_system.Machine_width.tval seen_a_function : Flambda2_from_lambda.Closure_conversion_aux.Acc.t -> boolval with_seen_a_function :
Flambda2_from_lambda.Closure_conversion_aux.Acc.t ->
bool ->
Flambda2_from_lambda.Closure_conversion_aux.Acc.tval add_declared_symbol :
symbol:Flambda2_identifiers.Symbol.t ->
constant:Flambda2_terms.Static_const.t ->
Flambda2_from_lambda.Closure_conversion_aux.Acc.t ->
Flambda2_from_lambda.Closure_conversion_aux.Acc.tval add_lifted_set_of_closures :
symbols:
Flambda2_identifiers.Symbol.t Flambda2_identifiers.Function_slot.Lmap.t ->
set_of_closures:Flambda2_terms.Flambda.Set_of_closures.t ->
Flambda2_from_lambda.Closure_conversion_aux.Acc.t ->
Flambda2_from_lambda.Closure_conversion_aux.Acc.tval add_code :
code_id:Flambda2_identifiers.Code_id.t ->
code:Flambda2_terms.Code.t ->
?slot_offsets:Flambda2_simplify_shared.Slot_offsets.t ->
Flambda2_from_lambda.Closure_conversion_aux.Acc.t ->
Flambda2_from_lambda.Closure_conversion_aux.Acc.tval remove_var_from_free_names :
Flambda2_identifiers.Variable.t ->
Flambda2_from_lambda.Closure_conversion_aux.Acc.t ->
Flambda2_from_lambda.Closure_conversion_aux.Acc.tval remove_var_opt_from_free_names :
Flambda2_identifiers.Variable.t option ->
Flambda2_from_lambda.Closure_conversion_aux.Acc.t ->
Flambda2_from_lambda.Closure_conversion_aux.Acc.tval remove_continuation_from_free_names :
Flambda2_identifiers.Continuation.t ->
Flambda2_from_lambda.Closure_conversion_aux.Acc.t ->
Flambda2_from_lambda.Closure_conversion_aux.Acc.tval mark_continuation_as_untrackable :
Flambda2_identifiers.Continuation.t ->
Flambda2_from_lambda.Closure_conversion_aux.Acc.t ->
Flambda2_from_lambda.Closure_conversion_aux.Acc.tval continuation_known_arguments :
cont:Flambda2_identifiers.Continuation.t ->
Flambda2_from_lambda.Closure_conversion_aux.Acc.t ->
Flambda2_from_lambda.Closure_conversion_aux.Env.value_approximation list
optionval eval_branch_free_names :
Flambda2_from_lambda.Closure_conversion_aux.Acc.t ->
f:
(Flambda2_from_lambda.Closure_conversion_aux.Acc.t ->
Flambda2_from_lambda.Closure_conversion_aux.Acc.t * 'a) ->
Flambda2_nominal.Name_occurrences.t
* Flambda2_from_lambda.Closure_conversion_aux.Acc.t
* 'aval cost_metrics :
Flambda2_from_lambda.Closure_conversion_aux.Acc.t ->
Flambda2_terms.Cost_metrics.tval increment_metrics :
Flambda2_terms.Cost_metrics.t ->
Flambda2_from_lambda.Closure_conversion_aux.Acc.t ->
Flambda2_from_lambda.Closure_conversion_aux.Acc.tval with_cost_metrics :
Flambda2_terms.Cost_metrics.t ->
Flambda2_from_lambda.Closure_conversion_aux.Acc.t ->
Flambda2_from_lambda.Closure_conversion_aux.Acc.tval measure_cost_metrics :
Flambda2_from_lambda.Closure_conversion_aux.Acc.t ->
f:
(Flambda2_from_lambda.Closure_conversion_aux.Acc.t ->
Flambda2_from_lambda.Closure_conversion_aux.Acc.t * 'a) ->
Flambda2_terms.Cost_metrics.t
* Flambda2_nominal.Name_occurrences.t
* Flambda2_from_lambda.Closure_conversion_aux.Acc.t
* 'aval slot_offsets :
Flambda2_from_lambda.Closure_conversion_aux.Acc.t ->
Flambda2_simplify_shared.Slot_offsets.tval add_offsets_from_code :
Flambda2_from_lambda.Closure_conversion_aux.Acc.t ->
Flambda2_identifiers.Code_id.t ->
Flambda2_from_lambda.Closure_conversion_aux.Acc.tval add_set_of_closures_offsets :
is_phantom:bool ->
Flambda2_from_lambda.Closure_conversion_aux.Acc.t ->
Flambda2_terms.Set_of_closures.t ->
Flambda2_from_lambda.Closure_conversion_aux.Acc.tval top_closure_info :
Flambda2_from_lambda.Closure_conversion_aux.Acc.t ->
Flambda2_from_lambda.Closure_conversion_aux.Acc.closure_info optionval push_closure_info :
Flambda2_from_lambda.Closure_conversion_aux.Acc.t ->
return_continuation:Flambda2_identifiers.Continuation.t ->
exn_continuation:Flambda2_terms.Exn_continuation.t ->
my_closure:Flambda2_identifiers.Variable.t ->
is_purely_tailrec:bool ->
code_id:Flambda2_identifiers.Code_id.t ->
Flambda2_from_lambda.Closure_conversion_aux.Acc.tval find_symbol_approximation :
Flambda2_from_lambda.Closure_conversion_aux.Acc.t ->
Flambda2_identifiers.Symbol.t ->
Flambda2_from_lambda.Closure_conversion_aux.Env.value_approximation