jon.recoil.org

Module Closure_conversion_aux.IR

type simple =
  1. | Var of Ident.t
  2. | Const of Lambda.structured_constant
type trap_action =
  1. | Push of {
    1. exn_handler : Flambda2_identifiers.Continuation.t;
    }
  2. | Pop of {
    1. exn_handler : Flambda2_identifiers.Continuation.t;
    }
type user_visible =
  1. | User_visible
  2. | Not_user_visible
type named =
  1. | Simple of Flambda2_from_lambda.Closure_conversion_aux.IR.simple
  2. | Get_tag of Ident.t
  3. | Begin_region of {
    1. ghost : bool;
    2. is_try_region : bool;
    3. parent_region : Ident.t option;
    }
  4. | End_region of {
    1. is_try_region : bool;
    2. region : Ident.t;
    3. ghost : bool;
    }
    (*

    Begin_region and End_region are needed because these primitives don't exist in Lambda

    *)
  5. | Prim of {
    1. prim : Lambda.primitive;
    2. args : Flambda2_from_lambda.Closure_conversion_aux.IR.simple list list;
    3. loc : Lambda.scoped_location;
    4. exn_continuation : Flambda2_from_lambda.Closure_conversion_aux.IR.exn_continuation option;
    5. region : Ident.t option;
    6. ghost_region : Ident.t option;
    }
type apply_kind =
  1. | Function
  2. | Method of {
    1. kind : Lambda.meth_kind;
    2. obj : Flambda2_from_lambda.Closure_conversion_aux.IR.simple;
    }