Module Js_of_ocaml_compiler.Optimization_hint

type boxed_integer =
  1. | Int32
  2. | Int64
  3. | Nativeint
type array_kind =
  1. | Generic
  2. | Value
  3. | Float
module Bigarray : sig ... end
type repr =
  1. | Value
  2. | Float
  3. | Int32
  4. | Nativeint
  5. | Int64
  6. | Int
type primitive = {
  1. name : string;
  2. args : repr list;
  3. res : repr;
}
type ccall =
  1. | Hint_unsafe
  2. | Hint_int of boxed_integer
  3. | Hint_bigarray of Bigarray.t
  4. | Hint_primitive of primitive
  5. | Hint_immediate_result
    (*

    The value returned by the C function is an immediate

    *)
type inline_attribute =
  1. | Always_inline
  2. | Never_inline
  3. | Hint_inline
  4. | Unroll of int
  5. | Default_inline
type specialise_attribute =
  1. | Always_specialise
  2. | Never_specialise
  3. | Default_specialise
type closure_hint = {
  1. params : repr list;
  2. return : repr;
  3. inline : inline_attribute;
  4. specialise : specialise_attribute;
  5. is_a_functor : bool;
}
type t =
  1. | Hint_immutable_block
  2. | Hint_arraylength of array_kind
  3. | Hint_closures of closure_hint list
  4. | Hint_ccall of ccall
  5. | Hint_immediate
    (*

    The value produced by the instruction is an immediate

    *)
  6. | Hint_variant
    (*

    The argument of the instruction is a value of a variant type: if it is an immediate, it is a constant constructor

    *)
  7. | Hint_int_equality_test
    (*

    Integer equality or inequality: both arguments are immediates

    *)
val print_ccall : Stdlib.Format.formatter -> ccall -> unit
val print : Stdlib.Format.formatter -> t -> unit
val print_closure_hint : Stdlib.Format.formatter -> closure_hint -> unit