Module Flambda2_simplify.Simplify_set_of_closures
Simplification of recursive groups of sets of closures. This process makes new, simplified versions of Code bindings based on the contextual information available from the corresponding set of closures definition. (Code bindings are not simplified earlier, except in the special case of stub functions, because much more information is available at the set of closures definitions. Stub functions are simplified once since it is unlikely more information will be gained at the set of closures definitions; this also avoids potential performance problems in pathological cases.
val simplify_non_lifted_set_of_closures :
Flambda2_simplify.Downwards_acc.t ->
Flambda2_bound_identifiers.Bound_pattern.t ->
Flambda2_simplify.Simplify_import.Set_of_closures.t ->
simplify_function_body:
Flambda2_simplify.Simplify_common.simplify_function_body ->
Flambda2_simplify.Simplify_named_result.tSimplify a single, non-lifted set of closures, as may occur on the right-hand side of a Let binding.
val simplify_lifted_sets_of_closures :
Flambda2_simplify.Downwards_acc.t ->
all_sets_of_closures_and_symbols:
(Flambda2_identifiers.Symbol.t Flambda2_identifiers.Function_slot.Lmap.t
* Flambda2_simplify.Simplify_import.Set_of_closures.t)
list ->
closure_bound_names_all_sets:
Flambda2_bound_identifiers.Bound_name.t
Flambda2_identifiers.Function_slot.Map.t
list ->
simplify_function_body:
Flambda2_simplify.Simplify_common.simplify_function_body ->
Flambda2_bound_identifiers.Bound_static.t
* Flambda2_simplify.Rebuilt_static_const.Group.t
* Flambda2_simplify.Downwards_acc.tSimplify a group of possibly-recursive sets of closures, as may occur on the right-hand side of a Let_symbol binding.
val simplify_stub_function :
Flambda2_simplify.Downwards_acc.t ->
Flambda2_simplify.Simplify_import.Code.t ->
all_code:
Flambda2_simplify.Simplify_import.Code.t Flambda2_identifiers.Code_id.Map.t ->
simplify_function_body:
Flambda2_simplify.Simplify_common.simplify_function_body ->
Flambda2_simplify.Rebuilt_static_const.t * Flambda2_simplify.Downwards_acc.t