Module JavaFrontend.JContext

type jump_kind =
  1. | Next
  2. | Jump of int
  3. | Exit

data structure for representing whether an instruction is a goto, a return or a standard instruction.

module NodeTbl : IStdlib.IStd.Caml.Hashtbl.S with type key = IR.Procdesc.Node.t

Hastable for storing nodes that correspond to if-instructions. These are used when adding the edges in the contrl flow graph.

type icfg = {
  1. tenv : IR.Tenv.t;
  2. cfg : IR.Cfg.t;
}

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 {
  1. icfg : icfg;
  2. procdesc : IR.Procdesc.t;
  3. impl : Sawja_pack.JBir.t;
  4. mutable var_map : (IR.Pvar.t * IR.Typ.t * IR.Typ.t) Sawja_pack.JBir.VarMap.t;
  5. if_jumps : int NodeTbl.t;
  6. goto_jumps : (int, jump_kind) IStdlib.IStd.Caml.Hashtbl.t;
  7. cn : Javalib_pack.JBasics.class_name;
  8. source_file : IBase.SourceFile.t;
  9. program : JProgramDesc.t;
}

data structure for storing the context elements.

val create_context : icfg -> IR.Procdesc.t -> Sawja_pack.JBir.t -> Javalib_pack.JBasics.class_name -> IBase.SourceFile.t -> JProgramDesc.t -> t

cretes a context for a given method.

val get_tenv : t -> IR.Tenv.t

returns the type environment that corresponds to the current file.

val add_if_jump : t -> IR.Procdesc.Node.t -> int -> unit

adds to the context the line that an if-node will jump to

val get_if_jump : t -> IR.Procdesc.Node.t -> int option

returns whether the given node corresponds to an if-instruction

val add_goto_jump : t -> int -> jump_kind -> unit

adds to the context the line that the node in the given line will jump to.

val get_goto_jump : t -> int -> jump_kind

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 -> IR.Typ.t -> IR.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 -> IR.Typ.t option

get_var_type context var returns the type of the variable, if the variable is in the context

val reset_pvar_type : t -> unit

resets the dynamic type of the variables in the context.

val reset_exn_node_table : unit -> unit

resets the hashtable mapping methods to their exception nodes

val add_exn_node : IR.Procname.t -> IR.Procdesc.Node.t -> unit

adds the exception node for a given method