Inline_and_simplify_aux.Result
Result structures approximately follow the evaluation order of the program. They are returned by the simplification algorithm acting on an Flambda subexpression.
val create : unit -> t
val approx : t -> Simple_value_approx.t
The approximation of the subexpression that has just been simplified.
val set_approx : t -> Simple_value_approx.t -> t
Set the approximation of the subexpression that has just been simplified. Typically used just before returning from a case of the simplification algorithm.
val meet_approx : t -> Env.t -> Simple_value_approx.t -> t
Set the approximation of the subexpression to the meet of the current return approximation and the provided one. Typically used just before returning from a branch case of the simplification algorithm.
val used_static_exceptions : t -> Static_exception.Set.t
All static exceptions for which use_staticfail
has been called on the given result structure.
val use_static_exception : t -> Static_exception.t -> t
Mark that the given static exception has been used.
val exit_scope_catch : t -> Static_exception.t -> t
Mark that we are moving up out of the scope of a static-catch block that catches the given static exception identifier. This has the effect of removing the identifier from the used_staticfail
set.
val benefit : t -> Inlining_cost.Benefit.t
The benefit to be gained by inlining the subexpression whose simplification yielded the given result structure.
val map_benefit : t -> (Inlining_cost.Benefit.t -> Inlining_cost.Benefit.t) -> t
Apply a transformation to the inlining benefit stored within the given result structure.
val add_benefit : t -> Inlining_cost.Benefit.t -> t
Add some benefit to the inlining benefit stored within the given result structure.
Set the benefit of inlining the subexpression corresponding to the given result structure to zero.
val set_inlining_threshold : t -> Inlining_cost.Threshold.t option -> t
val add_inlining_threshold : t -> Inlining_cost.Threshold.t -> t
val sub_inlining_threshold : t -> Inlining_cost.Threshold.t -> t
val inlining_threshold : t -> Inlining_cost.Threshold.t option
val num_direct_applications : t -> int