JavaFrontend.JContext
data structure for representing whether an instruction is a goto, a return or a standard instruction.
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 : IR.Procdesc.t;
impl : Sawja_pack.JBir.t;
mutable var_map : (IR.Pvar.t * IR.Typ.t * IR.Typ.t) Sawja_pack.JBir.VarMap.t;
if_jumps : int NodeTbl.t;
goto_jumps : (int, jump_kind) IStdlib.IStd.Caml.Hashtbl.t;
cn : Javalib_pack.JBasics.class_name;
source_file : IBase.SourceFile.t;
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 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
adds to the context the line that the node in the given line will jump to.
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.
set_pvar context var type
adds a variable with a type to the context
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.
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