jon.recoil.org

Module Flambda2_simplify.Downwards_env

type get_imported_code = unit -> Flambda2_cmx.Exported_code.t
type t
val print : Format.formatter -> t -> unit

Print a human-readable version of the given environment.

val create : round:int -> machine_width:Target_system.Machine_width.t -> resolver:resolver -> get_imported_code:get_imported_code -> propagating_float_consts:bool -> unit_toplevel_exn_continuation:Flambda2_identifiers.Continuation.t -> unit_toplevel_return_continuation:Flambda2_identifiers.Continuation.t -> toplevel_my_region:Flambda2_identifiers.Variable.t -> toplevel_my_ghost_region:Flambda2_identifiers.Variable.t -> t

Create a new environment, marked as being at the toplevel of a compilation unit.

val machine_width : t -> Target_system.Machine_width.t
val propagating_float_consts : t -> bool
val at_unit_toplevel : t -> bool
val set_at_unit_toplevel_state : t -> bool -> t
val is_defined_at_toplevel : t -> Flambda2_identifiers.Variable.t -> bool
val unit_toplevel_return_continuation : t -> Flambda2_identifiers.Continuation.t
val unit_toplevel_exn_continuation : t -> Flambda2_identifiers.Continuation.t
val increment_continuation_scope : t -> t
val bump_current_level_scope : t -> t
val get_continuation_scope : t -> Flambda2_term_basics.Scope.t
val typing_env : t -> Flambda2_types.Typing_env.t
val define_continuations : can_be_lifted:bool -> t -> Flambda2_identifiers.Continuation.t list -> t
val add_equation_on_variable : t -> Flambda2_identifiers.Variable.t -> Flambda2_types.t -> t
val mem_variable : t -> Flambda2_identifiers.Variable.t -> bool
val mem_symbol : t -> Flambda2_identifiers.Symbol.t -> bool
val add_equation_on_symbol : t -> Flambda2_identifiers.Symbol.t -> Flambda2_types.t -> t
val add_equation_on_name : t -> Flambda2_identifiers.Name.t -> Flambda2_types.t -> t
val define_parameters : extra:bool -> t -> params:Flambda2_bound_identifiers.Bound_parameters.t -> t
val add_parameters : extra:bool -> ?name_mode:Flambda2_nominal.Name_mode.t -> t -> Flambda2_bound_identifiers.Bound_parameters.t -> param_types:Flambda2_types.t list -> t
val add_parameters_with_unknown_types : extra:bool -> ?alloc_modes:Flambda2_bound_identifiers.Alloc_mode.For_types.t list -> ?name_mode:Flambda2_nominal.Name_mode.t -> t -> Flambda2_bound_identifiers.Bound_parameters.t -> t
val mark_parameters_as_toplevel : t -> Flambda2_bound_identifiers.Bound_parameters.t -> t
val extend_typing_environment : t -> Flambda2_types.Typing_env_extension.With_extra_variables.t -> t
val with_typing_env : t -> Flambda2_types.Typing_env.t -> t
val check_simple_is_bound : t -> Flambda2_term_basics.Simple.t -> unit
val define_code : t -> code_id:Flambda2_identifiers.Code_id.t -> code:Flambda2_terms.Code.t -> t
val mem_code : t -> Flambda2_identifiers.Code_id.t -> bool

This function raises if the code ID is unbound.

val set_inlined_debuginfo : t -> from:t -> t
val merge_inlined_debuginfo : t -> from_apply_expr:Flambda2_term_basics.Inlined_debuginfo.t -> t
val add_inlined_debuginfo : t -> Debuginfo.t -> Debuginfo.t
val round : t -> int
val set_inlining_state : t -> Flambda2_terms.Inlining_state.t -> t
val get_inlining_state : t -> Flambda2_terms.Inlining_state.t
val find_comparison_result : t -> Flambda2_identifiers.Variable.t -> Comparison_result.t option
module Disable_inlining_reason : sig ... end
val set_do_not_rebuild_terms_and_disable_inlining : t -> Disable_inlining_reason.t -> t
val set_disable_inlining : t -> Disable_inlining_reason.t -> t
module Disable_inlining : sig ... end
val disable_inlining : t -> Disable_inlining.t
val enter_set_of_closures : t -> in_stub:bool -> t
val set_rebuild_terms : t -> t
val closure_info : t -> Closure_info.t
val inlining_arguments : t -> Flambda2_terms.Inlining_arguments.t
val set_inlining_arguments : Flambda2_terms.Inlining_arguments.t -> t -> t
val enter_inlined_apply : called_code:Flambda2_terms.Code.t -> apply:Flambda2_terms.Flambda.Import.Apply.t -> was_inline_always:bool -> t -> t
val generate_phantom_lets : t -> bool
val inlining_history_tracker : t -> Flambda2_terms.Inlining_history.Tracker.t
val set_inlining_history_tracker : Flambda2_terms.Inlining_history.Tracker.t -> t -> t
val loopify_state : t -> Loopify_state.t
val set_loopify_state : Loopify_state.t -> t -> t
val with_code_age_relation : Flambda2_types.Code_age_relation.t -> t -> t
val defined_variables_by_scope : t -> Lifted_cont_params.t list
val enter_continuation_handler : Lifted_cont_params.t -> t -> t
val variables_defined_in_current_continuation : t -> Lifted_cont_params.t
val cost_of_lifting_continuations_out_of_current_one : t -> int
val add_lifting_cost : int -> t -> t
val must_inline : t -> bool
val replay_history : t -> Replay_history.t
val with_replay_history : (Replay_history.t * bool) option -> t -> t
val map_specialization_cost : f:(Specialization_cost.t -> Specialization_cost.t) -> t -> t
val specialization_cost : t -> Specialization_cost.t
val denv_for_lifted_continuation : denv_for_join:t -> denv:t -> t
val has_seen_a_non_liftable_continuation : t -> bool
val set_has_seen_a_non_liftable_continuation : t -> t