jon.recoil.org

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.

include Flambda2_terms.Code_metadata.Code_metadata_accessors_result_type with type 'a t := Flambda2_terms.Code.t
val newer_version_of : Flambda2_terms.Code.t -> Flambda2_identifiers.Code_id.t option
val params_arity : Flambda2_terms.Code.t -> [ `Complex ] Flambda2_kinds.Flambda_arity.t
val first_complex_local_param : Flambda2_terms.Code.t -> int
val result_arity : Flambda2_terms.Code.t -> [ `Unarized ] Flambda2_kinds.Flambda_arity.t
val stub : Flambda2_terms.Code.t -> bool
val cold : Flambda2_terms.Code.t -> bool
val is_a_functor : Flambda2_terms.Code.t -> bool
val is_opaque : Flambda2_terms.Code.t -> bool
val is_tupled : Flambda2_terms.Code.t -> bool
val is_my_closure_used : Flambda2_terms.Code.t -> bool
val function_slot_size : Flambda2_terms.Code.t -> int
val 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.t
include Flambda2_nominal.Contains_names.S with type t := Flambda2_terms.Code.t

Compute the free names of a term. Such computation covers all kinds of bindable names (variables, continuations, ...)

Apply a renaming throughout a term.

val free_names_of_params_and_body : Flambda2_terms.Code.t -> Flambda2_nominal.Name_occurrences.t