sig
type return_kind = Reference | Double | Float | Integer | Long | Void
type jump_kind =
References_equal
| References_not_equal
| Integers_equal
| Integers_greater_or_equal
| Integers_greater
| Integers_lower_or_equal
| Integers_lower
| Integers_not_equal
| Integer_equal_zero
| Integer_greater_or_equal_zero
| Integer_greater_zero
| Integer_lower_or_equal_zero
| Integer_lower_zero
| Integer_not_equal_zero
| Reference_null
| Reference_not_null
val nb_args_of_jump_kind : ControlFlow.jump_kind -> int
val opposite_jump_kind : ControlFlow.jump_kind -> ControlFlow.jump_kind
type switch_kind = Table of Utils.s4 * Utils.s4 | Lookup of Utils.s4 list
val nb_args_of_switch_kind : ControlFlow.switch_kind -> int
type error =
Unsupported_instruction of string
| Vertex_not_in_graph
| Invalid_switch_edge
| Empty_graph
| Cannot_remove_root
exception Exception of ControlFlow.error
val string_of_error : ControlFlow.error -> string
type for_instruction =
Next_instruction
| Unconditional_jump of Utils.s4
| Conditional_jump of ControlFlow.jump_kind * Utils.s4
| Switch_jump of (ControlFlow.switch_kind * Utils.s4 * Utils.s4 list)
| Called_method
| Calling_method of ControlFlow.return_kind
| Exception_handler
val for_instruction : Instruction.t -> ControlFlow.for_instruction
type 'a vertex
type 'a edge =
Unconditional_edge of 'a
| Conditional_edge of ControlFlow.jump_kind * 'a * 'a
| Switch_edge of (ControlFlow.switch_kind * 'a * 'a list)
type ('a, 'b) graph
val equal_vertex : 'a ControlFlow.vertex -> 'a ControlFlow.vertex -> bool
val equal_edge :
('a -> 'a -> bool) -> 'a ControlFlow.edge -> 'a ControlFlow.edge -> bool
val make_graph :
Instruction.t list ->
'a -> ('a, 'b) ControlFlow.graph * 'a ControlFlow.vertex
val contains_vertex :
('a, 'b) ControlFlow.graph -> 'a ControlFlow.vertex -> bool
val add_vertex :
('a, 'b) ControlFlow.graph ->
Instruction.t list ->
'a -> ('a, 'b) ControlFlow.graph * 'a ControlFlow.vertex
val add_edge :
('a, 'b) ControlFlow.graph ->
'a ControlFlow.vertex ->
'a ControlFlow.vertex ControlFlow.edge ->
'b -> ('a, 'b) ControlFlow.graph
val add_handler :
('a, 'b) ControlFlow.graph ->
'a ControlFlow.vertex ->
Name.for_class option ->
'a ControlFlow.vertex -> 'b -> ('a, 'b) ControlFlow.graph
val change_root :
('a, 'b) ControlFlow.graph ->
'a ControlFlow.vertex -> ('a, 'b) ControlFlow.graph
val remove_vertex :
('a, 'b) ControlFlow.graph ->
'a ControlFlow.vertex -> ('a, 'b) ControlFlow.graph
val remove_vertices :
('a, 'b) ControlFlow.graph ->
'a ControlFlow.vertex list -> ('a, 'b) ControlFlow.graph
val remove_edge :
('a, 'b) ControlFlow.graph ->
'a ControlFlow.vertex -> ('a, 'b) ControlFlow.graph
val remove_handler :
('a, 'b) ControlFlow.graph ->
'a ControlFlow.vertex ->
Name.for_class option ->
'a ControlFlow.vertex -> ('a, 'b) ControlFlow.graph
val root_of_graph : ('a, 'b) ControlFlow.graph -> 'a ControlFlow.vertex
val instructions_of_vertex : 'a ControlFlow.vertex -> Instruction.t list
val label_of_vertex : 'a ControlFlow.vertex -> 'a
val edge_of_vertex :
('a, 'b) ControlFlow.graph ->
'a ControlFlow.vertex -> 'b * 'a ControlFlow.vertex ControlFlow.edge
val predecessors_of_vertex :
('a, 'b) ControlFlow.graph ->
'a ControlFlow.vertex -> 'a ControlFlow.vertex list
val handlers_of_vertex :
('a, 'b) ControlFlow.graph ->
'a ControlFlow.vertex ->
('b * Name.for_class option * 'a ControlFlow.vertex) list
val iter_vertices :
('a ControlFlow.vertex -> unit) -> ('a, 'b) ControlFlow.graph -> unit
val iter_edges :
('a ControlFlow.vertex ->
'b -> 'a ControlFlow.vertex ControlFlow.edge -> unit) ->
('a, 'b) ControlFlow.graph -> unit
val iter_handlers :
('a ControlFlow.vertex ->
'b -> Name.for_class option -> 'a ControlFlow.vertex -> unit) ->
('a, 'b) ControlFlow.graph -> unit
val fold_vertices :
('a ControlFlow.vertex -> 'c -> 'c) ->
('a, 'b) ControlFlow.graph -> 'c -> 'c
val fold_edges :
('a ControlFlow.vertex ->
'b -> 'a ControlFlow.vertex ControlFlow.edge -> 'c -> 'c) ->
('a, 'b) ControlFlow.graph -> 'c -> 'c
val fold_handlers :
('a ControlFlow.vertex ->
'b -> Name.for_class option -> 'a ControlFlow.vertex -> 'c -> 'c) ->
('a, 'b) ControlFlow.graph -> 'c -> 'c
val map_graph :
('a -> Instruction.t list -> 'c * Instruction.t list) ->
('b -> 'a ControlFlow.vertex ControlFlow.edge -> 'd) ->
('b -> Name.for_class option -> 'a ControlFlow.vertex -> 'd) ->
('a, 'b) ControlFlow.graph -> ('c, 'd) ControlFlow.graph
val identity : ('a, 'b) ControlFlow.graph -> ('a, 'b) ControlFlow.graph
val to_plain_graph :
('a -> Utils.UTF8.t) ->
('b -> Utils.UTF8.t) -> ('a, 'b) ControlFlow.graph -> Graph.t
type line_mapper = Utils.u2 -> Utils.u2
val dummy_mapper : ControlFlow.line_mapper
val line_number_table_mapper :
(Utils.u2 * Utils.u2) list -> ControlFlow.line_mapper
val graph_of_instructions :
?line_mapper:ControlFlow.line_mapper ->
Instruction.t list ->
Attribute.exception_table_element list ->
(int32 * Utils.u2 list, unit) ControlFlow.graph
end