module Code:sig..end
val remove_dead_code : ('a, 'b) ControlFlow.graph -> ('a, 'b) ControlFlow.graphremove_dead_code g returns g without the vertices that cannot be
reached from the root.val optimize_jumps : ('a, 'b) ControlFlow.graph -> ('a, 'b) ControlFlow.graphoptimize_jumps g returns g except that empty nodes (i. e.
with no instruction) have been short-circuited (but not removed,
possibly producing dead code).val optimize_switches : ('a, 'b) ControlFlow.graph -> ('a, 'b) ControlFlow.graphoptimize_switches g returns g except that lookup switches are
replaced with table switches if it shorter.type flattening_infos
val offset_of_flattening_infos : flattening_infos -> int32val flattened_graph : (int32 * 'a, 'b) ControlFlow.graph ->
(flattening_infos * 'a, 'b) ControlFlow.graphint32 labels are vertices offsets.val flatten_graph : (int32 * Utils.u2 list, 'b) ControlFlow.graph ->
Instruction.t list * (Utils.u2 * Utils.u2) list *
Attribute.exception_table_element list *
(flattening_infos * int32, 'b) ControlFlow.graphflatten_graph g returns a l, t, e, g' quadruple where g' is g
labeled with code offsets corresponding to the instruction list l.
t is the data for the LineNumberTable attribute, and e is the
exception table for l.val optimize_graph : ('a * Utils.u2 list, 'b) ControlFlow.graph ->
('a * Utils.u2 list, 'b) ControlFlow.graphoptimize_graph g returns an optimized version of graph g.
It is equivalent to remove_dead_code (optimize_switches (optimize_jumps (Peephole.optimize_graph g))).val compute_stack_infos : Name.for_class ->
StackState.instance StackState.unifier ->
(flattening_infos * 'a, 'b) ControlFlow.graph ->
StackState.t -> Utils.u2 * Utils.u2 * Attribute.stack_map_frame listcompute_stack_infos cn u g s returns max_stack, max_locals, stack_map_frame
for the method whose control flow graph g,initial stack state s,
and enclosing class cn are passed. The function u is used to
unify stack states.
Raises StackState.Exception if the passed instruction lists
associated with the graph vertices are incoherent.