package sawja

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type
type var
val var_equal : var -> var -> bool
val var_orig : var -> bool
val var_name : var -> string
val var_name_debug : var -> string option
val var_name_g : var -> string
val bc_num : var -> int option
val index : var -> int
module VarSet : sig ... end
module VarMap : sig ... end
type const = [
  1. | `ANull
  2. | `Class of Javalib_pack.JBasics.object_type
  3. | `Double of float
  4. | `Float of float
  5. | `Int of int32
  6. | `Long of int64
  7. | `MethodHandle of Javalib_pack.JBasics.method_handle
  8. | `MethodType of Javalib_pack.JBasics.method_descriptor
  9. | `String of Javalib_pack.JBasics.jstr
]
type conv =
  1. | I2L
  2. | I2F
  3. | I2D
  4. | L2I
  5. | L2F
  6. | L2D
  7. | F2I
  8. | F2L
  9. | F2D
  10. | D2I
  11. | D2L
  12. | D2F
  13. | I2B
  14. | I2C
  15. | I2S
type unop =
  1. | Neg of Javalib_pack.JBasics.jvm_basic_type
  2. | Conv of conv
  3. | ArrayLength
  4. | InstanceOf of Javalib_pack.JBasics.object_type
  5. | Cast of Javalib_pack.JBasics.object_type
type comp =
  1. | DG
  2. | DL
  3. | FG
  4. | FL
  5. | L
type binop =
  1. | ArrayLoad of Javalib_pack.JBasics.value_type
  2. | Add of Javalib_pack.JBasics.jvm_basic_type
  3. | Sub of Javalib_pack.JBasics.jvm_basic_type
  4. | Mult of Javalib_pack.JBasics.jvm_basic_type
  5. | Div of Javalib_pack.JBasics.jvm_basic_type
  6. | Rem of Javalib_pack.JBasics.jvm_basic_type
  7. | IShl
  8. | IShr
  9. | IAnd
  10. | IOr
  11. | IXor
  12. | IUshr
  13. | LShl
  14. | LShr
  15. | LAnd
  16. | LOr
  17. | LXor
  18. | LUshr
  19. | CMP of comp
type formula =
  1. | Atom of [ `Eq | `Ge | `Gt | `Le | `Lt | `Ne ] * expr * expr
  2. | BoolVar of expr
  3. | And of formula * formula
  4. | Or of formula * formula
val default_formula_cmd : Javalib_pack.JBasics.class_method_signature list
type virtual_call_kind =
  1. | VirtualCall of Javalib_pack.JBasics.object_type
  2. | InterfaceCall of Javalib_pack.JBasics.class_name
type check =
  1. | CheckNullPointer of expr
  2. | CheckArrayBound of expr * expr
  3. | CheckArrayStore of expr * expr
  4. | CheckNegativeArraySize of expr
  5. | CheckCast of expr * Javalib_pack.JBasics.object_type
  6. | CheckArithmetic of expr
type instr =
  1. | Nop
  2. | AffectVar of var * expr
  3. | AffectArray of expr * expr * expr
  4. | AffectField of expr * Javalib_pack.JBasics.class_name * Javalib_pack.JBasics.field_signature * expr
  5. | AffectStaticField of Javalib_pack.JBasics.class_name * Javalib_pack.JBasics.field_signature * expr
  6. | Alloc of var * Javalib_pack.JBasics.class_name
  7. | Goto of int
  8. | Ifd of [ `Eq | `Ge | `Gt | `Le | `Lt | `Ne ] * expr * expr * int
  9. | Throw of expr
  10. | Return of expr option
  11. | New of var * Javalib_pack.JBasics.class_name * Javalib_pack.JBasics.value_type list * expr list
  12. | NewArray of var * Javalib_pack.JBasics.value_type * expr list
  13. | InvokeStatic of var option * Javalib_pack.JBasics.class_name * Javalib_pack.JBasics.method_signature * expr list
  14. | InvokeVirtual of var option * expr * virtual_call_kind * Javalib_pack.JBasics.method_signature * expr list
  15. | InvokeNonVirtual of var option * expr * Javalib_pack.JBasics.class_name * Javalib_pack.JBasics.method_signature * expr list
  16. | InvokeDynamic of var option * Javalib_pack.JBasics.bootstrap_method * Javalib_pack.JBasics.method_signature * expr list
  17. | MonitorEnter of expr
  18. | MonitorExit of expr
  19. | MayInit of Javalib_pack.JBasics.class_name
  20. | Check of check
  21. | Formula of Javalib_pack.JBasics.class_method_signature * formula
type exception_handler = {
  1. e_start : int;
  2. e_end : int;
  3. e_handler : int;
  4. e_catch_type : Javalib_pack.JBasics.class_name option;
  5. e_catch_var : var;
}
type t
val empty : t
val vars : t -> var array
val params : t -> (Javalib_pack.JBasics.value_type * var) list
val code : t -> instr array
val exc_tbl : t -> exception_handler list
val line_number_table : t -> (int * int) list option
val pc_ir2bc : t -> int array
val jump_target : t -> bool array
val exception_edges : t -> (int * exception_handler) list
val get_source_line_number : int -> t -> int option
val print_handler : exception_handler -> string
val print_expr : ?show_type:bool -> expr -> string
val print_instr : ?show_type:bool -> instr -> string
val print : ?show_type:bool -> t -> string list
val print_program : ?css:string -> ?js:string -> ?info:JPrintHtml.info -> t JProgram.program -> string -> unit
val print_class : ?css:string -> ?js:string -> ?info:JPrintHtml.info -> t Javalib_pack.Javalib.interface_or_class -> string -> unit
module PluginPrinter : sig ... end
type constructor_folding_mode =
  1. | FoldOrFail
  2. | FoldIfPossible
  3. | DoNotFold
val transform : ?bcv:bool -> ?ch_link:bool -> ?almost_ssa:bool -> ?folding:constructor_folding_mode -> ?formula:bool -> ?formula_cmd:Javalib_pack.JBasics.class_method_signature list -> Javalib_pack.JCode.jcode Javalib_pack.Javalib.concrete_method -> Javalib_pack.JCode.jcode -> t
val resolve_all_fields : t JProgram.program -> t JProgram.program
val get_callgraph : t JProgram.program -> JProgram.callgraph
exception NonemptyStack_backward_jump
exception Subroutine
exception InvalidClassFile
OCaml

Innovation. Community. Security.