package ocaml-base-compiler
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page
package ocaml-base-compiler
-
bigarray
-
dynlink
-
ocamlbytecomp
-
ocamlcommon
-
ocamlmiddleend
-
ocamloptcomp
-
odoc_info
-
stdlib
-
str
-
unix
Legend:
Library
Module
Module type
Parameter
Class
Class type
Library
Module
Module type
Parameter
Class
Class type
ocaml-base-compiler 4.14.1
Libraries
This package provides the following libraries (via ocamlobjinfo):
ocamltoplevel
Documentation:
Genprintval
Topcommon
This module provides common implementations for internals ofToploop
, for bytecode and native code (seeTopeval
for the diverging parts of the implementation).Topeval
This module provides two alternative implementations for internals ofToploop
, for bytecode and native code.Trace
Toploop
Topdirs
Topmain
ocamloptcomp
Documentation:
Internal_variable_names
Linkage_name
Compilation_unit
Variable
Variable.t
is the equivalent of a non-persistentIdent.t
in theFlambda
tree. It wraps anIdent.t
together with its sourcecompilation_unit
. As such, it is unique within a whole program, not just one compilation unit.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.Symbol
A symbol identifies a constant provided by either:Backend_var
Variables used in the backend, optionally equipped with "provenance" information, used for the emission of debugging information.Clambda_primitives
Printclambda_primitives
Clambda
Printclambda
Semantics_of_primitives
Description of the semantics of primitives, to be used for optimization purposes.Convert_primitives
Id_types
Export_id
Tag
Tags on runtime boxed values.Mutable_variable
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
Closure_origin
Var_within_closure
An identifier, unique across the whole program, that identifies a particular variable within a particular closure. OnlyProject_var
, and notVar
, nodes are tagged with these identifiers.Static_exception
An identifier that is used to label static exceptions. Its uniqueness properties are unspecified.Pass_wrapper
Allocated_const
Constants that are always allocated (possibly statically). Blocks are not included here since they are always encoded usingPrim (Pmakeblock, ...)
.Parameter
Parameter.t
carries a uniqueVariable.t
used as function parameter. It can also carry annotations about the usage of the variable.Projection
Representation of projections from closures and blocks.Flambda
Intermediate language used for tree-based analysis and optimization.Flambda_iterators
Flambda_utils
Utility functions for the Flambda intermediate language.Freshening
Freshening of various identifiers.Effect_analysis
Simple side effect analysis.Inlining_cost
Measurement of the cost (including cost in space) of Flambda terms in the context of inlining.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.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.Compilenv
Closure
Closure_middle_end
Import_approx
Create simple value approximations from the export information in .cmx files.Lift_code
Closure_conversion_aux
Environments and auxiliary structures used during closure conversion.Closure_conversion
Initialize_symbol_to_let_symbol
Lift_let_to_initialize_symbol
Find_recursive_functions
"Recursive functions" are those functionsf
that might call either:Invariant_params
Inconstant_idents
Alias_analysis
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.Share_constants
Share lifted constants that are eligible for sharing (e.g. not strings) and have equal definitions.Simplify_common
const_*_expr expr v annot
, where the expressionexpr
is known to evaluate to the valuev
, attempt to produce a more simple expression together with its approximation and the benefit gained by replacingexpr
with this new expression. This simplification is only performed ifexpr
is known to have no side effects. Otherwise,expr
itself is returned, with an appropriate approximation but zero benefit.Remove_unused_arguments
Remove_unused_closure_vars
Remove_unused_program_constructs
Simplify_boxed_integer_ops
Simplify_primitives
Inlining_stats_types
Inlining_stats
Inline_and_simplify_aux
Environments and result structures used during inlining and simplification. (See inline_and_simplify.ml.)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.Extract_projections
Identify projections from variables used in function bodies (free variables or specialised args, for example, according towhich_variables
below). Projections from variables that are also used boxed are not returned.Augment_specialised_args
Helper module for adding specialised arguments to sets of closures.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.Unbox_closures
Turn free variables of closures into specialised arguments. The aim is to cause the closure to become closed.Inlining_transforms
Source code transformations used during inlining.Inlining_decision
See the Flambda manual chapter for an explanation in prose of the inlining decision procedure.Inline_and_simplify
Ref_to_variables
Transformlet
-bound references into variables.Flambda_invariants
Traverse_for_exported_symbols
Build_export_info
Construct export information, for emission into .cmx files, from an Flambda program.Closure_offsets
Assign numerical offsets, within closure blocks, for code pointers and environment entries.Un_anf
Flambda_to_clambda
Flambda_middle_end
Translate Lambda code to Flambda code, optimize it, and produce Clambda.X86_proc
Definitions shared between the 32 and 64 bit Intel backends.X86_dsl
Helpers for Intel code generatorsX86_gas
Emit assembly instructions for gas.X86_masm
Emit assembly instructions for MASM (Intel syntax).Arch
Cmm
Printcmm
Reg
Mach
Proc
Afl_instrument
Instrumentation for afl-fuzz.Strmatch
Cmmgen_state
Mutable state used byCmmgen
.Cmm_helpers
Cmmgen
Cmm_invariants
run ppf fundecl
analyses the given function, and returns whether any errors were encountered (with corresponding error messages printed on the given formatter).Interval
Printmach
Dataflow
Polling
Analyses related to the insertion ofIpoll
operations.Selectgen
Selection
Comballoc
CSEgen
CSE
Liveness
Spill
Split
Interf
Coloring
Linscan
Reloadgen
Reload
Deadcode
Linear
Printlinear
Linearize
Linear_format
Schedgen
Scheduling
Branch_relaxation_intf
Branch_relaxation
Emitaux
Emit
Asmgen
From Lambda to assembly codeAsmlink
Asmlibrarian
Asmpackager
Opterrors
Optcompile
Native compilation for .ml and .mli files.Optmaindriver
ocamlmiddleend
Documentation:
Internal_variable_names
Linkage_name
Compilation_unit
Variable
Variable.t
is the equivalent of a non-persistentIdent.t
in theFlambda
tree. It wraps anIdent.t
together with its sourcecompilation_unit
. As such, it is unique within a whole program, not just one compilation unit.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.Symbol
A symbol identifies a constant provided by either:Backend_var
Variables used in the backend, optionally equipped with "provenance" information, used for the emission of debugging information.Clambda_primitives
Printclambda_primitives
Clambda
Printclambda
Semantics_of_primitives
Description of the semantics of primitives, to be used for optimization purposes.Convert_primitives
Id_types
Export_id
Tag
Tags on runtime boxed values.Mutable_variable
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
Closure_origin
Var_within_closure
An identifier, unique across the whole program, that identifies a particular variable within a particular closure. OnlyProject_var
, and notVar
, nodes are tagged with these identifiers.Static_exception
An identifier that is used to label static exceptions. Its uniqueness properties are unspecified.Pass_wrapper
Allocated_const
Constants that are always allocated (possibly statically). Blocks are not included here since they are always encoded usingPrim (Pmakeblock, ...)
.Parameter
Parameter.t
carries a uniqueVariable.t
used as function parameter. It can also carry annotations about the usage of the variable.Projection
Representation of projections from closures and blocks.Flambda
Intermediate language used for tree-based analysis and optimization.Flambda_iterators
Flambda_utils
Utility functions for the Flambda intermediate language.Freshening
Freshening of various identifiers.Effect_analysis
Simple side effect analysis.Inlining_cost
Measurement of the cost (including cost in space) of Flambda terms in the context of inlining.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.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.Compilenv
Closure
Closure_middle_end
Import_approx
Create simple value approximations from the export information in .cmx files.Lift_code
Closure_conversion_aux
Environments and auxiliary structures used during closure conversion.Closure_conversion
Initialize_symbol_to_let_symbol
Lift_let_to_initialize_symbol
Find_recursive_functions
"Recursive functions" are those functionsf
that might call either:Invariant_params
Inconstant_idents
Alias_analysis
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.Share_constants
Share lifted constants that are eligible for sharing (e.g. not strings) and have equal definitions.Simplify_common
const_*_expr expr v annot
, where the expressionexpr
is known to evaluate to the valuev
, attempt to produce a more simple expression together with its approximation and the benefit gained by replacingexpr
with this new expression. This simplification is only performed ifexpr
is known to have no side effects. Otherwise,expr
itself is returned, with an appropriate approximation but zero benefit.Remove_unused_arguments
Remove_unused_closure_vars
Remove_unused_program_constructs
Simplify_boxed_integer_ops
Simplify_primitives
Inlining_stats_types
Inlining_stats
Inline_and_simplify_aux
Environments and result structures used during inlining and simplification. (See inline_and_simplify.ml.)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.Extract_projections
Identify projections from variables used in function bodies (free variables or specialised args, for example, according towhich_variables
below). Projections from variables that are also used boxed are not returned.Augment_specialised_args
Helper module for adding specialised arguments to sets of closures.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.Unbox_closures
Turn free variables of closures into specialised arguments. The aim is to cause the closure to become closed.Inlining_transforms
Source code transformations used during inlining.Inlining_decision
See the Flambda manual chapter for an explanation in prose of the inlining decision procedure.Inline_and_simplify
Ref_to_variables
Transformlet
-bound references into variables.Flambda_invariants
Traverse_for_exported_symbols
Build_export_info
Construct export information, for emission into .cmx files, from an Flambda program.Closure_offsets
Assign numerical offsets, within closure blocks, for code pointers and environment entries.Un_anf
Flambda_to_clambda
Flambda_middle_end
Translate Lambda code to Flambda code, optimize it, and produce Clambda.
ocamlcommon
Documentation:
Config
System configurationBuild_path_prefix_map
Rewrite paths for reproducible buildsMisc
Miscellaneous useful types and functionsIdentifiable
Uniform interface for common data structures over various things.Numbers
Modules about numbers, some of which satisfyIdentifiable.S
.