sig
type offset = int32
module IM :
sig
type key = Int32.t
type +'a t
val empty : 'a t
val is_empty : 'a t -> bool
val mem : key -> 'a t -> bool
val add : key -> 'a -> 'a t -> 'a t
val singleton : key -> 'a -> 'a t
val remove : key -> 'a t -> 'a t
val merge :
(key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> 'c t
val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
val iter : (key -> 'a -> unit) -> 'a t -> unit
val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
val for_all : (key -> 'a -> bool) -> 'a t -> bool
val exists : (key -> 'a -> bool) -> 'a t -> bool
val filter : (key -> 'a -> bool) -> 'a t -> 'a t
val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
val cardinal : 'a t -> int
val bindings : 'a t -> (key * 'a) list
val min_binding : 'a t -> key * 'a
val max_binding : 'a t -> key * 'a
val choose : 'a t -> key * 'a
val split : key -> 'a t -> 'a t * 'a option * 'a t
val find : key -> 'a t -> 'a
val map : ('a -> 'b) -> 'a t -> 'b t
val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
end
type instr = Instr.opcode * Instr.operand list
and operand =
OPR_CONST of int64
| OPR_REGISTER of int
| OPR_INDEX of int
| OPR_OFFSET of Instr.offset
and opcode =
OP_NOP
| OP_MOVE
| OP_MOVE_FROM16
| OP_MOVE_16
| OP_MOVE_WIDE
| OP_MOVE_WIDE_FROM16
| OP_MOVE_WIDE_16
| OP_MOVE_OBJECT
| OP_MOVE_OBJECT_FROM16
| OP_MOVE_OBJECT_16
| OP_MOVE_RESULT
| OP_MOVE_RESULT_WIDE
| OP_MOVE_RESULT_OBJECT
| OP_MOVE_EXCEPTION
| OP_RETURN_VOID
| OP_RETURN
| OP_RETURN_WIDE
| OP_RETURN_OBJECT
| OP_CONST_4
| OP_CONST_16
| OP_CONST
| OP_CONST_HIGH16
| OP_CONST_WIDE_16
| OP_CONST_WIDE_32
| OP_CONST_WIDE
| OP_CONST_WIDE_HIGH16
| OP_CONST_STRING
| OP_CONST_STRING_JUMBO
| OP_CONST_CLASS
| OP_MONITOR_ENTER
| OP_MONITOR_EXIT
| OP_CHECK_CAST
| OP_INSTANCE_OF
| OP_ARRAY_LENGTH
| OP_NEW_INSTANCE
| OP_NEW_ARRAY
| OP_FILLED_NEW_ARRAY
| OP_FILLED_NEW_ARRAY_RANGE
| OP_FILL_ARRAY_DATA
| OP_THROW
| OP_GOTO
| OP_GOTO_16
| OP_GOTO_32
| OP_PACKED_SWITCH
| OP_SPARSE_SWITCH
| OP_CMPL_FLOAT
| OP_CMPG_FLOAT
| OP_CMPL_DOUBLE
| OP_CMPG_DOUBLE
| OP_CMP_LONG
| OP_IF_EQ
| OP_IF_NE
| OP_IF_LT
| OP_IF_GE
| OP_IF_GT
| OP_IF_LE
| OP_IF_EQZ
| OP_IF_NEZ
| OP_IF_LTZ
| OP_IF_GEZ
| OP_IF_GTZ
| OP_IF_LEZ
| OP_AGET
| OP_AGET_WIDE
| OP_AGET_OBJECT
| OP_AGET_BOOLEAN
| OP_AGET_BYTE
| OP_AGET_CHAR
| OP_AGET_SHORT
| OP_APUT
| OP_APUT_WIDE
| OP_APUT_OBJECT
| OP_APUT_BOOLEAN
| OP_APUT_BYTE
| OP_APUT_CHAR
| OP_APUT_SHORT
| OP_IGET
| OP_IGET_WIDE
| OP_IGET_OBJECT
| OP_IGET_BOOLEAN
| OP_IGET_BYTE
| OP_IGET_CHAR
| OP_IGET_SHORT
| OP_IPUT
| OP_IPUT_WIDE
| OP_IPUT_OBJECT
| OP_IPUT_BOOLEAN
| OP_IPUT_BYTE
| OP_IPUT_CHAR
| OP_IPUT_SHORT
| OP_SGET
| OP_SGET_WIDE
| OP_SGET_OBJECT
| OP_SGET_BOOLEAN
| OP_SGET_BYTE
| OP_SGET_CHAR
| OP_SGET_SHORT
| OP_SPUT
| OP_SPUT_WIDE
| OP_SPUT_OBJECT
| OP_SPUT_BOOLEAN
| OP_SPUT_BYTE
| OP_SPUT_CHAR
| OP_SPUT_SHORT
| OP_INVOKE_VIRTUAL
| OP_INVOKE_SUPER
| OP_INVOKE_DIRECT
| OP_INVOKE_STATIC
| OP_INVOKE_INTERFACE
| OP_INVOKE_VIRTUAL_RANGE
| OP_INVOKE_SUPER_RANGE
| OP_INVOKE_DIRECT_RANGE
| OP_INVOKE_STATIC_RANGE
| OP_INVOKE_INTERFACE_RANGE
| OP_NEG_INT
| OP_NOT_INT
| OP_NEG_LONG
| OP_NOT_LONG
| OP_NEG_FLOAT
| OP_NEG_DOUBLE
| OP_INT_TO_LONG
| OP_INT_TO_FLOAT
| OP_INT_TO_DOUBLE
| OP_LONG_TO_INT
| OP_LONG_TO_FLOAT
| OP_LONG_TO_DOUBLE
| OP_FLOAT_TO_INT
| OP_FLOAT_TO_LONG
| OP_FLOAT_TO_DOUBLE
| OP_DOUBLE_TO_INT
| OP_DOUBLE_TO_LONG
| OP_DOUBLE_TO_FLOAT
| OP_INT_TO_BYTE
| OP_INT_TO_CHAR
| OP_INT_TO_SHORT
| OP_ADD_INT
| OP_SUB_INT
| OP_MUL_INT
| OP_DIV_INT
| OP_REM_INT
| OP_AND_INT
| OP_OR_INT
| OP_XOR_INT
| OP_SHL_INT
| OP_SHR_INT
| OP_USHR_INT
| OP_ADD_LONG
| OP_SUB_LONG
| OP_MUL_LONG
| OP_DIV_LONG
| OP_REM_LONG
| OP_AND_LONG
| OP_OR_LONG
| OP_XOR_LONG
| OP_SHL_LONG
| OP_SHR_LONG
| OP_USHR_LONG
| OP_ADD_FLOAT
| OP_SUB_FLOAT
| OP_MUL_FLOAT
| OP_DIV_FLOAT
| OP_REM_FLOAT
| OP_ADD_DOUBLE
| OP_SUB_DOUBLE
| OP_MUL_DOUBLE
| OP_DIV_DOUBLE
| OP_REM_DOUBLE
| OP_ADD_INT_2ADDR
| OP_SUB_INT_2ADDR
| OP_MUL_INT_2ADDR
| OP_DIV_INT_2ADDR
| OP_REM_INT_2ADDR
| OP_AND_INT_2ADDR
| OP_OR_INT_2ADDR
| OP_XOR_INT_2ADDR
| OP_SHL_INT_2ADDR
| OP_SHR_INT_2ADDR
| OP_USHR_INT_2ADDR
| OP_ADD_LONG_2ADDR
| OP_SUB_LONG_2ADDR
| OP_MUL_LONG_2ADDR
| OP_DIV_LONG_2ADDR
| OP_REM_LONG_2ADDR
| OP_AND_LONG_2ADDR
| OP_OR_LONG_2ADDR
| OP_XOR_LONG_2ADDR
| OP_SHL_LONG_2ADDR
| OP_SHR_LONG_2ADDR
| OP_USHR_LONG_2ADDR
| OP_ADD_FLOAT_2ADDR
| OP_SUB_FLOAT_2ADDR
| OP_MUL_FLOAT_2ADDR
| OP_DIV_FLOAT_2ADDR
| OP_REM_FLOAT_2ADDR
| OP_ADD_DOUBLE_2ADDR
| OP_SUB_DOUBLE_2ADDR
| OP_MUL_DOUBLE_2ADDR
| OP_DIV_DOUBLE_2ADDR
| OP_REM_DOUBLE_2ADDR
| OP_ADD_INT_LIT16
| OP_RSUB_INT
| OP_MUL_INT_LIT16
| OP_DIV_INT_LIT16
| OP_REM_INT_LIT16
| OP_AND_INT_LIT16
| OP_OR_INT_LIT16
| OP_XOR_INT_LIT16
| OP_ADD_INT_LIT8
| OP_RSUB_INT_LIT8
| OP_MUL_INT_LIT8
| OP_DIV_INT_LIT8
| OP_REM_INT_LIT8
| OP_AND_INT_LIT8
| OP_OR_INT_LIT8
| OP_XOR_INT_LIT8
| OP_SHL_INT_LIT8
| OP_SHR_INT_LIT8
| OP_USHR_INT_LIT8
val instr_to_string : Instr.instr -> string
val opr_to_string : Instr.operand -> string
val op_to_string : Instr.opcode -> string
val hx_to_op_and_size : int -> Instr.opcode * int
val hx_to_op : int -> Instr.opcode
val op_to_hx_and_size : Instr.opcode -> int * int
val op_to_hx : Instr.opcode -> int
type link_sort =
STRING_IDS
| TYPE_IDS
| FIELD_IDS
| METHOD_IDS
| OFFSET
| NOT_LINK
val access_link : Instr.opcode -> Instr.link_sort
val low_reg : Instr.opcode -> int
val get_argv : Instr.instr -> Instr.operand list
val make_instr : Instr.opcode -> int list -> Instr.instr
val instr_to_bytes : int -> Instr.instr -> char list
val new_const : int -> int -> Instr.instr
val new_const_id : int -> int -> int -> Instr.instr
val new_move : int -> int -> int -> Instr.instr
val new_obj : int -> int -> Instr.instr
val new_arr : int -> int -> int -> Instr.instr
val new_arr_op : int -> int list -> Instr.instr
val new_stt_fld : int -> int -> int -> Instr.instr
val new_invoke : int -> int list -> Instr.instr
val new_move_result : int -> int -> Instr.instr
val new_return : int -> int option -> Instr.instr
val rv : Instr.instr
end
Web Accessibility