jon.recoil.org

Module Flambda2_simplify

module Apply_cont_rewrite : sig ... end

Rewrites applied to Apply_cont expressions in order to reflect changes in continuation arities consequential to addition or removal of parameters.

module Are_lifting_conts : sig ... end

ontinuation Lifting Status

module Build_unboxing_denv : sig ... end

Transform an unboxing decision tree into the downwards environment required for simplification.

module Call_site_inlining_decision : sig ... end
module Closure_info : sig ... end

Maintenance of environments and associated calculations for common subexpression elimination, performed during Simplify.

module Comparison_result : sig ... end
module Continuation_in_env : sig ... end
module Continuation_shortcut : sig ... end

A continuation shortcut is an anonymous continuation whose body is a single Apply_cont expression to another continuation.

module Continuation_uses : sig ... end

Recording of the uses of a single continuation. This module also computes, for each parameter of the continuation, the join of all corresponding argument types across the recorded uses; and the environment to be used for simplifying the continuation itself.

module Continuation_uses_env : sig ... end
module Continuation_uses_env_intf : sig ... end
module Control_flow_graph : sig ... end
module Data_flow_graph : sig ... end
module Dominator_graph : sig ... end
module Downwards_acc : sig ... end
module Downwards_env : sig ... end
module Expr_builder : sig ... end

Functions for rebuilding expressions that are used during simplification. Unlike the basic creation functions in Expr these functions do things such as keeping track of free names and avoiding generation of unused bindings. They also elide construction of the terms themselves if required, e.g. during speculative inlining.

module Flow : sig ... end
module Flow_acc : sig ... end

Dataflow analysis.

module Flow_analysis : sig ... end

Dataflow analysis.

module Flow_types : sig ... end
module Function_decl_inlining_decision : sig ... end
module Inlining_transforms : sig ... end
module Is_unboxing_beneficial : sig ... end
module Join_points : sig ... end

Compute, for each parameter of a continuation, the join of all corresponding argument types across the recorded uses; together with the environment to be used for simplifying the continuation itself.

module Lifted_constant : sig ... end

Description of a group of statically-allocated values discovered during simplification.

module Lifted_constant_state : sig ... end
module Lifted_cont_params : sig ... end
module Loopify_state : sig ... end
module Mutable_unboxing : sig ... end
module Named_rewrite : sig ... end
module Non_constructed_code : sig ... end

Code without any function bodies, but with all the associated metadata, e.g. free names.

module Non_recursive_handler : sig ... end
module Number_adjuncts : sig ... end

Additional information about kinds of numbers (mainly relating to conversions and boxing/unboxing) in a standard form that can be fed to functors parametric in number kinds.

module One_continuation_use : sig ... end
module One_recursive_handler : sig ... end
module Optimistic_unboxing_decision : sig ... end
module Original_handlers : sig ... end
module Rebuilt_expr : sig ... end

The type of expressions constructed by the simplifier.

module Rebuilt_static_const : sig ... end

Static constants, equipped with free name information, as rebuilt by the simplifier. Definitions of the constants themselves are not kept when not rebuilding terms, but some of the metadata is.

module Reification : sig ... end

Construct terms using only information from types.

module Replay_history : sig ... end
module Simplified_named : sig ... end
module Simplify : sig ... end

Simplification of Flambda programs: inlining, specialisation, unboxing and so forth.

module Simplify_apply_cont_expr : sig ... end
module Simplify_apply_expr : sig ... end
module Simplify_binary_primitive : sig ... end

Simplification of primitives taking two arguments.

module Simplify_coercion : sig ... end
module Simplify_common : sig ... end

Miscellaneous utility functions and types used by the simplifier.

module Simplify_expr : sig ... end

Simplification proceeds in two passes: the downwards pass and the upwards pass.

module Simplify_extcall : sig ... end

Simplification of external calls

module Simplify_import : sig ... end
module Simplify_let_cont_expr : sig ... end
module Simplify_let_expr : sig ... end
module Simplify_named : sig ... end

Simplification of the right-hand sides of Let bindings.

module Simplify_named_result : sig ... end
module Simplify_nullary_primitive : sig ... end

Simplification of primitives taking no argument.

module Simplify_primitive : sig ... end

Simplification of primitive applications.

module Simplify_primitive_result : sig ... end
module Simplify_quaternary_primitive : sig ... end
module Simplify_rec_info_expr : sig ... end

Simplification functions on Rec_info_expr.t.

module Simplify_set_of_closures : sig ... end

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.

module Simplify_simple : sig ... end

Simplification functions on Simple.t.

module Simplify_static_const : sig ... end

Simplification of statically-allocated constants bound to symbols.

module Simplify_switch_expr : sig ... end
module Simplify_ternary_primitive : sig ... end

Simplification of primitives taking three arguments.

module Simplify_unary_primitive : sig ... end

Simplification of primitives taking one argument.

module Simplify_variadic_primitive : sig ... end

Simplification of primitives taking variable numbers of arguments.

module Specialization_cost : sig ... end

ontinuation Specialization Cost

module Unbox_continuation_params : sig ... end
module Unboxers : sig ... end
module Unboxing_epa : sig ... end

Handling of the extra params and args required for the unboxing of a continuation's parameter(s).

module Unboxing_types : sig ... end
module Upwards_acc : sig ... end
module Upwards_env : sig ... end

Upwards environments used during simplification.