package ocaml-base-compiler

  1. Overview
  2. Docs
val apply_on_subexpressions : (Flambda.t -> unit) -> (Flambda.named -> unit) -> Flambda.t -> unit

Apply the given functions to the immediate subexpressions of the given Flambda expression. For avoidance of doubt, if a subexpression is Expr, it is passed to the function taking Flambda.named, rather than being followed and passed to the function taking Flambda.t.

val map_subexpressions : (Flambda.t -> Flambda.t) -> (Variable.t -> Flambda.named -> Flambda.named) -> Flambda.t -> Flambda.t
val iter : (Flambda.t -> unit) -> (Flambda.named -> unit) -> Flambda.t -> unit
val iter_expr : (Flambda.t -> unit) -> Flambda.t -> unit
val iter_on_named : (Flambda.t -> unit) -> (Flambda.named -> unit) -> Flambda.named -> unit
val iter_named : (Flambda.named -> unit) -> Flambda.t -> unit
val iter_named_on_named : (Flambda.named -> unit) -> Flambda.named -> unit
val iter_toplevel : (Flambda.t -> unit) -> (Flambda.named -> unit) -> Flambda.t -> unit

iter_toplevel f t applies f on every toplevel subexpression of t. In particular, it never applies f to the body of a function (which will always be contained within an Set_of_closures expression).

val iter_named_toplevel : (Flambda.t -> unit) -> (Flambda.named -> unit) -> Flambda.named -> unit
val iter_on_sets_of_closures : (Flambda.set_of_closures -> unit) -> Flambda.t -> unit
val iter_on_set_of_closures_of_program : Flambda.program -> f:(constant:bool -> Flambda.set_of_closures -> unit) -> unit
val iter_all_immutable_let_and_let_rec_bindings : Flambda.t -> f:(Variable.t -> Flambda.named -> unit) -> unit
val iter_all_toplevel_immutable_let_and_let_rec_bindings : Flambda.t -> f:(Variable.t -> Flambda.named -> unit) -> unit
val iter_exprs_at_toplevel_of_program : Flambda.program -> f:(Flambda.t -> unit) -> unit
val iter_named_of_program : Flambda.program -> f:(Flambda.named -> unit) -> unit
val iter_constant_defining_values_on_program : Flambda.program -> f:(Flambda.constant_defining_value -> unit) -> unit
val iter_apply_on_program : Flambda.program -> f:(Flambda.apply -> unit) -> unit
val map_expr : (Flambda.t -> Flambda.t) -> Flambda.t -> Flambda.t
val map_named : (Flambda.named -> Flambda.named) -> Flambda.t -> Flambda.t
val map_toplevel : (Flambda.t -> Flambda.t) -> (Flambda.named -> Flambda.named) -> Flambda.t -> Flambda.t
val map_toplevel_expr : (Flambda.t -> Flambda.t) -> Flambda.t -> Flambda.t
val map_toplevel_named : (Flambda.named -> Flambda.named) -> Flambda.t -> Flambda.t
val map_symbols : Flambda.t -> f:(Symbol.t -> Symbol.t) -> Flambda.t
val map_symbols_on_set_of_closures : Flambda.set_of_closures -> f:(Symbol.t -> Symbol.t) -> Flambda.set_of_closures
val map_toplevel_sets_of_closures : Flambda.t -> f:(Flambda.set_of_closures -> Flambda.set_of_closures) -> Flambda.t
val map_apply : Flambda.t -> f:(Flambda.apply -> Flambda.apply) -> Flambda.t
val map_sets_of_closures : Flambda.t -> f:(Flambda.set_of_closures -> Flambda.set_of_closures) -> Flambda.t
val map_sets_of_closures_of_program : Flambda.program -> f:(Flambda.set_of_closures -> Flambda.set_of_closures) -> Flambda.program
val map_project_var_to_expr_opt : Flambda.t -> f:(Flambda.project_var -> Flambda.t option) -> Flambda.t
val map_project_var_to_named_opt : Flambda.t -> f:(Flambda.project_var -> Flambda.named option) -> Flambda.t
val map_exprs_at_toplevel_of_program : Flambda.program -> f:(Flambda.t -> Flambda.t) -> Flambda.program
val map_named_of_program : Flambda.program -> f:(Variable.t -> Flambda.named -> Flambda.named) -> Flambda.program
val map_all_immutable_let_and_let_rec_bindings : Flambda.t -> f:(Variable.t -> Flambda.named -> Flambda.named) -> Flambda.t
val fold_function_decls_ignoring_stubs : Flambda.set_of_closures -> init:'a -> f: (fun_var:Variable.t -> function_decl:Flambda.function_declaration -> 'a -> 'a) -> 'a