Module Flambda2_simplify.Downwards_env
type resolver =
Compilation_unit.t ->
Flambda2_types.Typing_env.Serializable.t optiontype get_imported_names = unit -> Flambda2_identifiers.Name.Set.ttype get_imported_code = unit -> Flambda2_cmx.Exported_code.tval print :
Stdlib.Format.formatter ->
Flambda2_simplify.Downwards_env.t ->
unitPrint a human-readable version of the given environment.
val create :
round:int ->
machine_width:Target_system.Machine_width.t ->
resolver:Flambda2_simplify.Downwards_env.resolver ->
get_imported_names:Flambda2_simplify.Downwards_env.get_imported_names ->
get_imported_code:Flambda2_simplify.Downwards_env.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 ->
Flambda2_simplify.Downwards_env.tCreate a new environment, marked as being at the toplevel of a compilation unit.
val machine_width :
Flambda2_simplify.Downwards_env.t ->
Target_system.Machine_width.tval resolver :
Flambda2_simplify.Downwards_env.t ->
Compilation_unit.t ->
Flambda2_types.Typing_env.Serializable.t optionval propagating_float_consts : Flambda2_simplify.Downwards_env.t -> boolval at_unit_toplevel : Flambda2_simplify.Downwards_env.t -> boolval set_at_unit_toplevel_state :
Flambda2_simplify.Downwards_env.t ->
bool ->
Flambda2_simplify.Downwards_env.tval is_defined_at_toplevel :
Flambda2_simplify.Downwards_env.t ->
Flambda2_identifiers.Variable.t ->
boolval add_symbol_projection :
Flambda2_simplify.Downwards_env.t ->
Flambda2_identifiers.Variable.t ->
Flambda2_term_basics.Symbol_projection.t ->
Flambda2_simplify.Downwards_env.tval find_symbol_projection :
Flambda2_simplify.Downwards_env.t ->
Flambda2_identifiers.Variable.t ->
Flambda2_term_basics.Symbol_projection.t optionval unit_toplevel_return_continuation :
Flambda2_simplify.Downwards_env.t ->
Flambda2_identifiers.Continuation.tval unit_toplevel_exn_continuation :
Flambda2_simplify.Downwards_env.t ->
Flambda2_identifiers.Continuation.tval increment_continuation_scope :
Flambda2_simplify.Downwards_env.t ->
Flambda2_simplify.Downwards_env.tval bump_current_level_scope :
Flambda2_simplify.Downwards_env.t ->
Flambda2_simplify.Downwards_env.tval get_continuation_scope :
Flambda2_simplify.Downwards_env.t ->
Flambda2_term_basics.Scope.tval typing_env :
Flambda2_simplify.Downwards_env.t ->
Flambda2_types.Typing_env.tval define_continuations :
Flambda2_simplify.Downwards_env.t ->
Flambda2_identifiers.Continuation.t list ->
Flambda2_simplify.Downwards_env.tval define_variable :
Flambda2_simplify.Downwards_env.t ->
Flambda2_bound_identifiers.Bound_var.t ->
Flambda2_kinds.Flambda_kind.t ->
Flambda2_simplify.Downwards_env.tval define_extra_variable :
Flambda2_simplify.Downwards_env.t ->
Flambda2_bound_identifiers.Bound_var.t ->
Flambda2_kinds.Flambda_kind.t ->
Flambda2_simplify.Downwards_env.tval add_variable :
Flambda2_simplify.Downwards_env.t ->
Flambda2_bound_identifiers.Bound_var.t ->
Flambda2_types.t ->
Flambda2_simplify.Downwards_env.tval add_equation_on_variable :
Flambda2_simplify.Downwards_env.t ->
Flambda2_identifiers.Variable.t ->
Flambda2_types.t ->
Flambda2_simplify.Downwards_env.tval mem_variable :
Flambda2_simplify.Downwards_env.t ->
Flambda2_identifiers.Variable.t ->
boolval add_symbol :
Flambda2_simplify.Downwards_env.t ->
Flambda2_identifiers.Symbol.t ->
Flambda2_types.t ->
Flambda2_simplify.Downwards_env.tval define_symbol :
Flambda2_simplify.Downwards_env.t ->
Flambda2_identifiers.Symbol.t ->
Flambda2_kinds.Flambda_kind.t ->
Flambda2_simplify.Downwards_env.tval mem_symbol :
Flambda2_simplify.Downwards_env.t ->
Flambda2_identifiers.Symbol.t ->
boolval find_symbol :
Flambda2_simplify.Downwards_env.t ->
Flambda2_identifiers.Symbol.t ->
Flambda2_types.tval add_equation_on_symbol :
Flambda2_simplify.Downwards_env.t ->
Flambda2_identifiers.Symbol.t ->
Flambda2_types.t ->
Flambda2_simplify.Downwards_env.tval define_name_if_undefined :
Flambda2_simplify.Downwards_env.t ->
Flambda2_bound_identifiers.Bound_name.t ->
Flambda2_kinds.Flambda_kind.t ->
Flambda2_simplify.Downwards_env.tval add_equation_on_name :
Flambda2_simplify.Downwards_env.t ->
Flambda2_identifiers.Name.t ->
Flambda2_types.t ->
Flambda2_simplify.Downwards_env.tval define_parameters :
extra:bool ->
Flambda2_simplify.Downwards_env.t ->
params:Flambda2_bound_identifiers.Bound_parameters.t ->
Flambda2_simplify.Downwards_env.tval add_parameters :
extra:bool ->
?name_mode:Flambda2_nominal.Name_mode.t ->
Flambda2_simplify.Downwards_env.t ->
Flambda2_bound_identifiers.Bound_parameters.t ->
param_types:Flambda2_types.t list ->
Flambda2_simplify.Downwards_env.tval add_parameters_with_unknown_types :
extra:bool ->
?alloc_modes:Flambda2_term_basics.Alloc_mode.For_types.t list ->
?name_mode:Flambda2_nominal.Name_mode.t ->
Flambda2_simplify.Downwards_env.t ->
Flambda2_bound_identifiers.Bound_parameters.t ->
Flambda2_simplify.Downwards_env.tval mark_parameters_as_toplevel :
Flambda2_simplify.Downwards_env.t ->
Flambda2_bound_identifiers.Bound_parameters.t ->
Flambda2_simplify.Downwards_env.tval extend_typing_environment :
Flambda2_simplify.Downwards_env.t ->
Flambda2_types.Typing_env_extension.With_extra_variables.t ->
Flambda2_simplify.Downwards_env.tval with_typing_env :
Flambda2_simplify.Downwards_env.t ->
Flambda2_types.Typing_env.t ->
Flambda2_simplify.Downwards_env.tval map_typing_env :
Flambda2_simplify.Downwards_env.t ->
f:(Flambda2_types.Typing_env.t -> Flambda2_types.Typing_env.t) ->
Flambda2_simplify.Downwards_env.tval check_simple_is_bound :
Flambda2_simplify.Downwards_env.t ->
Flambda2_term_basics.Simple.t ->
unitval define_code :
Flambda2_simplify.Downwards_env.t ->
code_id:Flambda2_identifiers.Code_id.t ->
code:Flambda2_terms.Code.t ->
Flambda2_simplify.Downwards_env.tval mem_code :
Flambda2_simplify.Downwards_env.t ->
Flambda2_identifiers.Code_id.t ->
boolval find_code_exn :
Flambda2_simplify.Downwards_env.t ->
Flambda2_identifiers.Code_id.t ->
Flambda2_terms.Code_or_metadata.tThis function raises if the code ID is unbound.
val set_inlined_debuginfo :
Flambda2_simplify.Downwards_env.t ->
from:Flambda2_simplify.Downwards_env.t ->
Flambda2_simplify.Downwards_env.tval merge_inlined_debuginfo :
Flambda2_simplify.Downwards_env.t ->
from_apply_expr:Flambda2_term_basics.Inlined_debuginfo.t ->
Flambda2_simplify.Downwards_env.tval add_inlined_debuginfo :
Flambda2_simplify.Downwards_env.t ->
Debuginfo.t ->
Debuginfo.tval round : Flambda2_simplify.Downwards_env.t -> intval set_inlining_state :
Flambda2_simplify.Downwards_env.t ->
Flambda2_terms.Inlining_state.t ->
Flambda2_simplify.Downwards_env.tval get_inlining_state :
Flambda2_simplify.Downwards_env.t ->
Flambda2_terms.Inlining_state.tval add_cse :
Flambda2_simplify.Downwards_env.t ->
Flambda2_terms.Flambda_primitive.Eligible_for_cse.t ->
bound_to:Flambda2_term_basics.Simple.t ->
name_mode:Flambda2_nominal.Name_mode.t ->
Flambda2_simplify.Downwards_env.tval find_cse :
Flambda2_simplify.Downwards_env.t ->
Flambda2_terms.Flambda_primitive.Eligible_for_cse.t ->
Flambda2_term_basics.Simple.t optionval find_comparison_result :
Flambda2_simplify.Downwards_env.t ->
Flambda2_identifiers.Variable.t ->
Flambda2_simplify.Comparison_result.t optionval comparison_results :
Flambda2_simplify.Downwards_env.t ->
Flambda2_simplify.Comparison_result.t Flambda2_identifiers.Variable.Map.tmodule Disable_inlining_reason : sig ... endval set_do_not_rebuild_terms_and_disable_inlining :
Flambda2_simplify.Downwards_env.t ->
Flambda2_simplify.Downwards_env.Disable_inlining_reason.t ->
Flambda2_simplify.Downwards_env.tval set_disable_inlining :
Flambda2_simplify.Downwards_env.t ->
Flambda2_simplify.Downwards_env.Disable_inlining_reason.t ->
Flambda2_simplify.Downwards_env.tmodule Disable_inlining : sig ... endval disable_inlining :
Flambda2_simplify.Downwards_env.t ->
Flambda2_simplify.Downwards_env.Disable_inlining.tval enter_set_of_closures :
Flambda2_simplify.Downwards_env.t ->
in_stub:bool ->
Flambda2_simplify.Downwards_env.tval set_rebuild_terms :
Flambda2_simplify.Downwards_env.t ->
Flambda2_simplify.Downwards_env.tval are_rebuilding_terms :
Flambda2_simplify.Downwards_env.t ->
Flambda2_simplify_shared.Are_rebuilding_terms.tval enter_closure :
Flambda2_identifiers.Code_id.t ->
return_continuation:Flambda2_identifiers.Continuation.t ->
exn_continuation:Flambda2_identifiers.Continuation.t ->
my_closure:Flambda2_identifiers.Variable.t ->
Flambda2_simplify.Downwards_env.t ->
Flambda2_simplify.Downwards_env.tval closure_info :
Flambda2_simplify.Downwards_env.t ->
Flambda2_simplify.Closure_info.tval inlining_arguments :
Flambda2_simplify.Downwards_env.t ->
Flambda2_terms.Inlining_arguments.tval set_inlining_arguments :
Flambda2_terms.Inlining_arguments.t ->
Flambda2_simplify.Downwards_env.t ->
Flambda2_simplify.Downwards_env.tval enter_inlined_apply :
called_code:Flambda2_terms.Code.t ->
apply:Flambda2_terms.Flambda.Import.Apply.t ->
was_inline_always:bool ->
Flambda2_simplify.Downwards_env.t ->
Flambda2_simplify.Downwards_env.tval generate_phantom_lets : Flambda2_simplify.Downwards_env.t -> boolval inlining_history_tracker :
Flambda2_simplify.Downwards_env.t ->
Flambda2_terms.Inlining_history.Tracker.tval set_inlining_history_tracker :
Flambda2_terms.Inlining_history.Tracker.t ->
Flambda2_simplify.Downwards_env.t ->
Flambda2_simplify.Downwards_env.tval relative_history :
Flambda2_simplify.Downwards_env.t ->
Flambda2_terms.Inlining_history.Relative.tval loopify_state :
Flambda2_simplify.Downwards_env.t ->
Flambda2_simplify.Loopify_state.tval set_loopify_state :
Flambda2_simplify.Loopify_state.t ->
Flambda2_simplify.Downwards_env.t ->
Flambda2_simplify.Downwards_env.tval with_code_age_relation :
Flambda2_types.Code_age_relation.t ->
Flambda2_simplify.Downwards_env.t ->
Flambda2_simplify.Downwards_env.tval defined_variables_by_scope :
Flambda2_simplify.Downwards_env.t ->
Flambda2_simplify.Lifted_cont_params.t listval enter_continuation_handler :
Flambda2_simplify.Lifted_cont_params.t ->
Flambda2_simplify.Downwards_env.t ->
Flambda2_simplify.Downwards_env.tval variables_defined_in_current_continuation :
Flambda2_simplify.Downwards_env.t ->
Flambda2_simplify.Lifted_cont_params.tval cost_of_lifting_continuations_out_of_current_one :
Flambda2_simplify.Downwards_env.t ->
intval add_lifting_cost :
int ->
Flambda2_simplify.Downwards_env.t ->
Flambda2_simplify.Downwards_env.tval must_inline : Flambda2_simplify.Downwards_env.t -> boolval replay_history :
Flambda2_simplify.Downwards_env.t ->
Flambda2_simplify.Replay_history.tval with_replay_history :
(Flambda2_simplify.Replay_history.t * bool) option ->
Flambda2_simplify.Downwards_env.t ->
Flambda2_simplify.Downwards_env.tval with_join_analysis :
Flambda2_identifiers.Apply_cont_rewrite_id.t Flambda2_types.Join_analysis.t
option ->
Flambda2_simplify.Downwards_env.t ->
Flambda2_simplify.Downwards_env.tval join_analysis :
Flambda2_simplify.Downwards_env.t ->
Flambda2_identifiers.Apply_cont_rewrite_id.t Flambda2_types.Join_analysis.t
optionval map_specialization_cost :
f:
(Flambda2_simplify.Specialization_cost.t ->
Flambda2_simplify.Specialization_cost.t) ->
Flambda2_simplify.Downwards_env.t ->
Flambda2_simplify.Downwards_env.tval specialization_cost :
Flambda2_simplify.Downwards_env.t ->
Flambda2_simplify.Specialization_cost.tval denv_for_lifted_continuation :
denv_for_join:Flambda2_simplify.Downwards_env.t ->
denv:Flambda2_simplify.Downwards_env.t ->
Flambda2_simplify.Downwards_env.t