jon.recoil.org

Module Flambda2_identifiers

module Apply_cont_rewrite_id : sig ... end
module Code_id : sig ... end
module Code_id_or_name : sig ... end
module Code_id_or_symbol : sig ... end
module Coercion0 : sig ... end

Defines coercions and their basic operations. For us, a coercion is a compile-time function on simple expressions that serves to add information to a type. A coercion must:

module Continuation : sig ... end

The names of continuations.

module Continuation_callsite_map : sig ... end
module Flambda_debug_uid : sig ... end

Augmented version of Lambda.debug_uid that can track variables forming parts of unboxed products.

module Function_slot : sig ... end

A label, unique across the whole program, that identifies a function within a set of closures. In essence these function slots describe the semantics of a particular piece of code when it is executed in the context of a particular closure.

module Int_ids : sig ... end

The underlying implementation for Variable, Symbol, Name, Reg_width_const, Simple, Code_id and Code_id_or_symbol. These values are all represented as integers.

module Name : sig ... end

The sum type holding a Variable or a Symbol. The injection functions into the sum type are the identity.

module Named_rewrite_id : sig ... end
module Rec_info_expr0 : sig ... end
module Reg_width_const : sig ... end

Constants that fit in registers on the target machine.

module Slot : sig ... end
module Symbol : sig ... end

A symbol identifies a piece of statically-allocated data. The linkage name must be unique across the whole program.

module Value_slot : sig ... end

A label, unique across the whole program, that identifies the value of a captured variable in a set of closures. Value slots are assigned integer offsets inside Closure_tag blocks, where the relevant captured value will be stored at runtime, by the Slot_offsets module.

module Variable : sig ... end