Module Js_of_ocaml_compiler__Code
module Addr : sig ... endmodule DebugAddr : sig ... endmodule Var : sig ... endtype cont= Addr.t * Var.t listtype prim=|Vectlength|Array_get|Extern of string|Not|IsInt|Eq|Neq|Lt|Le|Ulttype array_or_not=|Array|NotArray|Unknowntype constant=|String of string|IString of string|Float of float|Float_array of float array|Int64 of int64|Tuple of int * constant array * array_or_not|Int of int32
type prim_arg=|Pv of Var.t|Pc of constanttype expr=|Apply of Var.t * Var.t list * bool|Block of int * Var.t array * array_or_not|Field of Var.t * int|Closure of Var.t list * cont|Constant of constant|Prim of prim * prim_arg listtype instr=|Let of Var.t * expr|Set_field of Var.t * int * Var.t|Offset_ref of Var.t * int|Array_set of Var.t * Var.t * Var.ttype last=|Return of Var.t|Raise of Var.t * [ `Normal | `Notrace | `Reraise ]|Stop|Branch of cont|Cond of Var.t * cont * cont|Switch of Var.t * cont array * cont array|Pushtrap of cont * Var.t * cont * Addr.Set.t|Poptrap of cont * Addr.ttype block={params : Var.t list;handler : (Var.t * cont) option;body : instr list;branch : last;}type program={start : Addr.t;blocks : block Addr.Map.t;free_pc : Addr.t;}
module Print : sig ... endtype 'c fold_blocs= block Addr.Map.t -> Addr.t -> (Addr.t -> 'c -> 'c) -> 'c -> 'ctype fold_blocs_poly={fold : a. 'a fold_blocs;}
val fold_closures : program -> (Var.t option -> Var.t list -> cont -> 'd -> 'd) -> 'd -> 'dval fold_children : 'c fold_blocsval traverse : fold_blocs_poly -> (Addr.t -> 'c -> 'c) -> Addr.t -> block Addr.Map.t -> 'c -> 'cval prepend : program -> instr list -> programval empty : programval eq : program -> program -> boolval invariant : program -> unit