jon.recoil.org

Module Linear

type label = Cmm.label
type instruction = {
  1. mutable desc : Linear.instruction_desc;
  2. mutable next : Linear.instruction;
  3. arg : Reg.t array;
  4. res : Reg.t array;
  5. dbg : Debuginfo.t;
  6. fdo : Fdo_info.t;
  7. live : Reg.Set.t;
  8. available_before : Reg_availability_set.t;
  9. available_across : Reg_availability_set.t;
}
and instruction_desc =
  1. | Lprologue
  2. | Lepilogue_open
  3. | Lepilogue_close
  4. | Lend
  5. | Lop of Operation.t
  6. | Lcall_op of Linear.call_operation
  7. | Lreloadretaddr
  8. | Lreturn
  9. | Llabel of {
    1. label : Linear.label;
    2. section_name : string option;
    }
  10. | Lbranch of Linear.label
  11. | Lcondbranch of Operation.test * Linear.label
  12. | Lcondbranch3 of Linear.label option * Linear.label option * Linear.label option
  13. | Lswitch of Linear.label array
  14. | Lentertrap
  15. | Ladjust_stack_offset of {
    1. delta_bytes : int;
    }
  16. | Lpushtrap of {
    1. lbl_handler : Linear.label;
    }
  17. | Lpoptrap of {
    1. lbl_handler : Linear.label;
    }
  18. | Lraise of Lambda.raise_kind
  19. | Lstackcheck of {
    1. max_frame_size_bytes : int;
    }
and call_operation =
  1. | Lcall_ind
  2. | Lcall_imm of {
    1. func : Cmm.symbol;
    }
  3. | Ltailcall_ind
  4. | Ltailcall_imm of {
    1. func : Cmm.symbol;
    }
  5. | Lextcall of {
    1. func : string;
    2. ty_res : Cmm.machtype;
    3. ty_args : Cmm.exttype list;
    4. alloc : bool;
    5. returns : bool;
    6. stack_ofs : int;
    7. stack_align : Cmm.stack_align;
    }
  6. | Lprobe of {
    1. name : string;
    2. handler_code_sym : string;
    3. enabled_at_init : bool;
    }
val has_fallthrough : Linear.instruction_desc -> bool
val end_instr : Linear.instruction
val instr_cons : Linear.instruction_desc -> Reg.t array -> Reg.t array -> Linear.instruction -> available_before:Reg_availability_set.t -> available_across:Reg_availability_set.t -> Linear.instruction
type fundecl = {
  1. fun_name : string;
  2. fun_args : Reg.Set.t;
  3. fun_body : Linear.instruction;
  4. fun_fast : bool;
  5. fun_dbg : Debuginfo.t;
  6. fun_tailrec_entry_point_label : Linear.label option;
  7. fun_contains_calls : bool;
  8. fun_num_stack_slots : int Stack_class.Tbl.t;
  9. fun_frame_required : bool;
  10. fun_prologue_required : bool;
  11. fun_section_name : string option;
}
val traps_to_bytes : int -> int