data structure for representing whether an instruction is a goto, a return or a standard instruction.
module NodeTbl : InferStdlib.IStd.Caml.Hashtbl.S with type NodeTbl.key = InferIR.Procdesc.Node.t
Hastable for storing nodes that correspond to if-instructions. These are used when adding the edges in the contrl flow graph.
data structure for saving the three structures tht contain the intermediate representation of a file: the type environment, the control graph and the control flow graph
type t
= private
{
icfg : icfg; |
procdesc : InferIR.Procdesc.t; |
impl : Sawja_pack.JBir.t; |
mutable var_map : (InferIR.Pvar.t * InferIR.Typ.t * InferIR.Typ.t) Sawja_pack.JBir.VarMap.t; |
if_jumps : int NodeTbl.t; |
goto_jumps : (int, jump_kind) InferStdlib.IStd.Caml.Hashtbl.t; |
cn : Javalib_pack.JBasics.class_name; |
source_file : InferBase.SourceFile.t; |
program : InferModules.JClasspath.program; |
}
data structure for storing the context elements.
val create_context : icfg ‑> InferIR.Procdesc.t ‑> Sawja_pack.JBir.t ‑> Javalib_pack.JBasics.class_name ‑> InferBase.SourceFile.t ‑> InferModules.JClasspath.program ‑> t
cretes a context for a given method.
val get_tenv : t ‑> InferIR.Tenv.t
returns the type environment that corresponds to the current file.
val add_if_jump : t ‑> InferIR.Procdesc.Node.t ‑> int ‑> unit
adds to the context the line that an if-node will jump to
val get_if_jump : t ‑> InferIR.Procdesc.Node.t ‑> int option
returns whether the given node corresponds to an if-instruction
if the given line corresponds to a goto instruction, then returns the line where it jumps to, otherwise returns the next line.
val is_goto_jump : t ‑> int ‑> bool
returns whether the given line corresponds to a goto instruction.
val set_pvar : t ‑> Sawja_pack.JBir.var ‑> InferIR.Typ.t ‑> InferIR.Pvar.t
set_pvar context var type
adds a variable with a type to the context
val get_var_type : t ‑> Sawja_pack.JBir.var ‑> InferIR.Typ.t option
get_var_type context var
returns the type of the variable, if the variable is in the context
val reset_exn_node_table : unit ‑> unit
resets the hashtable mapping methods to their exception nodes
val add_exn_node : InferIR.Typ.Procname.t ‑> InferIR.Procdesc.Node.t ‑> unit
adds the exception node for a given method