Module Flambda2_simplify.Non_constructed_code
Code without any function bodies, but with all the associated metadata, e.g. free names.
type t = unit Flambda2_terms.Code0.tval code_metadata : t -> Flambda2_terms.Code_metadata.tinclude Flambda2_terms.Code_metadata.Code_metadata_accessors_result_type
with type 'a t := t
val code_id : t -> Flambda2_identifiers.Code_id.tval newer_version_of : t -> Flambda2_identifiers.Code_id.t optionval params_arity : t -> [ `Complex ] Flambda2_kinds.Flambda_arity.tval param_modes : t -> Flambda2_bound_identifiers.Alloc_mode.For_types.t listval first_complex_local_param : t -> intval result_arity : t -> [ `Unarized ] Flambda2_kinds.Flambda_arity.tval result_types :
t ->
Flambda2_terms.Result_types.t Flambda2_lattices.Or_unknown_or_bottom.tval result_mode : t -> Lambda.locality_modeval stub : t -> boolval inline : t -> Flambda2_terms.Inline_attribute.tval zero_alloc_attribute : t -> Flambda2_terms.Zero_alloc_attribute.tval poll_attribute : t -> Flambda2_terms.Poll_attribute.tval regalloc_attribute : t -> Flambda2_terms.Regalloc_attribute.tval regalloc_param_attribute : t -> Flambda2_terms.Regalloc_param_attribute.tval cold : t -> boolval is_a_functor : t -> boolval is_opaque : t -> boolval recursive : t -> Flambda2_terms.Recursive.tval cost_metrics : t -> Flambda2_terms.Cost_metrics.tval inlining_arguments : t -> Flambda2_terms.Inlining_arguments.tval dbg : t -> Debuginfo.tval is_tupled : t -> boolval is_my_closure_used : t -> boolval inlining_decision :
t ->
Flambda2_terms.Function_decl_inlining_decision_type.tval absolute_history : t -> Flambda2_terms.Inlining_history.Absolute.tval relative_history : t -> Flambda2_terms.Inlining_history.Relative.tval loopify : t -> Flambda2_terms.Loopify_attribute.tval function_slot_size : t -> intval create_with_metadata :
free_names_of_params_and_body:Flambda2_nominal.Name_occurrences.t ->
code_metadata:Flambda2_terms.Code_metadata.t ->
tval create :
free_names_of_params_and_body:Flambda2_nominal.Name_occurrences.t ->
t Flambda2_terms.Code_metadata.create_typeinclude Flambda2_nominal.Contains_names.S with type t := t
val free_names : 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 : t -> Flambda2_nominal.Renaming.t -> tApply a renaming throughout a term.
val print : Format.formatter -> t -> unit