jon.recoil.org

Module Regalloc_irc_state

type t
val make : initial:Reg.t list -> stack_slots:Regalloc_stack_slots.t -> affinity:Regalloc_affinity.t -> unit -> t
val add_initial_one : t -> Reg.t -> unit
val add_initial_list : t -> Reg.t list -> unit
val reset : t -> new_inst_temporaries:Reg.t list -> new_block_temporaries:Reg.t list -> unit
val reg_work_list : t -> Reg.t -> Regalloc_irc_utils.RegWorkList.t
val color : t -> Reg.t -> Regalloc_irc_utils.Color.t option
val set_color : t -> Reg.t -> Regalloc_irc_utils.Color.t option -> unit
val degree : t -> Reg.t -> int
val set_degree : t -> Reg.t -> int -> unit
val get_max_degree : t -> int
val is_precolored : t -> Reg.t -> bool
val is_precolored_or_colored : t -> Reg.t -> bool
val iter_and_clear_initial : t -> f:(Reg.t -> unit) -> unit
val is_empty_simplify_work_list : t -> bool
val add_simplify_work_list : t -> Reg.t -> unit
val choose_and_remove_simplify_work_list : t -> Reg.t
val is_empty_freeze_work_list : t -> bool
val mem_freeze_work_list : t -> Reg.t -> bool
val add_freeze_work_list : t -> Reg.t -> unit
val remove_freeze_work_list : t -> Reg.t -> unit
val choose_and_remove_freeze_work_list : t -> Reg.t
val is_empty_spill_work_list : t -> bool
val mem_spill_work_list : t -> Reg.t -> bool
val add_spill_work_list : t -> Reg.t -> unit
val remove_spill_work_list : t -> Reg.t -> unit
val fold_spill_work_list : t -> f:('a -> Reg.t -> 'a) -> init:'a -> 'a
val spill_work_list : t -> Reg.Set.t
val is_empty_spilled_nodes : t -> bool
val add_spilled_nodes : t -> Reg.t -> unit
val spilled_nodes : t -> Reg.t list
val clear_spilled_nodes : t -> unit
val add_coalesced_nodes : t -> Reg.t -> unit
val iter_coalesced_nodes : t -> f:(Reg.t -> unit) -> unit
val add_colored_nodes : t -> Reg.t -> unit
val is_empty_select_stack : t -> bool
val push_select_stack : t -> Reg.t -> unit
val pop_select_stack : t -> Reg.t
val iter_and_clear_select_stack : t -> f:(Reg.t -> unit) -> unit
val add_coalesced_moves : t -> Regalloc_utils.Instruction.t -> unit
val add_constrained_moves : t -> Regalloc_utils.Instruction.t -> unit
val add_frozen_moves : t -> Regalloc_utils.Instruction.t -> unit
val is_empty_work_list_moves : t -> bool
val add_work_list_moves : t -> Regalloc_utils.Instruction.t -> unit
val choose_and_remove_work_list_moves : t -> Regalloc_utils.Instruction.t
val mem_active_moves : t -> Regalloc_utils.Instruction.t -> bool
val add_active_moves : t -> Regalloc_utils.Instruction.t -> unit
val remove_active_moves : t -> Regalloc_utils.Instruction.t -> unit
val mem_adj_set : t -> Reg.t -> Reg.t -> bool
val adj_list : t -> Reg.t -> Reg.t list
val add_edge : t -> Reg.t -> Reg.t -> unit
val iter_adjacent : t -> Reg.t -> f:(Reg.t -> unit) -> unit
val for_all_adjacent : t -> Reg.t -> f:(Reg.t -> bool) -> bool
val cardinal_edges : t -> int
val iter_edges : t -> f:(Regalloc_irc_utils.Edge.t -> unit) -> unit
val is_empty_node_moves : t -> Reg.t -> bool
val iter_node_moves : t -> Reg.t -> f:(Regalloc_utils.Instruction.t -> unit) -> unit
val enable_moves_one : t -> Reg.t -> unit
val decr_degree : t -> Reg.t -> unit
val find_move_list : t -> Reg.t -> Regalloc_utils.Instruction.Set.t
val add_move_list : t -> Reg.t -> Regalloc_utils.Instruction.t -> unit
val union_move_list : t -> Reg.t -> Regalloc_utils.Instruction.Set.t -> unit
val find_alias : t -> Reg.t -> Reg.t
val add_alias : t -> Reg.t -> Reg.t -> unit
val stack_slots : t -> Regalloc_stack_slots.t
val affinity : t -> Regalloc_affinity.t
val add_inst_temporaries_list : t -> Reg.t list -> unit
val add_block_temporaries_list : t -> Reg.t list -> unit
val mem_inst_temporaries : t -> Reg.t -> bool
val mem_all_introduced_temporaries : t -> Reg.t -> bool
val diff_all_introduced_temporaries : t -> Reg.Set.t -> Reg.Set.t
val set_instr_work_list : t -> instruction_id:InstructionId.t -> work_list:Regalloc_irc_utils.InstrWorkList.t -> unit
val get_instr_work_list : t -> instruction_id:InstructionId.t -> Regalloc_irc_utils.InstrWorkList.t
val update_register_locations : t -> unit
val invariant : t -> unit