Flambda_utils
val find_declaration :
Closure_id.t ->
Flambda.function_declarations ->
Flambda.function_declaration
val find_declaration_variable :
Closure_id.t ->
Flambda.function_declarations ->
Variable.t
val find_free_variable :
Var_within_closure.t ->
Flambda.set_of_closures ->
Variable.t
val function_arity : Flambda.function_declaration -> int
val variables_bound_by_the_closure :
Closure_id.t ->
Flambda.function_declarations ->
Variable.Set.t
val description_of_toplevel_node : Flambda.t -> string
val make_closure_declaration :
is_classic_mode:bool ->
id:Variable.t ->
body:Flambda.t ->
params:Parameter.t list ->
Flambda.t
val toplevel_substitution :
Variable.t Variable.Map.t ->
Flambda.expr ->
Flambda.expr
val toplevel_substitution_named :
Variable.t Variable.Map.t ->
Flambda.named ->
Flambda.named
val bind :
bindings:(Variable.t * Flambda.named) list ->
body:Flambda.t ->
Flambda.t
val name_expr : name:Internal_variable_names.t -> Flambda.named -> Flambda.t
val name_expr_from_var : var:Variable.t -> Flambda.named -> Flambda.t
val initialize_symbols :
Flambda.program ->
(Symbol.t * Tag.t * Flambda.t list) list
val imported_symbols : Flambda.program -> Symbol.Set.t
val needed_import_symbols : Flambda.program -> Symbol.Set.t
val introduce_needed_import_symbols : Flambda.program -> Flambda.program
val root_symbol : Flambda.program -> Symbol.t
val might_raise_static_exn : Flambda.named -> Static_exception.t -> bool
val make_closure_map : Flambda.program -> Set_of_closures_id.t Closure_id.Map.t
val all_lifted_constants :
Flambda.program ->
(Symbol.t * Flambda.constant_defining_value) list
val all_lifted_constants_as_map :
Flambda.program ->
Flambda.constant_defining_value Symbol.Map.t
val all_lifted_constant_sets_of_closures :
Flambda.program ->
Set_of_closures_id.Set.t
val all_lifted_constant_closures : Flambda.program -> Closure_id.Set.t
val all_sets_of_closures : Flambda.program -> Flambda.set_of_closures list
val all_sets_of_closures_map :
Flambda.program ->
Flambda.set_of_closures Set_of_closures_id.Map.t
val substitute_read_symbol_field_for_variables :
(Symbol.t * int list) Variable.Map.t ->
Flambda.t ->
Flambda.t
module Switch_storer : sig ... end
val fun_vars_referenced_in_decls :
Flambda.function_declarations ->
closure_symbol:(Closure_id.t -> Symbol.t) ->
Variable.Set.t Variable.Map.t
val closures_required_by_entry_point :
entry_point:Closure_id.t ->
closure_symbol:(Closure_id.t -> Symbol.t) ->
Flambda.function_declarations ->
Variable.Set.t
val all_functions_parameters : Flambda.function_declarations -> Variable.Set.t
val all_free_symbols : Flambda.function_declarations -> Symbol.Set.t
val contains_stub : Flambda.function_declarations -> bool
val clean_projections :
which_variables:Flambda.specialised_to Variable.Map.t ->
Flambda.specialised_to Variable.Map.t
val projection_to_named : Projection.t -> Flambda.named
val parameters_specialised_to_the_same_variable :
function_decls:Flambda.function_declarations ->
specialised_args:Flambda.specialised_to Variable.Map.t ->
specialised_to_same_as list Variable.Map.t