Module Alloc_mode.For_applications
type t = private | Heap(*Normal allocation on the OCaml heap.
*)| Local of {region : Flambda2_identifiers.Variable.t;ghost_region : Flambda2_identifiers.Variable.t;
}(*Allocation on the local allocation stack in the given region.
*)
Decisions on allocation locations for application expressions.
val heap : tval local :
region:Flambda2_identifiers.Variable.t ->
ghost_region:Flambda2_identifiers.Variable.t ->
tReturns Heap if stack allocation is disabled!
val as_type : t -> For_types.tval from_lambda :
Lambda.locality_mode ->
current_region:Flambda2_identifiers.Variable.t option ->
current_ghost_region:Flambda2_identifiers.Variable.t option ->
tinclude Flambda2_nominal.Contains_names.S with type t := t
include Flambda2_nominal.Contains_ids.S with type t := t
include Flambda2_nominal.Bindable.S with type t := t
include 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.
include Flambda2_nominal.Contains_ids.S with type t := t
val ids_for_export : t -> Flambda2_nominal.Ids_for_export.tGather all table identifiers to export them.
val print : Format.formatter -> t -> unitEquivalence relation on renamed variables.
is_renamed_version_of x y is true if there exists a bindable z such that x and y are renamed versions of z.
Note: this function can return true in other cases (if there are some name collisions for instance), this is (at least currently) only used for a sanity check, so users should not rely too much on its expected semantics.
val renaming : t -> guaranteed_fresh:t -> Flambda2_nominal.Renaming.trenaming stale ~guaranteed_fresh:fresh is to create a renaming that turns all occurrences of the name stale into fresh (in a capture-avoiding manner, but that is inherent in Renaming).