package ocaml-base-compiler
 sectionYPositions = computeSectionYPositions($el), 10)"
  x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
  >
  
  
  Official release 4.10.2
Install
    
    dune-project
 Dependency
Authors
Maintainers
Sources
  
    
      4.10.2.tar.gz
    
    
        
    
  
  
  
    
  
        sha256=7aa26e0d70f36f0338df92cf5aaeb2704f3443bfe910a3d02a5dca9162f1d866
    
    
  doc/ocamloptcomp/Closure_conversion/index.html
Module Closure_conversion
val lambda_to_flambda : 
  backend:(module Backend_intf.S) ->
  module_ident:Ident.t ->
  size:int ->
  filename:string ->
  Lambda.lambda ->
  Flambda.programGeneration of Flambda intermediate language code from Lambda code by performing a form of closure conversion.
Function declarations (which may bind one or more variables identifying functions, possibly with mutual recursion) are transformed to Set_of_closures expressions. Project_closure expressions are then used to select a closure for a particular function from a Set_of_closures expression. The Set_of_closures expressions say nothing about the actual runtime layout of the closures; this is handled when Flambda code is translated to Clambda code.
The following transformations are also performed during closure conversion:
- Constant blocks (by which is meant things wrapped in Lambda.Const_block) are converted to applications of thePmakeblockprimitive.
- Leventdebugging event nodes are removed and the information within them attached to function, method and- raisecalls.
- Tuplified functions are converted to curried functions and a stub function emitted to call the curried version. For example: let rec f (x, y) = f (x + 1, y + 1) is transformed to: let rec internal_f x y = f (x + 1,y + 1) and f (x, y) = internal_f x y (* fis marked as a stub function *)
- The PdirapplyandPrevapplyapplication primitives are removed and converted to normalFlambdaapplication nodes.
The lambda_to_flambda function is not re-entrant.
 sectionYPositions = computeSectionYPositions($el), 10)"
  x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
  >