ocaml-compiler
API
Library compiler-libs.bytecomp
Library compiler-libs.common
Library compiler-libs.optcomp
Afl_instrument Instrumentation for afl-fuzz.Alias_analysis Allocated_const Constants that are always allocated (possibly statically). Blocks are not included here since they are always encoded using Prim (Pmakeblock, ...).Arch Asmgen From Lambda to assembly codeAsmlibrarian Asmlink Asmpackager Augment_specialised_args Helper module for adding specialised arguments to sets of closures.Backend_intf Knowledge that the middle end needs about the backend.Backend_var Variables used in the backend, optionally equipped with "provenance" information, used for the emission of debugging information.Branch_relaxation Branch_relaxation_intf Build_export_info Construct export information, for emission into .cmx files, from an Flambda program.CSE Common interface to all architecture-specific CSE modulesCSEgen Clambda Clambda_primitives Closure Closure_conversion Closure_conversion_aux Environments and auxiliary structures used during closure conversion.Closure_element Closure_id CR-someday lwhite: "Closure_id" is quite a generic name. I wonder whether something like "Closure_label" would better capture that it is the label of a projection.Closure_middle_end Closure_offsets Assign numerical offsets, within closure blocks, for code pointers and environment entries.Closure_origin Cmm Cmm_helpers Cmm_invariants Check a number of continuation-related invariantsCmmgen Cmmgen_state Mutable state used by Cmmgen.Cmx_format Cmxs_format Coloring Comballoc Compilation_unit Compilenv Convert_primitives Dataflow Deadcode Effect_analysis Simple side effect analysis.Emit Emitaux Emitenv Export_id Export_info Exported information (that is to say, information written into a .cmx file) about a compilation unit.Export_info_for_pack Transformations on export information that are only used for the building of packs.Extract_projections Identify projections from variables used in function bodies (free variables or specialised args, for example, according to which_variables below). Projections from variables that are also used boxed are not returned.Find_recursive_functions "Recursive functions" are those functions f that might call either:Flambda Intermediate language used for tree-based analysis and optimization.Flambda_invariants Flambda_iterators Flambda_middle_end Translate Lambda code to Flambda code, optimize it, and produce Clambda.Flambda_to_clambda Flambda_utils Utility functions for the Flambda intermediate language.Freshening Freshening of various identifiers.Id_types Import_approx Create simple value approximations from the export information in .cmx files.Inconstant_idents Initialize_symbol_to_let_symbol Inline_and_simplify Inline_and_simplify_aux Environments and result structures used during inlining and simplification. (See inline_and_simplify.ml.)Inlining_cost Measurement of the cost (including cost in space) of Flambda terms in the context of inlining.Inlining_decision See the Flambda manual chapter for an explanation in prose of the inlining decision procedure.Inlining_decision_intf Inlining_stats Inlining_stats_types Inlining_transforms Source code transformations used during inlining.Interf Internal_variable_names Interval Invariant_params Lift_code Lift_constants The aim of this pass is to assign symbols to values known to be constant (in other words, whose values we know at compile time), with appropriate sharing of constants, and replace the occurrences of the constants with their corresponding symbols.Lift_let_to_initialize_symbol Linear Linear_format Linearize Linkage_name Linscan Liveness Mach Mutable_variable Optcompile Native compilation for .ml and .mli files.Opterrors Optmaindriver Parameter Parameter.t carries a unique Variable.t used as function parameter. It can also carry annotations about the usage of the variable.Pass_wrapper Polling Analyses related to the insertion of Ipoll operations.Printclambda Printclambda_primitives Printcmm Printlinear Printmach Proc Projection Representation of projections from closures and blocks.Ref_to_variables Transform let-bound references into variables.Reg Reload Reloadgen Remove_free_vars_equal_to_args Replace free variables in closures known to be equal to specialised arguments of such closures with those specialised arguments.Remove_unused_arguments Remove_unused_closure_vars Remove_unused_program_constructs Schedgen Scheduling Selectgen Selection Semantics_of_primitives Description of the semantics of primitives, to be used for optimization purposes.Set_of_closures_id An identifier, unique across the whole program, that identifies a set of closures (viz. Set_of_closures).Set_of_closures_origin Share_constants Share lifted constants that are eligible for sharing (e.g. not strings) and have equal definitions.Simple_value_approx Simple approximations to the runtime results of computations. This pass is designed for speed rather than accuracy; the performance is important since it is used heavily during inlining.Simplify_boxed_integer_ops Simplify_boxed_integer_ops_intf Simplify_common const_*_expr expr v annot, where the expression expr is known to evaluate to the value v, attempt to produce a more simple expression together with its approximation and the benefit gained by replacing expr with this new expression. This simplification is only performed if expr is known to have no side effects. Otherwise, expr itself is returned, with an appropriate approximation but zero benefit.Simplify_primitives Spill Split Stackframe Stackframegen Static_exception An identifier that is used to label static exceptions. Its uniqueness properties are unspecified.Strmatch Symbol A symbol identifies a constant provided by either:Tag Tags on runtime boxed values.Thread_sanitizer Instrumentation of memory accesses to use ThreadSanitizer (TSan) for data race detection. This module contains an instrumentation pass on Cmm, where most of the instrumentation happens.Traverse_for_exported_symbols Un_anf Unbox_closures Turn free variables of closures into specialised arguments. The aim is to cause the closure to become closed.Unbox_free_vars_of_closures When approximations of free variables of closures indicate that they are closures or blocks, rewrite projections from such blocks to new variables (which become free in the closures), with the defining expressions of the projections lifted out of the corresponding sets of closures.Unbox_specialised_args When approximations of specialised arguments indicate that they are closures or blocks, add more specialised arguments corresponding to the projections from such blocks (with definitions of such projections lifted out), such that the original specialised arguments may later be eliminated.Var_within_closure An identifier, unique across the whole program, that identifies a particular variable within a particular closure. Only Project_var, and not Var, nodes are tagged with these identifiers.Variable Variable.t is the equivalent of a non-persistent Ident.t in the Flambda tree. It wraps an Ident.t together with its source compilation_unit. As such, it is unique within a whole program, not just one compilation unit.X86_ast Structured representation of Intel assembly language (32 and 64 bit).X86_dsl Helpers for Intel code generatorsX86_gas Emit assembly instructions for gas.X86_masm Emit assembly instructions for MASM (Intel syntax).X86_proc Definitions shared between the 32 and 64 bit Intel backends.
Library compiler-libs.toplevel
Genprintval Topcommon This module provides common implementations for internals of Toploop, for bytecode and native code (see Topeval for the diverging parts of the implementation).Topdirs Topeval This module provides two alternative implementations for internals of Toploop, for bytecode and native code.Toploop Topmain Topprinters Trace
Library dynlink
Dynlink Dynamic loading of .cmo, .cma and .cmxs files.
Library runtime_events
Library stdlib
CamlinternalFormat CamlinternalFormatBasics CamlinternalLazy Run-time support for lazy values. All functions in this module are for system use only, not for the casual user.CamlinternalMod Run-time support for recursive modules. All functions in this module are for system use only, not for the casual user.CamlinternalOO Run-time support for objects and classes. All functions in this module are for system use only, not for the casual user.Stdlib The OCaml Standard library.
Library str
Str Regular expressions and high-level string processing
Library threads
Event First-class synchronous communication.Thread Lightweight threads for Posix 1003.1c and Win32.
Library unix
Unix Interface to the Unix system.UnixLabels Interface to the Unix system.