Module Flambda2_terms.Code
A piece of code, comprising of the parameters and body of a function, together with a field indicating whether the piece of code is a newer version of one that existed previously (and may still exist), for example after a round of simplification.
val code_metadata : Flambda2_terms.Code.t -> Flambda2_terms.Code_metadata.tval params_and_body :
Flambda2_terms.Code.t ->
Flambda2_terms.Flambda.Function_params_and_body.tinclude Flambda2_terms.Code_metadata.Code_metadata_accessors_result_type
with type 'a t := Flambda2_terms.Code.t
val code_id : Flambda2_terms.Code.t -> Flambda2_identifiers.Code_id.tval newer_version_of :
Flambda2_terms.Code.t ->
Flambda2_identifiers.Code_id.t optionval params_arity :
Flambda2_terms.Code.t ->
[ `Complex ] Flambda2_kinds.Flambda_arity.tval param_modes :
Flambda2_terms.Code.t ->
Flambda2_term_basics.Alloc_mode.For_types.t listval first_complex_local_param : Flambda2_terms.Code.t -> intval result_arity :
Flambda2_terms.Code.t ->
[ `Unarized ] Flambda2_kinds.Flambda_arity.tval result_types :
Flambda2_terms.Code.t ->
Flambda2_terms.Result_types.t Flambda2_lattices.Or_unknown_or_bottom.tval result_mode : Flambda2_terms.Code.t -> Lambda.locality_modeval stub : Flambda2_terms.Code.t -> boolval inline : Flambda2_terms.Code.t -> Flambda2_terms.Inline_attribute.tval zero_alloc_attribute :
Flambda2_terms.Code.t ->
Flambda2_terms.Zero_alloc_attribute.tval poll_attribute : Flambda2_terms.Code.t -> Flambda2_terms.Poll_attribute.tval regalloc_attribute :
Flambda2_terms.Code.t ->
Flambda2_terms.Regalloc_attribute.tval regalloc_param_attribute :
Flambda2_terms.Code.t ->
Flambda2_terms.Regalloc_param_attribute.tval cold : Flambda2_terms.Code.t -> boolval is_a_functor : Flambda2_terms.Code.t -> boolval is_opaque : Flambda2_terms.Code.t -> boolval recursive : Flambda2_terms.Code.t -> Flambda2_terms.Recursive.tval cost_metrics : Flambda2_terms.Code.t -> Flambda2_terms.Cost_metrics.tval inlining_arguments :
Flambda2_terms.Code.t ->
Flambda2_terms.Inlining_arguments.tval dbg : Flambda2_terms.Code.t -> Debuginfo.tval is_tupled : Flambda2_terms.Code.t -> boolval is_my_closure_used : Flambda2_terms.Code.t -> boolval inlining_decision :
Flambda2_terms.Code.t ->
Flambda2_terms.Function_decl_inlining_decision_type.tval absolute_history :
Flambda2_terms.Code.t ->
Flambda2_terms.Inlining_history.Absolute.tval relative_history :
Flambda2_terms.Code.t ->
Flambda2_terms.Inlining_history.Relative.tval loopify : Flambda2_terms.Code.t -> Flambda2_terms.Loopify_attribute.tval function_slot_size : Flambda2_terms.Code.t -> intval create_with_metadata :
params_and_body:Flambda2_terms.Flambda.Function_params_and_body.t ->
free_names_of_params_and_body:Flambda2_nominal.Name_occurrences.t ->
code_metadata:Flambda2_terms.Code_metadata.t ->
Flambda2_terms.Code.tval create :
params_and_body:Flambda2_terms.Flambda.Function_params_and_body.t ->
free_names_of_params_and_body:Flambda2_nominal.Name_occurrences.t ->
Flambda2_terms.Code.t Flambda2_terms.Code_metadata.create_typeval with_code_id :
Flambda2_identifiers.Code_id.t ->
Flambda2_terms.Code.t ->
Flambda2_terms.Code.tval with_params_and_body :
params_and_body:Flambda2_terms.Flambda.Function_params_and_body.t ->
free_names_of_params_and_body:Flambda2_nominal.Name_occurrences.t ->
cost_metrics:Flambda2_terms.Cost_metrics.t ->
Flambda2_terms.Code.t ->
Flambda2_terms.Code.tval with_newer_version_of :
Flambda2_identifiers.Code_id.t option ->
Flambda2_terms.Code.t ->
Flambda2_terms.Code.tval print : Stdlib.Format.formatter -> Flambda2_terms.Code.t -> unitinclude Flambda2_nominal.Contains_names.S with type t := Flambda2_terms.Code.t
val free_names : Flambda2_terms.Code.t -> Flambda2_nominal.Name_occurrences.tCompute the free names of a term. Such computation covers all kinds of bindable names (variables, continuations, ...)
val apply_renaming :
Flambda2_terms.Code.t ->
Flambda2_nominal.Renaming.t ->
Flambda2_terms.Code.tApply a renaming throughout a term.
val ids_for_export : Flambda2_terms.Code.t -> Flambda2_nominal.Ids_for_export.tval map_result_types :
Flambda2_terms.Code.t ->
f:(Flambda2_types.t -> Flambda2_types.t) ->
Flambda2_terms.Code.tval free_names_of_params_and_body :
Flambda2_terms.Code.t ->
Flambda2_nominal.Name_occurrences.t