package libsail

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Module Libsail.Jib_utilSource

Utilities and helper functions for operating on Jib instructions and definitions

Instruction construction functions, and Jib names

Sourceval symbol_generator : string -> (unit -> Ast.id) * (unit -> unit)

Create a generator that produces fresh names, paired with a function that resets the generator (allowing it to regenerate the same name).

Sourceval idecl : Ast.l -> Jib.ctyp -> Jib.name -> Jib.instr
Sourceval ireset : Ast.l -> Jib.ctyp -> Jib.name -> Jib.instr
Sourceval iif : Ast.l -> Jib.cval -> Jib.instr list -> Jib.instr list -> Jib.ctyp -> Jib.instr
Sourceval ifuncall : Ast.l -> Jib.clexp -> (Ast.id * Jib.ctyp list) -> Jib.cval list -> Jib.instr
Sourceval iextern : Ast.l -> Jib.clexp -> (Ast.id * Jib.ctyp list) -> Jib.cval list -> Jib.instr
Sourceval iclear : ?loc:Ast.l -> Jib.ctyp -> Jib.name -> Jib.instr
Sourceval ireturn : ?loc:Ast.l -> Jib.cval -> Jib.instr
Sourceval iend : Ast.l -> Jib.instr
Sourceval iblock : ?loc:Ast.l -> Jib.instr list -> Jib.instr
Sourceval itry_block : Ast.l -> Jib.instr list -> Jib.instr
Sourceval ithrow : Ast.l -> Jib.cval -> Jib.instr
Sourceval icomment : ?loc:Ast.l -> string -> Jib.instr
Sourceval ilabel : ?loc:Ast.l -> string -> Jib.instr
Sourceval igoto : ?loc:Ast.l -> string -> Jib.instr
Sourceval iundefined : ?loc:Ast.l -> Jib.ctyp -> Jib.instr
Sourceval imatch_failure : Ast.l -> Jib.instr
Sourceval iexit : Ast.l -> Jib.instr
Sourceval iraw : ?loc:Ast.l -> string -> Jib.instr
Sourceval ijump : Ast.l -> Jib.cval -> string -> Jib.instr
Sourceval label : string -> string

Create a new unique label by concatenating a string with a unique identifier

Sourcemodule Name : sig ... end
Sourcemodule NameSet : sig ... end
Sourcemodule NameMap : sig ... end
Sourceval current_exception : Jib.name
Sourceval have_exception : Jib.name
Sourceval throw_location : Jib.name
Sourceval return : Jib.name
Sourceval name : Ast.id -> Jib.name
Sourceval global : Ast.id -> Jib.name
Sourceval cval_rename : Jib.name -> Jib.name -> Jib.cval -> Jib.cval
Sourceval clexp_rename : Jib.name -> Jib.name -> Jib.clexp -> Jib.clexp
Sourceval instr_rename : Jib.name -> Jib.name -> Jib.instr -> Jib.instr
Sourceval instrs_rename : Jib.name -> Jib.name -> Jib.instr list -> Jib.instr list
Sourceval string_of_name : ?deref_current_exception:bool -> ?zencode:bool -> Jib.name -> string
Sourceval string_of_op : Jib.op -> string
Sourceval string_of_ctyp : Jib.ctyp -> string
Sourceval string_of_uid : (Ast.id * Jib.ctyp list) -> string
Sourceval string_of_value : Value2.vl -> string
Sourceval string_of_cval : Jib.cval -> string

. Functions and modules for working with ctyps

Sourceval map_ctyp : (Jib.ctyp -> Jib.ctyp) -> Jib.ctyp -> Jib.ctyp
Sourceval ctyp_equal : Jib.ctyp -> Jib.ctyp -> bool
Sourceval ctyp_compare : Jib.ctyp -> Jib.ctyp -> int
Sourcemodule CTSet : sig ... end
Sourcemodule CTMap : sig ... end
Sourcemodule CTListSet : sig ... end
Sourcemodule NameCTSet : sig ... end
Sourcemodule NameCTMap : sig ... end

Operations for polymorphic Jib ctyps

Sourceval merge_unifiers : Ast.kid -> Jib.ctyp -> Jib.ctyp -> Jib.ctyp option
Sourceval ctyp_suprema : Jib.ctyp -> Jib.ctyp
Sourceval is_polymorphic : Jib.ctyp -> bool

Infer types

Sourceval cval_ctyp : Jib.cval -> Jib.ctyp
Sourceval clexp_ctyp : Jib.clexp -> Jib.ctyp
Sourceval cdef_ctyps : Jib.cdef -> CTSet.t

Functions for mapping over and extracting information from instructions, values, and definitions

Sourceval instr_ids : Jib.instr -> NameSet.t
Sourceval instr_reads : Jib.instr -> NameSet.t
Sourceval instr_writes : Jib.instr -> NameSet.t
Sourceval instr_typed_writes : Jib.instr -> NameCTSet.t
Sourceval map_cval : (Jib.cval -> Jib.cval) -> Jib.cval -> Jib.cval
Sourceval map_instr : (Jib.instr -> Jib.instr) -> Jib.instr -> Jib.instr

Map over each instruction within an instruction, bottom-up

Sourceval map_instrs : (Jib.instr list -> Jib.instr list) -> Jib.instr -> Jib.instr
Sourceval concatmap_instr : (Jib.instr -> Jib.instr list) -> Jib.instr -> Jib.instr list

Concat-map over each instruction within an instruction, bottom-up

Sourceval iter_instr : (Jib.instr -> unit) -> Jib.instr -> unit

Iterate over each instruction within an instruction, bottom-up

Sourceval cdef_map_instr : (Jib.instr -> Jib.instr) -> Jib.cdef -> Jib.cdef

Map over each instruction in a cdef using map_instr

Sourceval map_clexp_ctyp : (Jib.ctyp -> Jib.ctyp) -> Jib.clexp -> Jib.clexp
Sourceval map_cval_ctyp : (Jib.ctyp -> Jib.ctyp) -> Jib.cval -> Jib.cval
Sourceval map_instr_ctyp : (Jib.ctyp -> Jib.ctyp) -> Jib.instr -> Jib.instr
Sourceval cdef_map_ctyp : (Jib.ctyp -> Jib.ctyp) -> Jib.cdef -> Jib.cdef
Sourceval map_instr_cval : (Jib.cval -> Jib.cval) -> Jib.instr -> Jib.instr
Sourceval map_instr_list : (Jib.instr -> Jib.instr) -> Jib.instr list -> Jib.instr list
Sourceval filter_instrs : (Jib.instr -> bool) -> Jib.instr list -> Jib.instr list
Sourceval instr_split_at : (Jib.instr -> bool) -> Jib.instr list -> Jib.instr list * Jib.instr list
Sourceval map_funcall : (Jib.instr -> Jib.instr list -> Jib.instr list) -> Jib.instr list -> Jib.instr list

Map over function calls in an instruction sequence, including exception handler where present

Sourceval cdef_map_funcall : (Jib.instr -> Jib.instr list -> Jib.instr list) -> Jib.cdef -> Jib.cdef

Map over each function call in a cdef using map_funcall

Sourceval cdef_map_cval : (Jib.cval -> Jib.cval) -> Jib.cdef -> Jib.cdef
Sourceval cdef_concatmap_instr : (Jib.instr -> Jib.instr list) -> Jib.cdef -> Jib.cdef

Map over each instruction in a cdef using concatmap_instr

Sourceval c_ast_registers : Jib.cdef list -> (Ast.id * Jib.ctyp * Jib.instr list) list