From 77a5e1473af675ae107fc86c415db7215fb536ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Vouillon?= Date: Mon, 28 Apr 2025 11:47:37 +0200 Subject: [PATCH 1/9] Add List.find_index --- compiler/lib/stdlib.ml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/compiler/lib/stdlib.ml b/compiler/lib/stdlib.ml index 1cf5ea7465..560aa64771 100644 --- a/compiler/lib/stdlib.ml +++ b/compiler/lib/stdlib.ml @@ -201,6 +201,14 @@ module List = struct let append l1 l2 = count_append l1 l2 0 [@@if ocaml_version < (5, 1, 0)] + let find_index p = + let rec aux i = function + | [] -> None + | a :: l -> if p a then Some i else aux (i + 1) l + in + aux 0 + [@@if ocaml_version < (5, 1, 0)] + let group l ~f = let rec loop (l : 'a list) (this_group : 'a list) (acc : 'a list list) : 'a list list = From 034aa7482f19e58583a5d502b3d5c175daa4bec1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Vouillon?= Date: Wed, 30 Apr 2025 20:01:14 +0200 Subject: [PATCH 2/9] Tuple unboxing: tests --- compiler/tests-compiler/dune.inc | 15 ++++ compiler/tests-compiler/tuple_unboxing.ml | 94 +++++++++++++++++++++++ 2 files changed, 109 insertions(+) create mode 100644 compiler/tests-compiler/tuple_unboxing.ml diff --git a/compiler/tests-compiler/dune.inc b/compiler/tests-compiler/dune.inc index d5eab92d0a..b3c6b37ec0 100644 --- a/compiler/tests-compiler/dune.inc +++ b/compiler/tests-compiler/dune.inc @@ -944,6 +944,21 @@ (preprocess (pps ppx_expect))) +(library + ;; compiler/tests-compiler/tuple_unboxing.ml + (name tuple_unboxing_15) + (enabled_if true) + (modules tuple_unboxing) + (libraries js_of_ocaml_compiler unix str jsoo_compiler_expect_tests_helper) + (inline_tests + (enabled_if true) + (deps + (file %{project_root}/compiler/bin-js_of_ocaml/js_of_ocaml.exe) + (file %{project_root}/compiler/bin-jsoo_minify/jsoo_minify.exe))) + (flags (:standard -open Jsoo_compiler_expect_tests_helper)) + (preprocess + (pps ppx_expect))) + (library ;; compiler/tests-compiler/unix_fs.ml (name unix_fs_15) diff --git a/compiler/tests-compiler/tuple_unboxing.ml b/compiler/tests-compiler/tuple_unboxing.ml new file mode 100644 index 0000000000..50e58437e0 --- /dev/null +++ b/compiler/tests-compiler/tuple_unboxing.ml @@ -0,0 +1,94 @@ +open Util + +let%expect_test _ = + let program = + compile_and_parse + ~flags:[ "--no-inline" ] + {| + let f (x, y) = x + y + let x = f(1, 2) + |} + in + print_program program; + [%expect + {| + (function(globalThis){ + "use strict"; + var runtime = globalThis.jsoo_runtime, _a_ = [0, 1, 2]; + function f(param){var y = param[2], x = param[1]; return x + y | 0;} + var x = f(_a_), Test = [0, f, x]; + runtime.caml_register_global(1, Test, "Test"); + return; + } + (globalThis)); + //end |}] + +let%expect_test _ = + let program = + compile_and_parse + ~flags:[ "--no-inline" ] + {| + type t = {x : int; y : int} + let f b y t = let {x; _} = if b then {x=1; y} else t in x + let g b t = let {x; _} = if b then {x=1; y=1} else t in x + |} + in + print_program program; + [%expect + {| + (function(globalThis){ + "use strict"; + var runtime = globalThis.jsoo_runtime, _a_ = [0, 1, 1]; + function f(b, y, t){var match = b ? [0, 1] : t, x = match[1]; return x;} + function g(b, t){var match = b ? _a_ : t, x = match[1]; return x;} + var Test = [0, f, g]; + runtime.caml_register_global(1, Test, "Test"); + return; + } + (globalThis)); + //end |}] + +let%expect_test _ = + let program = + compile_and_parse + ~flags:[ "--no-inline" ] + ~debug:false + {| + type t = C | D | E + type s = A of int | B of int + let foo c a b = + let m = + match c with + | C -> A a + | D -> B b + | E -> B (b + 1) + in + match m with + | A x -> x + | B y -> y + |} + in + print_program program; + [%expect + {| + (function(globalThis){ + "use strict"; + var + runtime = globalThis.jsoo_runtime, + Test = + [0, + function(_c_, _b_, _a_){ + switch(_c_){ + case 0: + var _d_ = [0, _b_]; break; + case 1: + var _d_ = [1, _a_]; break; + default: var _d_ = [1, _a_ + 1 | 0]; + } + return _d_[1]; + }]; + runtime.caml_register_global(0, Test, "Test"); + return; + } + (globalThis)); + //end |}] From 2a2dd52c3000ef58393fd6fd25065f40af369834 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Vouillon?= Date: Fri, 25 Apr 2025 10:59:46 +0200 Subject: [PATCH 3/9] Unboxing of function and block parameters --- compiler/lib/driver.ml | 1 + compiler/lib/unboxing.ml | 517 ++++++++++++++++++++++++++++++++++++++ compiler/lib/unboxing.mli | 20 ++ 3 files changed, 538 insertions(+) create mode 100644 compiler/lib/unboxing.ml create mode 100644 compiler/lib/unboxing.mli diff --git a/compiler/lib/driver.ml b/compiler/lib/driver.ml index e6a6eb615e..469492fc40 100644 --- a/compiler/lib/driver.ml +++ b/compiler/lib/driver.ml @@ -218,6 +218,7 @@ let round profile : 'a -> 'a = +> tailcall +> Ref_unboxing.f +> (flow +> specialize +> eval +> fst) + +> Unboxing.f +> inline profile +> phi +> deadcode diff --git a/compiler/lib/unboxing.ml b/compiler/lib/unboxing.ml new file mode 100644 index 0000000000..172e6e233e --- /dev/null +++ b/compiler/lib/unboxing.ml @@ -0,0 +1,517 @@ +(* Js_of_ocaml compiler + * http://www.ocsigen.org/js_of_ocaml/ + * Copyright (C) 2025 Jérome Vouillon + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, with linking exception; + * either version 2.1 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *) + +(* +Unboxing wrappers should be inlined + +Less aggressive variant: only apply if one branch / call site has an +explicit tuple argument + +Also look at function calls to see whether we know more about a parameter. +*) + +open! Stdlib + +let debug = Debug.find "unboxing" + +let times = Debug.find "times" + +let show_stats = Debug.find "stats" + +open Code + +type stats = + { mutable continuations : int + ; mutable call_sites : int + } + +type loc = + | Block of Addr.t + | Closure of Var.t * Var.t list + +type tuple = + { size : int + ; kind : field_type + ; loc : loc + ; start_pc : Addr.t + ; closure_pc : Addr.t option + ; mutable needed : IntSet.t + } + +let is_unboxing_wrapper p pc = + let block = Addr.Map.find pc p.blocks in + let rec check instrs = + match instrs with + | Let (_, Field _) :: rem -> check rem + | [ Let (x, Apply _) ] -> ( + match block.branch with + | Return y -> Var.equal x y + | _ -> false) + | _ -> false + in + check block.body + +let find_candidates p = + let unboxed_floats = + match Config.target () with + | `JavaScript -> false + | `Wasm -> false + in + let tbl = Var.Hashtbl.create 16 in + let visited = BitSet.create' p.free_pc in + let allowed_access kind = + match kind with + | Non_float -> true + | Float -> unboxed_floats + in + let rec traverse closure_pc start_pc pc params = + if not (BitSet.mem visited pc) + then ( + BitSet.set visited pc; + let block = Addr.Map.find pc p.blocks in + let params = + List.fold_left + ~f:(fun s x -> Var.Map.add x (Block pc) s) + ~init:params + block.params + in + List.iter + ~f:(fun i -> + match i with + | Let (_, Field (x, n, kind)) when Var.Map.mem x params && allowed_access kind + -> + let size = n + 1 in + let tuple = + try Var.Hashtbl.find tbl x + with Not_found -> + { size = 0 + ; loc = Var.Map.find x params + ; start_pc + ; closure_pc + ; kind + ; needed = IntSet.empty + } + in + if tuple.size < size then Var.Hashtbl.replace tbl x { tuple with size } + | Let (y, Closure (params, (pc', args), _)) when not (is_unboxing_wrapper p pc') + -> + traverse + (Some pc) + pc' + pc' + (List.fold_left + ~f:(fun s x -> Var.Map.remove x s) + ~init: + (List.fold_left + ~f:(fun s x -> Var.Map.add x (Closure (y, params)) s) + ~init:Var.Map.empty + params) + args) + | _ -> ()) + block.body; + match block.branch with + | Branch (pc', _) -> traverse closure_pc start_pc pc' params + | _ -> + Code.fold_children + p.blocks + pc + (fun pc' () -> traverse closure_pc start_pc pc' Var.Map.empty) + ()) + in + traverse None p.start p.start Var.Map.empty; + tbl + +let check_tuple_accesses p tbl = + let discard x = Var.Hashtbl.remove tbl x in + let visited = BitSet.create' p.free_pc in + let rec traverse pc = + if not (BitSet.mem visited pc) + then ( + BitSet.set visited pc; + let block = Addr.Map.find pc p.blocks in + List.iter + ~f:(fun i -> + match i with + | Let (_, Field (x, n, _)) -> + if Var.Hashtbl.mem tbl x + then + let tuple = Var.Hashtbl.find tbl x in + if n < tuple.size + then tuple.needed <- IntSet.add n tuple.needed + else discard x + | Let (_, Closure (_, (pc', _), _)) -> traverse pc' + | Assign (x, y) -> + discard x; + discard y + | _ -> Freevars.iter_instr_free_vars discard i) + block.body; + Freevars.iter_last_free_var discard block.branch; + Code.fold_children p.blocks pc (fun pc' () -> traverse pc') ()) + in + Var.Hashtbl.iter + (fun _ tuple -> + traverse + (match tuple.loc with + | Block pc -> pc + | Closure _ -> tuple.start_pc)) + tbl + +let check_call_sites p tbl = + let relevant_closures = + Var.Hashtbl.fold + (fun _ tuple s -> + match tuple.loc with + | Block _ -> s + | Closure (x, _) -> Var.Set.add x s) + tbl + Var.Set.empty + in + let visited = BitSet.create' p.free_pc in + let rec traverse pc state = + if BitSet.mem visited pc + then state + else ( + BitSet.set visited pc; + let block = Addr.Map.find pc p.blocks in + let state = + List.fold_left + ~f:(fun state i -> + match i with + | Let (_, Apply { f; exact = true; _ }) when Var.Set.mem f relevant_closures + -> + let closures, locations = state in + Var.Set.add f closures, Addr.Set.add pc locations + | Let (_, Closure (_, (pc', _), _)) -> traverse pc' state + | _ -> state) + ~init:state + block.body + in + Code.fold_children p.blocks pc traverse state) + in + let closures, locations = + Var.Hashtbl.fold + (fun _ tuple state -> + match tuple.loc, tuple.closure_pc with + | Block _, _ -> state + | Closure _, Some pc -> traverse pc state + | Closure _, None -> assert false) + tbl + (Var.Set.empty, Addr.Set.empty) + in + Var.Hashtbl.filter_map_inplace + (fun _ tuple -> + match tuple.loc with + | Closure (x, _) when not (Var.Set.mem x closures) -> None + | _ -> Some tuple) + tbl; + locations + +let rewrite_blocks p tbl = + let ops = Int.Hashtbl.create 16 in + let blocks = + Var.Hashtbl.fold + (fun x tuple blocks -> + match tuple.loc with + | Closure _ -> blocks + | Block pc -> + Addr.Map.update + pc + (fun block -> + match block with + | None -> assert false + | Some block -> + let vars = Array.init tuple.size ~f:(fun _ -> Var.fresh ()) in + let i = List.find_index ~f:(fun y -> Var.equal x y) block.params in + Int.Hashtbl.add ops pc (Option.get i, tuple.size, tuple.kind); + Some + { block with + params = + Array.to_list vars + @ List.filter ~f:(fun y -> not (Var.equal x y)) block.params + ; body = + Let + ( x + , Block + ( (match tuple.kind with + | Float -> 254 + | Non_float -> 0) + , vars + , NotArray + , Immutable ) ) + :: block.body + }) + blocks) + tbl + p.blocks + in + { p with blocks }, ops + +let inserted_block ops (pc, args) = + let l = Int.Hashtbl.find_all ops pc in + let body, args' = + List.fold_right + ~f:(fun (i, n, kind) (body, args) -> + let x = List.nth args i in + let args = List.filteri ~f:(fun i' _ -> i <> i') args in + let vars = List.init ~len:n ~f:(fun _ -> Var.fresh ()) in + let body = List.mapi ~f:(fun i y -> Let (y, Field (x, i, kind))) vars @ body in + body, vars @ args) + l + ~init:([], args) + in + { params = List.map ~f:(fun _ -> Var.fresh ()) args; body; branch = Branch (pc, args') } + +let rewrite_args lst args = + List.fold_right + ~f:(fun (i, needed, kind) (code, args) -> + let x = List.nth args i in + let args = List.filteri ~f:(fun i' _ -> i <> i') args in + let vars = IntSet.fold (fun i vars -> (i, Var.fresh ()) :: vars) needed [] in + let code = List.map ~f:(fun (i, y) -> Let (y, Field (x, i, kind))) vars @ code in + code, List.rev_map ~f:snd vars @ args) + lst + ~init:([], args) + +let rewrite_continuations stats p tbl ops closure_ops locations = + let conts = Poly.Hashtbl.create 16 in + let free_pc = ref p.free_pc in + let new_blocks = ref [] in + let add_block block = + let pc = !free_pc in + incr free_pc; + new_blocks := (pc, block) :: !new_blocks; + pc + in + let rewrite ((pc, args) as cont) = + if Int.Hashtbl.mem ops pc + then ( + try Hashtbl.find conts cont + with Not_found -> + stats.continuations <- stats.continuations + 1; + let pc' = add_block (inserted_block ops cont) in + let cont' = pc', args in + Hashtbl.add conts cont cont'; + cont') + else cont + in + let rewritten = BitSet.create' p.free_pc in + let rewrite_body body = + List.fold_right + ~f:(fun i rem -> + match i with + | Let (x, Apply { f; args; exact = true }) when Var.Hashtbl.mem closure_ops f -> + stats.call_sites <- stats.call_sites + 1; + let f', _, _, lst = Var.Hashtbl.find closure_ops f in + let code, args = rewrite_args lst args in + code @ (Let (x, Apply { f = f'; args; exact = true }) :: rem) + | Let (f, Closure (params, cont, loc)) -> ( + match Var.Hashtbl.find closure_ops f with + | f', params', body, lst -> + let pc' = + add_block { params = []; body; branch = Branch (rewrite cont) } + in + Let (f', Closure (params', (pc', []), loc)) + :: + (*ZZZ events *) + (let params'' = List.map ~f:(fun _ -> Var.fresh ()) params in + let pc'' = + let code, args'' = rewrite_args lst params'' in + let call = Apply { f = f'; args = args''; exact = true } in + let res = Var.fresh () in + add_block + { params = [] + ; body = code @ [ Let (res, call) ] + ; branch = Return res + } + in + Let (f, Closure (params'', (pc'', []), loc)) :: rem) + | exception Not_found -> Let (f, Closure (params, rewrite cont, loc)) :: rem) + | _ -> i :: rem) + body + ~init:[] + in + let rewrite_block pc blocks = + if BitSet.mem rewritten pc + then blocks + else ( + BitSet.set rewritten pc; + Addr.Map.update + pc + (fun block -> + match block with + | None -> assert false + | Some block -> + let body = + if + List.exists + ~f:(fun i -> + match i with + | Let (_, Closure _) -> true + | Let (_, Apply { f; exact = true; _ }) -> + Var.Hashtbl.mem closure_ops f + | _ -> false) + block.body + then rewrite_body block.body + else block.body + in + let branch = + match block.branch with + | Return _ | Raise _ | Stop -> block.branch + | Branch cont -> Branch (rewrite cont) + | Cond (x, cont, cont') -> Cond (x, rewrite cont, rewrite cont') + | Switch (x, l) -> Switch (x, Array.map ~f:rewrite l) + | Pushtrap (cont, x, cont') -> Pushtrap (rewrite cont, x, rewrite cont') + | Poptrap cont -> Poptrap (rewrite cont) + in + Some { block with body; branch }) + blocks) + in + let visited = BitSet.create' p.free_pc in + let rec traverse pc blocks = + if BitSet.mem visited pc + then blocks + else ( + BitSet.set visited pc; + let blocks = rewrite_block pc blocks in + Code.fold_children p.blocks pc (fun pc' blocks -> traverse pc' blocks) blocks) + in + let blocks = + Var.Hashtbl.fold + (fun _ tuple blocks -> + traverse + tuple.start_pc + (match tuple.closure_pc with + | None -> blocks + | Some pc -> rewrite_block pc blocks)) + tbl + p.blocks + in + let blocks = Addr.Set.fold rewrite_block locations blocks in + { p with + free_pc = !free_pc + ; blocks = + List.fold_left + ~f:(fun blocks (pc, block) -> Addr.Map.add pc block blocks) + ~init:blocks + !new_blocks + } + +let closure_operations tbl = + let closure_ops = Var.Hashtbl.create 16 in + Var.Hashtbl.iter + (fun x tuple -> + match tuple.loc with + | Block _ -> () + | Closure (f, params) -> + let f', params, body, lst = + try Var.Hashtbl.find closure_ops f + with Not_found -> Var.fork f, params, [], [] + in + let vars = + IntSet.fold + (fun i m -> IntMap.add i (Var.fresh ()) m) + tuple.needed + IntMap.empty + in + let i = List.find_index ~f:(fun y -> Var.equal x y) params in + let params = + List.map ~f:snd (IntMap.bindings vars) + @ List.filter ~f:(fun y -> not (Var.equal x y)) params + in + let c = Var.fresh () in + let body = + Let + ( c + , Constant + (match tuple.kind with + | Float -> Float (Int64.bits_of_float 0.) + | Non_float -> Int (Targetint.of_int_exn 0)) ) + :: Let + ( x + , Block + ( (match tuple.kind with + | Float -> 254 + | Non_float -> 0) + , Array.init + ~f:(fun i -> try IntMap.find i vars with Not_found -> c) + tuple.size + , NotArray + , Immutable ) ) + :: body + in + let lst = (Option.get i, tuple.needed, tuple.kind) :: lst in + Var.Hashtbl.replace closure_ops f (f', params, body, lst)) + tbl; + closure_ops + +let f p = + let stats = { continuations = 0; call_sites = 0 } in + let t = Timer.make () in + (* Find parameters that could be unboxed *) + let tbl = find_candidates p in + if debug () + then ( + Format.eprintf "Unboxing candidates:@."; + Var.Hashtbl.iter + (fun x { size; _ } -> Format.eprintf " %a: %d@." Var.print x size) + tbl); + (* Check that the tuples don't escape and that we don't access more + fields than expected *) + check_tuple_accesses p tbl; + (* Do not unbox function parameters when we are using too many of + their fields *) + Var.Hashtbl.filter_map_inplace + (fun _ tuple -> + match tuple.loc with + | Closure _ when IntSet.cardinal tuple.needed > 6 -> None + | _ -> Some tuple) + tbl; + (* Only unbox closure parameters when they have at least one known + call site *) + let locations = check_call_sites p tbl in + if debug () + then ( + Format.eprintf "Unboxed tuples:@."; + Var.Hashtbl.iter + (fun x { size; loc; needed; _ } -> + Format.eprintf + " %a: %d (%d) @@ %a@." + Var.print + x + size + (IntSet.cardinal needed) + (fun f loc -> + match loc with + | Block pc -> Format.fprintf f "%d" pc + | Closure (y, _) -> Format.fprintf f "%a" Var.print y) + loc) + tbl); + let p, ops = rewrite_blocks p tbl in + let closure_ops = closure_operations tbl in + let p = rewrite_continuations stats p tbl ops closure_ops locations in + if times () then Format.eprintf " tuple unboxing: %a@." Timer.print t; + if show_stats () + then + Format.eprintf + "Stats - tuple unboxing: %d blocks, %d continuations, %d functions, %d call sites@." + (Int.Hashtbl.length ops) + stats.continuations + (Var.Hashtbl.length closure_ops) + stats.call_sites; + p diff --git a/compiler/lib/unboxing.mli b/compiler/lib/unboxing.mli new file mode 100644 index 0000000000..60dd5bc570 --- /dev/null +++ b/compiler/lib/unboxing.mli @@ -0,0 +1,20 @@ +(* Js_of_ocaml compiler + * http://www.ocsigen.org/js_of_ocaml/ + * Copyright (C) 2025 Jérome Vouillon + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, with linking exception; + * either version 2.1 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *) + +val f : Code.program -> Code.program From cdbe68faf4d4045413dbcfdee6d17996535cdd09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Vouillon?= Date: Wed, 30 Apr 2025 20:06:12 +0200 Subject: [PATCH 4/9] Update tests --- compiler/tests-compiler/tuple_unboxing.ml | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/compiler/tests-compiler/tuple_unboxing.ml b/compiler/tests-compiler/tuple_unboxing.ml index 50e58437e0..3040351ec4 100644 --- a/compiler/tests-compiler/tuple_unboxing.ml +++ b/compiler/tests-compiler/tuple_unboxing.ml @@ -15,8 +15,9 @@ let%expect_test _ = (function(globalThis){ "use strict"; var runtime = globalThis.jsoo_runtime, _a_ = [0, 1, 2]; - function f(param){var y = param[2], x = param[1]; return x + y | 0;} - var x = f(_a_), Test = [0, f, x]; + function f$0(x, y){return x + y | 0;} + function f(_b_){return f$0(_b_[1], _b_[2]);} + var x = f$0(_a_[1], _a_[2]), Test = [0, f, x]; runtime.caml_register_global(1, Test, "Test"); return; } @@ -39,8 +40,8 @@ let%expect_test _ = (function(globalThis){ "use strict"; var runtime = globalThis.jsoo_runtime, _a_ = [0, 1, 1]; - function f(b, y, t){var match = b ? [0, 1] : t, x = match[1]; return x;} - function g(b, t){var match = b ? _a_ : t, x = match[1]; return x;} + function f(b, y, t){var x = b ? 1 : t[1]; return x;} + function g(b, t){var x = b ? _a_[1] : t[1]; return x;} var Test = [0, f, g]; runtime.caml_register_global(1, Test, "Test"); return; @@ -79,13 +80,13 @@ let%expect_test _ = [0, function(_c_, _b_, _a_){ switch(_c_){ - case 0: - var _d_ = [0, _b_]; break; + case 2: + var _d_ = _a_ + 1 | 0; break; case 1: - var _d_ = [1, _a_]; break; - default: var _d_ = [1, _a_ + 1 | 0]; + var _d_ = _a_; break; + default: var _d_ = _b_; } - return _d_[1]; + return _d_; }]; runtime.caml_register_global(0, Test, "Test"); return; From 5223f44e0d536c9be4fd85e7e9c83e2f3248f8c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Vouillon?= Date: Tue, 3 Mar 2026 23:13:28 +0100 Subject: [PATCH 5/9] Do allow field access after function call - the function may modify the field contents - the function call may filter some possible cases (raising an exception) --- compiler/lib/unboxing.ml | 43 ++++++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/compiler/lib/unboxing.ml b/compiler/lib/unboxing.ml index 172e6e233e..750b13f14d 100644 --- a/compiler/lib/unboxing.ml +++ b/compiler/lib/unboxing.ml @@ -80,7 +80,7 @@ let find_candidates p = | Non_float -> true | Float -> unboxed_floats in - let rec traverse closure_pc start_pc pc params = + let rec traverse closure_pc start_pc pc params seen_apply = if not (BitSet.mem visited pc) then ( BitSet.set visited pc; @@ -91,24 +91,32 @@ let find_candidates p = ~init:params block.params in + let seen_apply = ref seen_apply in List.iter ~f:(fun i -> match i with | Let (_, Field (x, n, kind)) when Var.Map.mem x params && allowed_access kind -> - let size = n + 1 in - let tuple = - try Var.Hashtbl.find tbl x - with Not_found -> - { size = 0 - ; loc = Var.Map.find x params - ; start_pc - ; closure_pc - ; kind - ; needed = IntSet.empty - } - in - if tuple.size < size then Var.Hashtbl.replace tbl x { tuple with size } + if !seen_apply + then (* A function call could have mutated the block through + an alias, so the field value may be stale after + unboxing. Discard this candidate. *) + Var.Hashtbl.remove tbl x + else + let size = n + 1 in + let tuple = + try Var.Hashtbl.find tbl x + with Not_found -> + { size = 0 + ; loc = Var.Map.find x params + ; start_pc + ; closure_pc + ; kind + ; needed = IntSet.empty + } + in + if tuple.size < size then Var.Hashtbl.replace tbl x { tuple with size } + | Let (_, Apply _) -> seen_apply := true | Let (y, Closure (params, (pc', args), _)) when not (is_unboxing_wrapper p pc') -> traverse @@ -123,18 +131,19 @@ let find_candidates p = ~init:Var.Map.empty params) args) + false | _ -> ()) block.body; match block.branch with - | Branch (pc', _) -> traverse closure_pc start_pc pc' params + | Branch (pc', _) -> traverse closure_pc start_pc pc' params !seen_apply | _ -> Code.fold_children p.blocks pc - (fun pc' () -> traverse closure_pc start_pc pc' Var.Map.empty) + (fun pc' () -> traverse closure_pc start_pc pc' Var.Map.empty false) ()) in - traverse None p.start p.start Var.Map.empty; + traverse None p.start p.start Var.Map.empty false; tbl let check_tuple_accesses p tbl = From 2c3133dd96525749eff39968b6795fbf9be42115 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Vouillon?= Date: Tue, 3 Mar 2026 23:16:06 +0100 Subject: [PATCH 6/9] Update tests --- compiler/tests-compiler/global_deadcode.ml | 2 +- compiler/tests-compiler/tuple_unboxing.ml | 35 +- compiler/tests-full/stdlib.cma.expected.js | 2370 ++++++++++---------- 3 files changed, 1225 insertions(+), 1182 deletions(-) diff --git a/compiler/tests-compiler/global_deadcode.ml b/compiler/tests-compiler/global_deadcode.ml index 1a57f58de8..f9cf9626d0 100644 --- a/compiler/tests-compiler/global_deadcode.ml +++ b/compiler/tests-compiler/global_deadcode.ml @@ -109,7 +109,7 @@ let%expect_test "Omit unused fields" = {| function f(b, x){ l[1] = [0, function(y){return x + y | 0;}, l[1]]; - var t = b ? [0, 1, , x] : [0, 3, , 4], v = t[3], u = t[1]; + if(b) var v = x, u = 1; else var v = 4, u = 3; return [0, u, v]; } //end diff --git a/compiler/tests-compiler/tuple_unboxing.ml b/compiler/tests-compiler/tuple_unboxing.ml index 3040351ec4..748ad75ae4 100644 --- a/compiler/tests-compiler/tuple_unboxing.ml +++ b/compiler/tests-compiler/tuple_unboxing.ml @@ -14,15 +14,16 @@ let%expect_test _ = {| (function(globalThis){ "use strict"; - var runtime = globalThis.jsoo_runtime, _a_ = [0, 1, 2]; + var runtime = globalThis.jsoo_runtime; function f$0(x, y){return x + y | 0;} - function f(_b_){return f$0(_b_[1], _b_[2]);} - var x = f$0(_a_[1], _a_[2]), Test = [0, f, x]; - runtime.caml_register_global(1, Test, "Test"); + function f(_a_){return f$0(_a_[1], _a_[2]);} + var _a_ = [0, 1, 2], x = f$0(_a_[1], _a_[2]); + runtime.caml_register_global(1, [0, f, x], "Test"); return; } (globalThis)); - //end |}] + //end + |}] let%expect_test _ = let program = @@ -39,15 +40,16 @@ let%expect_test _ = {| (function(globalThis){ "use strict"; - var runtime = globalThis.jsoo_runtime, _a_ = [0, 1, 1]; + var runtime = globalThis.jsoo_runtime; function f(b, y, t){var x = b ? 1 : t[1]; return x;} + var _a_ = [0, 1, 1]; function g(b, t){var x = b ? _a_[1] : t[1]; return x;} - var Test = [0, f, g]; - runtime.caml_register_global(1, Test, "Test"); + runtime.caml_register_global(1, [0, f, g], "Test"); return; } (globalThis)); - //end |}] + //end + |}] let%expect_test _ = let program = @@ -78,18 +80,19 @@ let%expect_test _ = runtime = globalThis.jsoo_runtime, Test = [0, - function(_c_, _b_, _a_){ - switch(_c_){ + function(_d_, _c_, _b_){ + switch(_d_){ case 2: - var _d_ = _a_ + 1 | 0; break; + var _a_ = _b_ + 1 | 0; break; case 1: - var _d_ = _a_; break; - default: var _d_ = _b_; + var _a_ = _b_; break; + default: var _a_ = _c_; } - return _d_; + return _a_; }]; runtime.caml_register_global(0, Test, "Test"); return; } (globalThis)); - //end |}] + //end + |}] diff --git a/compiler/tests-full/stdlib.cma.expected.js b/compiler/tests-full/stdlib.cma.expected.js index 4ab84065ea..47f45ede56 100644 --- a/compiler/tests-full/stdlib.cma.expected.js +++ b/compiler/tests-full/stdlib.cma.expected.js @@ -1683,14 +1683,20 @@ /*<>*/ caml_atomic_exchange_field(t[1], t[2], v); return 0; /*<>*/ } - function incr(t){ - /*<>*/ caml_atomic_fetch_add_field(t[1], t[2], 1); + function incr$1(_b_, _c_){ + /*<>*/ caml_atomic_fetch_add_field(_b_, _c_, 1); return 0; /*<>*/ } - function decr(t){ - /*<>*/ caml_atomic_fetch_add_field(t[1], t[2], -1); + function incr(_b_){ + /*<>*/ return incr$1(_b_[1], _b_[2]) /*<>*/ ; + } + function decr$1(_a_, _b_){ + /*<>*/ caml_atomic_fetch_add_field(_a_, _b_, -1); return 0; /*<>*/ } + function decr(_a_){ + /*<>*/ return decr$1(_a_[1], _a_[2]) /*<>*/ ; + } function make(v){ /*<>*/ return [0, v]; /*<>*/ } @@ -1712,10 +1718,10 @@ /*<>*/ return caml_atomic_fetch_add_field(t, 0, incr) /*<>*/ ; } function incr$0(t){ - /*<>*/ return incr([0, t, 0]) /*<>*/ ; + /*<>*/ return incr$1(t, 0) /*<>*/ ; } function decr$0(t){ - /*<>*/ return decr([0, t, 0]) /*<>*/ ; + /*<>*/ return decr$1(t, 0) /*<>*/ ; } var Stdlib_Atomic = @@ -13766,8 +13772,8 @@ /*<>*/ return runtime.caml_bytes_unsafe_get(buffer, ofs) /*<>*/ ; /*<>*/ return Stdlib[1].call(null, "Buffer.nth") /*<>*/ ; } - function length(b){ - /*<>*/ return b[2]; + function length(_h_){ + /*<>*/ return _h_[2]; /*<>*/ } function clear(b){ /*<>*/ b[2] = 0; @@ -14551,18 +14557,17 @@ } } /*<>*/ } - function set(param, x){ - var - idx = /*<>*/ param[1], - st = /*<>*/ maybe_grow(idx); + function set$0(idx, x){ + var st = /*<>*/ maybe_grow(idx); /*<>*/ caml_check_bound(st, idx)[idx + 1] = x; /*<>*/ return 0; } + function set(_b_, _c_){ + /*<>*/ return set$0(_b_[1], _c_) /*<>*/ ; + } var _a_ = /*<>*/ [0, "domain.ml", 184, 13]; - function get(param){ + function get$0(idx, init){ var - init = /*<>*/ param[2], - idx = param[1], st = /*<>*/ maybe_grow(idx), oldval = /*<>*/ caml_check_bound(st, idx)[idx + 1]; /*<>*/ if(oldval !== none) @@ -14585,12 +14590,15 @@ /*<>*/ throw caml_maybe_attach_backtrace ([0, Assert_failure, _a_], 1); /*<>*/ } + function get(_b_){ + /*<>*/ return get$0(_b_[1], _b_[2]) /*<>*/ ; + } function set_initial_keys(l){ /*<>*/ return Stdlib_List[19].call (null, function(param){ var v = /*<>*/ param[2], k = param[1]; - /*<>*/ return set(k, v) /*<>*/ ; + /*<>*/ return set$0(k[1], v) /*<>*/ ; }, l) /*<>*/ ; } @@ -14632,15 +14640,17 @@ /*<>*/ return 0; /*<>*/ } /*<>*/ ; /*<>*/ }); function at_exit(f){ - var old_exit = /*<>*/ get(at_exit_key); + var + old_exit = + /*<>*/ get$0(at_exit_key[1], at_exit_key[2]); function new_exit(param){ /*<>*/ caml_call1(f, 0); /*<>*/ return caml_call1(old_exit, 0) /*<>*/ ; } - /*<>*/ return set(at_exit_key, new_exit) /*<>*/ ; + /*<>*/ return set$0(at_exit_key[1], new_exit) /*<>*/ ; } function do_at_exit(param){ - var f = /*<>*/ get(at_exit_key); + var f = /*<>*/ get$0(at_exit_key[1], at_exit_key[2]); /*<>*/ return caml_call1(f, 0) /*<>*/ ; } /*<>*/ Stdlib[104][1] = do_at_exit; @@ -14665,7 +14675,7 @@ /*<>*/ return [0, k, /*<>*/ caml_call1 - (split, /*<>*/ get(k))] /*<>*/ ; + (split, /*<>*/ get$0(k[1], k[2]))] /*<>*/ ; /*<>*/ }, _a_), _b_ = /*<>*/ Stdlib_Condition[1].call(null, 0), @@ -14797,14 +14807,14 @@ var str_ind = /*<>*/ c >>> 3 | 0, mask = 1 << (c & 7), - _a3_ = + _a4_ = /*<>*/ runtime.caml_bytes_get (char_set, str_ind) | mask; /*<>*/ return /*<>*/ caml_bytes_set (char_set, str_ind, - /*<>*/ Stdlib[29].call(null, _a3_)) /*<>*/ ; + /*<>*/ Stdlib[29].call(null, _a4_)) /*<>*/ ; } function freeze_char_set(char_set){ /*<>*/ return Stdlib_Bytes[6].call @@ -14816,18 +14826,18 @@ i = /*<>*/ 0; for(;;){ var - _a2_ = + _a3_ = /*<>*/ caml_string_get(char_set, i) ^ 255; /*<>*/ /*<>*/ caml_bytes_set (char_set$0, i, - /*<>*/ Stdlib[29].call(null, _a2_)); - var _a3_ = /*<>*/ i + 1 | 0; + /*<>*/ Stdlib[29].call(null, _a3_)); + var _a4_ = /*<>*/ i + 1 | 0; if(31 === i) /*<>*/ return Stdlib_Bytes[44].call (null, char_set$0) /*<>*/ ; - /*<>*/ i = _a3_; + /*<>*/ i = _a4_; } /*<>*/ } function is_in_char_set(char_set, c){ @@ -14897,11 +14907,11 @@ /*<>*/ if(prec_opt) var ndec = prec_opt[1], - _a2_ = /*<>*/ [0, ndec]; + _a3_ = /*<>*/ [0, ndec]; else - var _a2_ = /*<>*/ 0; + var _a3_ = /*<>*/ 0; /*<>*/ return [0, - [8, _a_, pad_of_pad_opt(pad_opt$5), _a2_, fmt]] /*<>*/ ; + [8, _a_, pad_of_pad_opt(pad_opt$5), _a3_, fmt]] /*<>*/ ; case 7: var pad_opt$6 = /*<>*/ ign[1]; /*<>*/ return [0, @@ -14929,8 +14939,8 @@ /*<>*/ return [0, [21, counter, fmt]]; } /*<>*/ } - function default_float_precision(fconv){ - /*<>*/ return 5 === fconv[2] ? 12 : -6 /*<>*/ ; + function default_float_precision(match){ + /*<>*/ return 5 === match ? 12 : -6 /*<>*/ ; } function buffer_create(init_size){ /*<>*/ return [0, @@ -14968,9 +14978,9 @@ (null, s, 0, buf[2], buf[1], str_len); /*<>*/ buf[1] = buf[1] + str_len | 0; /*<>*/ } - function buffer_contents(buf){ + function buffer_contents(_a2_, _a3_){ /*<>*/ return Stdlib_Bytes[8].call - (null, buf[2], 0, buf[1]) /*<>*/ ; + (null, _a3_, 0, _a2_) /*<>*/ ; } function char_of_iconv(iconv){ /*<>*/ switch(iconv){ @@ -15722,7 +15732,8 @@ } /*<>*/ } /*<>*/ fmtiter(fmt, 0); - /*<>*/ return buffer_contents(buf) /*<>*/ ; + /*<>*/ return buffer_contents + (buf[1], buf[2]) /*<>*/ ; } function symm(param){ /*<>*/ if(typeof param === "number") @@ -17636,7 +17647,8 @@ (buf, /*<>*/ Stdlib_Int[12].call(null, prec$0)); /*<>*/ buffer_add_char(buf, symb); - /*<>*/ return buffer_contents(buf) /*<>*/ ; + /*<>*/ return buffer_contents + (buf[1], buf[2]) /*<>*/ ; } function transform_int_alt(iconv, s){ /*<>*/ if(13 > iconv) @@ -17924,7 +17936,8 @@ function string_of_fmtty(fmtty){ var buf = /*<>*/ buffer_create(16); /*<>*/ bprint_fmtty(buf, fmtty); - /*<>*/ return buffer_contents(buf) /*<>*/ ; + /*<>*/ return buffer_contents + (buf[1], buf[2]) /*<>*/ ; } var _s_ = /*<>*/ [0, cst_camlinternalFormat_ml, 1558, 4]; function make_printf$0(counter, k$2, acc$4, fmt$2){ @@ -18208,7 +18221,7 @@ /*<>*/ /*<>*/ convert_float (fconv, /*<>*/ default_float_precision - (fconv), + (fconv[2]), x); /*<>*/ return make_printf (k, [4, acc, str], rest$7) /*<>*/ ; @@ -18244,7 +18257,7 @@ /*<>*/ /*<>*/ convert_float (fconv, /*<>*/ default_float_precision - (fconv), + (fconv[2]), x), str$0 = /*<>*/ fix_padding @@ -18286,7 +18299,7 @@ /*<>*/ /*<>*/ convert_float (fconv, /*<>*/ default_float_precision - (fconv), + (fconv[2]), x), str$0 = /*<>*/ fix_padding @@ -19046,27 +19059,27 @@ } break; case 6: - var f = /*<>*/ acc[2], p$3 = acc[1]; - /*<>*/ output_acc(o, p$3); + var f = /*<>*/ acc[2], p$1 = acc[1]; + /*<>*/ output_acc(o, p$1); /*<>*/ return caml_call1(f, o) /*<>*/ ; case 7: - var p$4 = /*<>*/ acc[1]; - /*<>*/ output_acc(o, p$4); + var p$2 = /*<>*/ acc[1]; + /*<>*/ output_acc(o, p$2); /*<>*/ return Stdlib[63].call(null, o) /*<>*/ ; case 8: - var msg = /*<>*/ acc[2], p$5 = acc[1]; - /*<>*/ output_acc(o, p$5); + var msg = /*<>*/ acc[2], p$3 = acc[1]; + /*<>*/ output_acc(o, p$3); /*<>*/ return Stdlib[1].call (null, msg) /*<>*/ ; case 2: case 4: - var s$0 = /*<>*/ acc[2], p$1 = acc[1]; - /*<>*/ output_acc(o, p$1); + var p$4 = /*<>*/ acc[1], s$0 = acc[2]; + /*<>*/ output_acc(o, p$4); /*<>*/ return Stdlib[66].call (null, o, s$0) /*<>*/ ; default: - var c = /*<>*/ acc[2], p$2 = acc[1]; - /*<>*/ output_acc(o, p$2); + var p$5 = /*<>*/ acc[1], c = acc[2]; + /*<>*/ output_acc(o, p$5); /*<>*/ return Stdlib[65].call (null, o, c) /*<>*/ ; } @@ -19108,27 +19121,27 @@ } break; case 6: - var f = /*<>*/ acc[2], p$3 = acc[1]; - /*<>*/ bufput_acc(b, p$3); + var f = /*<>*/ acc[2], p$1 = acc[1]; + /*<>*/ bufput_acc(b, p$1); /*<>*/ return caml_call1(f, b) /*<>*/ ; case 7: var acc$2 = /*<>*/ acc[1]; /*<>*/ acc = acc$2; break; case 8: - var msg = /*<>*/ acc[2], p$4 = acc[1]; - /*<>*/ bufput_acc(b, p$4); + var msg = /*<>*/ acc[2], p$2 = acc[1]; + /*<>*/ bufput_acc(b, p$2); /*<>*/ return Stdlib[1].call (null, msg) /*<>*/ ; case 2: case 4: - var s$0 = /*<>*/ acc[2], p$1 = acc[1]; - /*<>*/ bufput_acc(b, p$1); + var p$3 = /*<>*/ acc[1], s$0 = acc[2]; + /*<>*/ bufput_acc(b, p$3); /*<>*/ return Stdlib_Buffer[16].call (null, b, s$0) /*<>*/ ; default: - var c = /*<>*/ acc[2], p$2 = acc[1]; - /*<>*/ bufput_acc(b, p$2); + var p$4 = /*<>*/ acc[1], c = acc[2]; + /*<>*/ bufput_acc(b, p$4); /*<>*/ return Stdlib_Buffer[12].call (null, b, c) /*<>*/ ; } @@ -19170,8 +19183,8 @@ } break; case 6: - var f = /*<>*/ acc[2], p$3 = acc[1]; - /*<>*/ strput_acc(b, p$3); + var f = /*<>*/ acc[2], p$1 = acc[1]; + /*<>*/ strput_acc(b, p$1); var _aJ_ = /*<>*/ caml_call1(f, 0); /*<>*/ return Stdlib_Buffer[16].call (null, b, _aJ_) /*<>*/ ; @@ -19180,27 +19193,26 @@ /*<>*/ acc = acc$2; break; case 8: - var msg = /*<>*/ acc[2], p$4 = acc[1]; - /*<>*/ strput_acc(b, p$4); + var msg = /*<>*/ acc[2], p$2 = acc[1]; + /*<>*/ strput_acc(b, p$2); /*<>*/ return Stdlib[1].call (null, msg) /*<>*/ ; case 2: case 4: - var s$0 = /*<>*/ acc[2], p$1 = acc[1]; - /*<>*/ strput_acc(b, p$1); + var p$3 = /*<>*/ acc[1], s$0 = acc[2]; + /*<>*/ strput_acc(b, p$3); /*<>*/ return Stdlib_Buffer[16].call (null, b, s$0) /*<>*/ ; default: - var c = /*<>*/ acc[2], p$2 = acc[1]; - /*<>*/ strput_acc(b, p$2); + var p$4 = /*<>*/ acc[1], c = acc[2]; + /*<>*/ strput_acc(b, p$4); /*<>*/ return Stdlib_Buffer[12].call (null, b, c) /*<>*/ ; } } } - function failwith_message(param){ + function failwith_message(fmt){ var - fmt = /*<>*/ param[1], buf = /*<>*/ Stdlib_Buffer[1].call(null, 256); function k(acc){ @@ -19227,7 +19239,7 @@ len = /*<>*/ caml_ml_string_length(str); function invalid_box(param){ /*<>*/ return caml_call1 - (failwith_message(_y_), str) /*<>*/ ; + (failwith_message(_y_[1]), str) /*<>*/ ; } function parse_spaces(i$1){ var i = /*<>*/ i$1; @@ -19334,12 +19346,9 @@ /*<>*/ } function make_padprec_fmt_ebb(pad, prec, fmt){ /*<>*/ if(typeof prec === "number") - var match = prec ? [0, 1] : [0, 0]; + var prec$0 = prec ? 1 : 0; else - var - p = prec[1], - match = /*<>*/ [0, [0, p]]; - var prec$0 = /*<>*/ match[1]; + var p = prec[1], prec$0 = /*<>*/ [0, p]; /*<>*/ if(typeof pad === "number") /*<>*/ return [0, 0, prec$0, fmt]; /*<>*/ if(0 === pad[0]){ @@ -19509,15 +19518,15 @@ var legacy_behavior$0 = /*<>*/ 1; function invalid_format_message(str_ind, msg){ /*<>*/ return caml_call3 - (failwith_message(_z_), str, str_ind, msg) /*<>*/ ; + (failwith_message(_z_[1]), str, str_ind, msg) /*<>*/ ; } function invalid_format_without(str_ind, c, s){ /*<>*/ return caml_call4 - (failwith_message(_A_), str, str_ind, c, s) /*<>*/ ; + (failwith_message(_A_[1]), str, str_ind, c, s) /*<>*/ ; } function expected_character(str_ind, expected, read){ /*<>*/ return caml_call4 - (failwith_message(_B_), str, str_ind, expected, read) /*<>*/ ; + (failwith_message(_B_[1]), str, str_ind, expected, read) /*<>*/ ; } var cst_unexpected_end_of_format = /*<>*/ "unexpected end of format"; function parse(lit_start, end_ind){ @@ -19569,7 +19578,7 @@ _aJ_ = /*<>*/ caml_string_get(str, str_ind); /*<>*/ caml_call3 - (failwith_message(_C_), str, str_ind, _aJ_); + (failwith_message(_C_[1]), str, str_ind, _aJ_); } /*<>*/ flag[1] = 1; /*<>*/ } @@ -20336,7 +20345,7 @@ var fmt_result = /*<>*/ /*<>*/ caml_call3 - (failwith_message(_M_), str, pct_ind, symb); + (failwith_message(_M_[1]), str, pct_ind, symb); break a; case 88: case 100: @@ -20621,7 +20630,7 @@ var fmt_result = /*<>*/ /*<>*/ caml_call3 - (failwith_message(_J_), str, str_ind - 1 | 0, symb); + (failwith_message(_J_[1]), str, str_ind - 1 | 0, symb); } /*<>*/ if(1 - legacy_behavior$0){ var @@ -21049,7 +21058,7 @@ /*<>*/ } function fail_single_percent(str_ind){ /*<>*/ return caml_call2 - (failwith_message(_R_), str, str_ind) /*<>*/ ; + (failwith_message(_R_[1]), str, str_ind) /*<>*/ ; } function parse_char_set_content(counter, str_ind$1, end_ind){ var str_ind = /*<>*/ str_ind$1; @@ -21219,7 +21228,7 @@ | 0; /*<>*/ if(Stdlib_Sys[13] < new_acc){ var _aa_ = /*<>*/ Stdlib_Sys[13]; - return caml_call3(failwith_message(_S_), str, new_acc, _aa_) /*<>*/ ; + return caml_call3(failwith_message(_S_[1]), str, new_acc, _aa_) /*<>*/ ; } var str_ind$0 = /*<>*/ str_ind + 1 | 0; str_ind = str_ind$0; @@ -21283,7 +21292,7 @@ for(;;){ if(str_ind === end_ind) /*<>*/ caml_call3 - (failwith_message(_U_), str, c, end_ind); + (failwith_message(_U_[1]), str, c, end_ind); /*<>*/ if (37 === caml_string_get(str, str_ind)){ /*<>*/ if((str_ind + 1 | 0) === end_ind) @@ -21489,7 +21498,7 @@ /*<>*/ Stdlib_String[16].call (null, str, pct_ind, str_ind - pct_ind | 0); /*<>*/ return caml_call5 - (failwith_message(_Y_), str, pct_ind, option, symb, subfmt) /*<>*/ ; + (failwith_message(_Y_[1]), str, pct_ind, option, symb, subfmt) /*<>*/ ; } /*<>*/ return parse (0, caml_ml_string_length(str)); @@ -21520,7 +21529,7 @@ if(exn !== Type_mismatch) throw caml_maybe_attach_backtrace(exn, 0); var _$_ = /*<>*/ string_of_fmtty(fmtty); /*<>*/ return caml_call2 - (failwith_message(_Z_), str, _$_); + (failwith_message(_Z_[1]), str, _$_); } } var @@ -21547,7 +21556,7 @@ var exn = /*<>*/ caml_wrap_exception(exn$0); if(exn === Type_mismatch) /*<>*/ return caml_call2 - (failwith_message(___), str, str$0) /*<>*/ ; + (failwith_message(___[1]), str, str$0) /*<>*/ ; /*<>*/ throw caml_maybe_attach_backtrace(exn, 0); } /*<>*/ } @@ -21599,8 +21608,7 @@ Stdlib_Buffer = global_data.Stdlib__Buffer, CamlinternalFormat = global_data.CamlinternalFormat, Stdlib = global_data.Stdlib; - function kfprintf(k, o, param){ - var fmt = /*<>*/ param[1]; + function kfprintf$0(fmt, k, o){ /*<>*/ return CamlinternalFormat[7].call (null, function(acc){ @@ -21611,8 +21619,10 @@ 0, fmt) /*<>*/ ; } - function kbprintf(k, b, param){ - var fmt = /*<>*/ param[1]; + function kfprintf(_g_, _h_, _i_){ + /*<>*/ return kfprintf$0(_i_[1], _g_, _h_) /*<>*/ ; + } + function kbprintf$0(fmt, k, b){ /*<>*/ return CamlinternalFormat[7].call (null, function(acc){ @@ -21623,35 +21633,42 @@ 0, fmt) /*<>*/ ; } - function ikfprintf(k, oc, param){ - var fmt = /*<>*/ param[1]; + function kbprintf(_e_, _f_, _g_){ + /*<>*/ return kbprintf$0(_g_[1], _e_, _f_) /*<>*/ ; + } + function ikfprintf$0(fmt, k, oc){ /*<>*/ return CamlinternalFormat[8].call (null, k, oc, fmt) /*<>*/ ; } - function fprintf(oc, fmt){ - /*<>*/ return kfprintf - (function(_a_){ /*<>*/ return 0;}, oc, fmt) /*<>*/ ; + function ikfprintf(_c_, _d_, _e_){ + /*<>*/ return ikfprintf$0(_e_[1], _c_, _d_) /*<>*/ ; + } + function fprintf$0(_c_, oc){ + /*<>*/ return kfprintf$0 + (_c_, function(_c_){ /*<>*/ return 0;}, oc) /*<>*/ ; + } + function fprintf(_b_, _c_){ + /*<>*/ return fprintf$0(_c_[1], _b_) /*<>*/ ; } function bprintf(b, fmt){ - /*<>*/ return kbprintf - (function(_a_){ /*<>*/ return 0;}, b, fmt) /*<>*/ ; + /*<>*/ return kbprintf$0 + (fmt[1], function(_b_){ /*<>*/ return 0;}, b) /*<>*/ ; } function ifprintf(oc, fmt){ - /*<>*/ return ikfprintf - (function(_a_){ /*<>*/ return 0;}, oc, fmt) /*<>*/ ; + /*<>*/ return ikfprintf$0 + (fmt[1], function(_b_){ /*<>*/ return 0;}, oc) /*<>*/ ; } function ibprintf(b, fmt){ - /*<>*/ return ikfprintf - (function(_a_){ /*<>*/ return 0;}, b, fmt) /*<>*/ ; + /*<>*/ return ikfprintf$0 + (fmt[1], function(_b_){ /*<>*/ return 0;}, b) /*<>*/ ; } function printf(fmt){ - /*<>*/ return fprintf(Stdlib[39], fmt) /*<>*/ ; + /*<>*/ return fprintf$0(fmt[1], Stdlib[39]) /*<>*/ ; } function eprintf(fmt){ - /*<>*/ return fprintf(Stdlib[40], fmt) /*<>*/ ; + /*<>*/ return fprintf$0(fmt[1], Stdlib[40]) /*<>*/ ; } - function ksprintf(k, param){ - var fmt = /*<>*/ param[1]; + function ksprintf$0(fmt, k){ function k$0(acc){ var buf = /*<>*/ Stdlib_Buffer[1].call(null, 64); /*<>*/ CamlinternalFormat[11].call(null, buf, acc); @@ -21661,12 +21678,15 @@ /*<>*/ return CamlinternalFormat[7].call (null, k$0, 0, fmt) /*<>*/ ; } + function ksprintf(_a_, _b_){ + /*<>*/ return ksprintf$0(_b_[1], _a_) /*<>*/ ; + } function sprintf(fmt){ - /*<>*/ return ksprintf - (function(s){ + /*<>*/ return ksprintf$0 + (fmt[1], + function(s){ /*<>*/ return s; - /*<>*/ }, - fmt) /*<>*/ ; + /*<>*/ }) /*<>*/ ; } /*<>*/ runtime.caml_register_global (3, @@ -23946,14 +23966,13 @@ cst_Digest_subbytes = /*<>*/ "Digest.subbytes", cst_Digest_substring = "Digest.substring", cst_Digest_to_hex = "Digest.to_hex"; - function BLAKE2(X){ - var _a_ = X[1] < 1, _b_ = _a_ || 64 < X[1]; + function BLAKE2(hash_length){ + var _a_ = hash_length < 1, _b_ = _a_ || 64 < hash_length; if(_b_) /*<>*/ Stdlib[1].call (null, "Digest.BLAKE2: wrong hash size"); var - hash_length = /*<>*/ X[1], - compare = Stdlib_String[10], + compare = /*<>*/ Stdlib_String[10], equal = Stdlib_String[9], cst = /*<>*/ ""; function string(str){ @@ -24068,9 +24087,9 @@ of_hex]; } var - BLAKE128 = /*<>*/ BLAKE2([0, 16]), - BLAKE256 = BLAKE2([0, 32]), - BLAKE512 = BLAKE2([0, 64]), + BLAKE128 = /*<>*/ BLAKE2(16), + BLAKE256 = BLAKE2(32), + BLAKE512 = BLAKE2(64), compare = Stdlib_String[10], equal = Stdlib_String[9]; function string(str){ @@ -25315,7 +25334,7 @@ //# unitInfo: Provides: Stdlib__Hashtbl //# unitInfo: Requires: Stdlib, Stdlib__Array, Stdlib__Atomic, Stdlib__Domain, Stdlib__Int, Stdlib__Random, Stdlib__Seq, Stdlib__String, Stdlib__Sys -//# shape: Stdlib__Hashtbl:[F(2),F(1),F(1),F(1),F(3),F(2),F(2),F(2),F(2),F(2),F(3),F(2),F(2),F(3),F(1)*,F(1),F(1)*,F(2),F(1),F(1)*->F(1),F(1)*->F(1),F(1)*->F(1),F(2),F(2),F(1),F(1)*,F(1)*,F(1)*,F(2)*,F(3)*,F(4)*] +//# shape: Stdlib__Hashtbl:[F(2),F(1),F(1),F(1),F(3),F(2),F(2),F(2),F(2),F(2),F(3),F(2),F(2),F(3),F(1)*,F(1),F(1)*,F(2),F(1),F(1)*,F(1)*->F(1),F(1)*->F(1),F(2),F(2),F(1),F(1)*,F(1)*,F(1)*,F(2)*,F(3)*,F(4)*] (function (globalThis){ "use strict"; @@ -25357,9 +25376,9 @@ var Stdlib_String = global_data.Stdlib__String; function ongoing_traversal(h){ var - _C_ = /*<>*/ h.length - 1 < 4 ? 1 : 0, - _D_ = _C_ || (h[4] < 0 ? 1 : 0); - return _D_; + _E_ = /*<>*/ h.length - 1 < 4 ? 1 : 0, + _F_ = _E_ || (h[4] < 0 ? 1 : 0); + return _F_; /*<>*/ } function flip_ongoing_traversal(h){ /*<>*/ h[4] = - h[4] | 0; @@ -25420,24 +25439,24 @@ s = /*<>*/ power_2_above(16, initial_size); /*<>*/ if(random) var - _C_ = + _E_ = /*<>*/ caml_call1(Stdlib_Domain[11][2], prng_key), seed = /*<>*/ /*<>*/ caml_call1 - (Stdlib_Random[19][4], _C_); + (Stdlib_Random[19][4], _E_); else var seed = /*<>*/ 0; /*<>*/ return [0, 0, caml_array_make(s, 0), seed, s] /*<>*/ ; /*<>*/ } function clear(h){ - var _C_ = /*<>*/ 0 < h[1] ? 1 : 0; - return _C_ + var _E_ = /*<>*/ 0 < h[1] ? 1 : 0; + return _E_ ? (h [1] = 0, /*<>*/ Stdlib_Array[8].call (null, h[2], 0, h[2].length - 1, 0)) - : _C_ /*<>*/ ; + : _E_ /*<>*/ ; } function reset(h){ var len = /*<>*/ h[2].length - 1; @@ -25476,10 +25495,10 @@ /*<>*/ } function copy(h){ var - _A_ = /*<>*/ h[4], - _B_ = h[3], - _C_ = Stdlib_Array[16].call(null, copy_bucketlist, h[2]); - /*<>*/ return [0, h[1], _C_, _B_, _A_]; + _C_ = /*<>*/ h[4], + _D_ = h[3], + _E_ = Stdlib_Array[16].call(null, copy_bucketlist, h[2]); + /*<>*/ return [0, h[1], _E_, _D_, _C_]; /*<>*/ } function length(h){ /*<>*/ return h[1]; @@ -25488,8 +25507,8 @@ var nsize = /*<>*/ ndata.length - 1, ndata_tail = /*<>*/ caml_array_make(nsize, 0), - _w_ = /*<>*/ odata.length - 2 | 0; - if(_w_ >= 0){ + _y_ = /*<>*/ odata.length - 2 | 0; + if(_y_ >= 0){ var i$0 = 0; a: for(;;){ @@ -25499,9 +25518,9 @@ cell = /*<>*/ cell$1; for(;;){ /*<>*/ if(! cell){ - var _A_ = /*<>*/ i$0 + 1 | 0; - if(_w_ === i$0) break a; - i$0 = _A_; + var _C_ = /*<>*/ i$0 + 1 | 0; + if(_y_ === i$0) break a; + i$0 = _C_; break; } var @@ -25524,8 +25543,8 @@ } } /*<>*/ if(inplace){ - var _x_ = /*<>*/ nsize - 1 | 0; - if(_x_ >= 0){ + var _z_ = /*<>*/ nsize - 1 | 0; + if(_z_ >= 0){ var i = 0; for(;;){ var @@ -25533,24 +25552,24 @@ /*<>*/ caml_check_bound(ndata_tail, i)[i + 1]; /*<>*/ if(match$0) /*<>*/ match$0[3] = 0; - var _z_ = /*<>*/ i + 1 | 0; - if(_x_ === i) break; - i = _z_; + var _B_ = /*<>*/ i + 1 | 0; + if(_z_ === i) break; + i = _B_; } } - var _y_ = /*<>*/ 0; + var _A_ = /*<>*/ 0; } else - var _y_ = /*<>*/ inplace; - return _y_; + var _A_ = /*<>*/ inplace; + return _A_; /*<>*/ } function resize(indexfun, h){ var odata = /*<>*/ h[2], osize = /*<>*/ odata.length - 1, nsize = /*<>*/ osize * 2 | 0, - _w_ = /*<>*/ nsize < Stdlib_Sys[14] ? 1 : 0; - if(! _w_) return _w_; + _y_ = /*<>*/ nsize < Stdlib_Sys[14] ? 1 : 0; + if(! _y_) return _y_; var ndata = /*<>*/ caml_array_make(nsize, 0), inplace = /*<>*/ 1 - ongoing_traversal(h); @@ -25566,8 +25585,8 @@ /*<>*/ if(1 - old_trav) /*<>*/ flip_ongoing_traversal(h); /*<>*/ try{ - var d = h[2], _t_ = /*<>*/ d.length - 2 | 0; - if(_t_ >= 0){ + var d = h[2], _v_ = /*<>*/ d.length - 2 | 0; + if(_v_ >= 0){ var i = 0; a: for(;;){ @@ -25578,9 +25597,9 @@ [i + 1]; /*<>*/ for(;;){ /*<>*/ if(! param){ - var _w_ = /*<>*/ i + 1 | 0; - if(_t_ === i) break a; - i = _w_; + var _y_ = /*<>*/ i + 1 | 0; + if(_v_ === i) break a; + i = _y_; break; } var @@ -25593,9 +25612,9 @@ } } var - _u_ = /*<>*/ 1 - old_trav, - _v_ = _u_ ? /*<>*/ flip_ongoing_traversal(h) : _u_; - return _v_; + _w_ = /*<>*/ 1 - old_trav, + _x_ = _w_ ? /*<>*/ flip_ongoing_traversal(h) : _w_; + return _x_; } catch(exn$0){ var exn = /*<>*/ caml_wrap_exception(exn$0); @@ -25612,8 +25631,8 @@ /*<>*/ if(1 - old_trav) /*<>*/ flip_ongoing_traversal(h); /*<>*/ try{ - var _q_ = d.length - 2 | 0; - if(_q_ >= 0){ + var _s_ = d.length - 2 | 0; + if(_s_ >= 0){ var i = 0; a: for(;;){ @@ -25627,9 +25646,9 @@ /*<>*/ prec[3] = 0; else /*<>*/ caml_check_bound(h[2], i)[i + 1] = 0; - var _t_ = /*<>*/ i + 1 | 0; - if(_q_ === i) break a; - i = _t_; + var _v_ = /*<>*/ i + 1 | 0; + if(_s_ === i) break a; + i = _v_; break; } var @@ -25655,9 +25674,9 @@ } } var - _r_ = /*<>*/ 1 - old_trav, - _s_ = _r_ ? /*<>*/ flip_ongoing_traversal(h) : _r_; - return _s_; + _t_ = /*<>*/ 1 - old_trav, + _u_ = _t_ ? /*<>*/ flip_ongoing_traversal(h) : _t_; + return _u_; } catch(exn$0){ var exn = /*<>*/ caml_wrap_exception(exn$0); @@ -25672,8 +25691,8 @@ /*<>*/ if(1 - old_trav) /*<>*/ flip_ongoing_traversal(h); /*<>*/ try{ - var d = h[2], _p_ = /*<>*/ d.length - 2 | 0; - if(_p_ < 0) + var d = h[2], _r_ = /*<>*/ d.length - 2 | 0; + if(_r_ < 0) var accu$2 = init; else{ var accu$1 = init, i = 0; @@ -25685,8 +25704,8 @@ accu = accu$1; for(;;){ /*<>*/ if(! b){ - var _q_ = /*<>*/ i + 1 | 0; - if(_p_ !== i){accu$1 = accu; i = _q_; break;} + var _s_ = /*<>*/ i + 1 | 0; + if(_r_ !== i){accu$1 = accu; i = _s_; break;} var accu$2 = accu; break a; } @@ -25729,8 +25748,8 @@ /*<>*/ Stdlib_Array[20].call (null, function(m, b){ - var _p_ = /*<>*/ bucket_length(0, b); - /*<>*/ return Stdlib_Int[11].call(null, m, _p_); + var _r_ = /*<>*/ bucket_length(0, b); + /*<>*/ return Stdlib_Int[11].call(null, m, _r_); }, 0, h[2]), @@ -25746,8 +25765,7 @@ h[2]); /*<>*/ return [0, h[1], h[2].length - 1, mbl, histo]; /*<>*/ } - function to_seq(tbl){ - var tbl_data = /*<>*/ tbl[2]; + function to_seq$0(tbl_data){ function aux(i$1, buck$1, param){ var i = /*<>*/ i$1, buck = buck$1; for(;;){ @@ -25767,35 +25785,41 @@ next = buck[3]; /*<>*/ return [0, [0, key, data], - function(_p_){ - /*<>*/ return aux(i, next, _p_); + function(_r_){ + /*<>*/ return aux(i, next, _r_); }] /*<>*/ ; /*<>*/ } - /*<>*/ return function(_p_){ - /*<>*/ return aux(0, 0, _p_);} /*<>*/ ; + /*<>*/ return function(_r_){ + /*<>*/ return aux(0, 0, _r_);} /*<>*/ ; /*<>*/ } + function to_seq(_r_){ + /*<>*/ return to_seq$0(_r_[2]) /*<>*/ ; + } function to_seq_keys(m){ - var _m_ = /*<>*/ to_seq(m); - function _n_(_p_){ /*<>*/ return _p_[1];} - var _o_ = /*<>*/ Stdlib_Seq[30]; - return function(_p_){ - /*<>*/ return _o_(_n_, _m_, _p_);} /*<>*/ ; + var _o_ = /*<>*/ to_seq$0(m[2]); + function _p_(_r_){ /*<>*/ return _r_[1];} + var _q_ = /*<>*/ Stdlib_Seq[30]; + return function(_r_){ + /*<>*/ return _q_(_p_, _o_, _r_);} /*<>*/ ; } function to_seq_values(m){ - var _j_ = /*<>*/ to_seq(m); - function _k_(_m_){ /*<>*/ return _m_[2];} - var _l_ = /*<>*/ Stdlib_Seq[30]; - return function(_m_){ - /*<>*/ return _l_(_k_, _j_, _m_);} /*<>*/ ; + var _l_ = /*<>*/ to_seq$0(m[2]); + function _m_(_o_){ /*<>*/ return _o_[2];} + var _n_ = /*<>*/ Stdlib_Seq[30]; + return function(_o_){ + /*<>*/ return _n_(_m_, _l_, _o_);} /*<>*/ ; } function MakeSeeded(H){ - function key_index(h, key){ - var _j_ = /*<>*/ h[2].length - 2 | 0; - return caml_call2(H[2], h[3], key) & _j_ /*<>*/ ; + function key_index$0(_k_, _l_, key){ + /*<>*/ return caml_call2(H[2], _l_, key) + & (_k_.length - 2 | 0) /*<>*/ ; /*<>*/ } + function key_index(_j_, _k_){ + /*<>*/ return key_index$0(_j_[2], _j_[3], _k_) /*<>*/ ; + } function add(h, key, data){ var - i = /*<>*/ key_index(h, key), + i = /*<>*/ key_index$0(h[2], h[3], key), bucket = /*<>*/ [0, key, @@ -25808,7 +25832,7 @@ } function remove(h, key){ var - i = /*<>*/ key_index(h, key), + i = /*<>*/ key_index$0(h[2], h[3], key), prec$1 = /*<>*/ caml_check_bound(h[2], i)[i + 1], prec$0 = /*<>*/ 0, prec = prec$1; @@ -25832,7 +25856,7 @@ /*<>*/ } function find(h, key){ var - _j_ = /*<>*/ key_index(h, key), + _j_ = /*<>*/ key_index$0(h[2], h[3], key), match = /*<>*/ caml_check_bound(h[2], _j_)[_j_ + 1]; /*<>*/ if(! match) /*<>*/ throw caml_maybe_attach_backtrace @@ -25877,7 +25901,7 @@ /*<>*/ } function find_opt(h, key){ var - _j_ = /*<>*/ key_index(h, key), + _j_ = /*<>*/ key_index$0(h[2], h[3], key), match = /*<>*/ caml_check_bound(h[2], _j_)[_j_ + 1]; /*<>*/ if(! match) /*<>*/ return 0; @@ -25918,7 +25942,7 @@ /*<>*/ } function find_all(h, key){ var - _j_ = /*<>*/ key_index(h, key), + _j_ = /*<>*/ key_index$0(h[2], h[3], key), param = /*<>*/ /*<>*/ caml_check_bound (h[2], _j_) @@ -25960,7 +25984,7 @@ /*<>*/ } function replace(h, key, data){ var - i = /*<>*/ key_index(h, key), + i = /*<>*/ key_index$0(h[2], h[3], key), l = /*<>*/ caml_check_bound(h[2], i)[i + 1], param = /*<>*/ l; for(;;){ @@ -25992,7 +26016,7 @@ /*<>*/ } function mem(h, key){ var - _h_ = /*<>*/ key_index(h, key), + _h_ = /*<>*/ key_index$0(h[2], h[3], key), param = /*<>*/ /*<>*/ caml_check_bound (h[2], _h_) @@ -26551,8 +26575,8 @@ /*<>*/ } function Make(H){ var emptybucket = /*<>*/ create(0); - function get_index(t, h){ - /*<>*/ return caml_mod(h & Stdlib[19], t[1].length - 1) /*<>*/ ; + function get_index(_u_, h){ + /*<>*/ return caml_mod(h & Stdlib[19], _u_.length - 1) /*<>*/ ; } var limit = /*<>*/ 7; function create$0(sz){ @@ -26660,15 +26684,18 @@ accu = accu$0; } /*<>*/ } - function count(t){ + function count$0(_s_){ /*<>*/ return Stdlib_Array[22].call (null, function(_s_, _t_){ /*<>*/ return count_bucket(0, _s_, _t_); }, - t[1], + _s_, 0) /*<>*/ ; } + function count(_s_){ + /*<>*/ return count$0(_s_[1]) /*<>*/ ; + } function add_aux(t, setter, d, h, index){ var bucket$0 = @@ -26794,7 +26821,7 @@ setter, 0, h, - /*<>*/ get_index(newt, h)) /*<>*/ ; + /*<>*/ get_index(newt[1], h)) /*<>*/ ; }; /*<>*/ iter_weak(add_weak, t); /*<>*/ t[1] = newt[1]; @@ -26811,12 +26838,12 @@ function add(t, d){ var h = /*<>*/ caml_call1(H[2], d); /*<>*/ return /*<>*/ add_aux - (t, set, [0, d], h, /*<>*/ get_index(t, h)) /*<>*/ ; + (t, set, [0, d], h, /*<>*/ get_index(t[1], h)) /*<>*/ ; } function find_aux(t, d, k_found, k_notfound){ var h = /*<>*/ caml_call1(H[2], d), - index = /*<>*/ get_index(t, h), + index = /*<>*/ get_index(t[1], h), bucket = /*<>*/ caml_check_bound(t[1], index)[index + 1], hashes = @@ -26914,7 +26941,7 @@ function find_all(t, d){ var h = /*<>*/ caml_call1(H[2], d), - index = /*<>*/ get_index(t, h), + index = /*<>*/ get_index(t[1], h), bucket = /*<>*/ caml_check_bound(t[1], index)[index + 1], hashes = @@ -26956,7 +26983,13 @@ _c_ = /*<>*/ caml_check_bound(lens, _a_)[_a_ + 1], _d_ = /*<>*/ caml_check_bound(lens, _b_)[_b_ + 1], _e_ = /*<>*/ caml_check_bound(lens, 0)[1]; - /*<>*/ return [0, len, count(t), totlen, _e_, _d_, _c_] /*<>*/ ; + /*<>*/ return [0, + len, + count$0(t[1]), + totlen, + _e_, + _d_, + _c_] /*<>*/ ; /*<>*/ } /*<>*/ return [0, create$0, @@ -27035,37 +27068,35 @@ /*<>*/ return Stdlib_Queue[3].call (null, token, state[29]) /*<>*/ ; } - function pp_output_string(state, s){ + function pp_output_string(_ar_, s){ /*<>*/ return caml_call3 - (state[17], s, 0, caml_ml_string_length(s)) /*<>*/ ; + (_ar_, s, 0, caml_ml_string_length(s)) /*<>*/ ; } - function pp_string_width(state, s){ + function pp_string_width(_ar_, s){ /*<>*/ return caml_call3 - (state[18], s, 0, caml_ml_string_length(s)) /*<>*/ ; + (_ar_, s, 0, caml_ml_string_length(s)) /*<>*/ ; } - function pp_output_newline(state){ - /*<>*/ return caml_call1(state[20], 0) /*<>*/ ; + function pp_output_newline(_ar_){ + /*<>*/ return caml_call1(_ar_, 0) /*<>*/ ; } function format_pp_text(state, size, text){ /*<>*/ state[9] = state[9] - size | 0; - /*<>*/ pp_output_string(state, text); + /*<>*/ pp_output_string(state[17], text); /*<>*/ state[11] = 0; /*<>*/ } var cst = /*<>*/ ""; function format_string(state, s){ - var _ak_ = /*<>*/ s !== cst ? 1 : 0; - /*<>*/ return _ak_ + var _ar_ = /*<>*/ s !== cst ? 1 : 0; + /*<>*/ return _ar_ ? /*<>*/ format_pp_text - (state, /*<>*/ pp_string_width(state, s), s) - : _ak_ /*<>*/ ; + (state, + /*<>*/ pp_string_width(state[18], s), + s) + : _ar_ /*<>*/ ; } - function break_new_line(state, param, width){ - var - after = /*<>*/ param[3], - offset = param[2], - before = param[1]; + function break_new_line(before, offset, after, state, width){ /*<>*/ format_string(state, before); - /*<>*/ pp_output_newline(state); + /*<>*/ pp_output_newline(state[20]); /*<>*/ state[11] = 1; var indent = /*<>*/ (state[6] - width | 0) + offset | 0, @@ -27077,17 +27108,17 @@ /*<>*/ caml_call1(state[22], n); /*<>*/ return format_string(state, after) /*<>*/ ; } - function break_same_line(state, param){ - var - after = /*<>*/ param[3], - width = param[2], - before = param[1]; + var _a_ = /*<>*/ [0, cst, 0, cst]; + function break_line(state, width){ + /*<>*/ return break_new_line + (_a_[1], _a_[2], _a_[3], state, width) /*<>*/ ; + } + function break_same_line(before, width, after, state){ /*<>*/ format_string(state, before); /*<>*/ state[9] = state[9] - width | 0; /*<>*/ caml_call1(state[21], width); /*<>*/ return format_string(state, after) /*<>*/ ; } - var _a_ = /*<>*/ [0, cst, 0, cst]; function format_pp_token(state, size$0, param){ /*<>*/ if(typeof param === "number") switch(param){ @@ -27122,16 +27153,16 @@ match$4 = /*<>*/ Stdlib_Stack[8].call(null, state[2]); /*<>*/ if(! match$4) - /*<>*/ return pp_output_newline(state) /*<>*/ ; + /*<>*/ return pp_output_newline(state[20]) /*<>*/ ; var width$0 = /*<>*/ match$4[1][2]; - /*<>*/ return break_new_line(state, _a_, width$0) /*<>*/ ; + /*<>*/ return break_line(state, width$0) /*<>*/ ; case 4: var - _ai_ = + _ap_ = /*<>*/ state[10] !== (state[6] - state[9] | 0) ? 1 : 0; - if(! _ai_) return _ai_; + if(! _ap_) return _ap_; var match$1 = /*<>*/ Stdlib_Queue[6].call(null, state[29]); @@ -27153,7 +27184,7 @@ var tag_name = /*<>*/ match$5[1], marker = /*<>*/ caml_call1(state[26], tag_name); - /*<>*/ return pp_output_string(state, marker) /*<>*/ ; + /*<>*/ return pp_output_string(state[17], marker) /*<>*/ ; } /*<>*/ switch(param[0]){ case 0: @@ -27184,18 +27215,20 @@ box_type$0 = match$7[1]; /*<>*/ switch(box_type$0){ case 3: - var _aj_ = /*<>*/ state[9]; - return _aj_ < (size$0 + pp_string_width(state, before) | 0) + var _aq_ = /*<>*/ state[9]; + return _aq_ < (size$0 + pp_string_width(state[18], before) | 0) ? /*<>*/ break_new_line - (state, breaks, width$1) - : /*<>*/ break_same_line(state, fits) /*<>*/ ; + (breaks[1], breaks[2], breaks[3], state, width$1) + : /*<>*/ break_same_line + (fits[1], fits[2], fits[3], state) /*<>*/ ; case 4: /*<>*/ if(state[11]) - /*<>*/ return break_same_line(state, fits) /*<>*/ ; - var _ak_ = /*<>*/ state[9]; - return _ak_ < (size$0 + pp_string_width(state, before) | 0) + /*<>*/ return break_same_line + (fits[1], fits[2], fits[3], state) /*<>*/ ; + var _ar_ = /*<>*/ state[9]; + return _ar_ < (size$0 + pp_string_width(state[18], before) | 0) ? /*<>*/ break_new_line - (state, breaks, width$1) + (breaks[1], breaks[2], breaks[3], state, width$1) : ((state [6] - width$1 @@ -27204,14 +27237,16 @@ | 0) < state[10] ? /*<>*/ break_new_line - (state, breaks, width$1) - : /*<>*/ break_same_line(state, fits) /*<>*/ ; + (breaks[1], breaks[2], breaks[3], state, width$1) + : /*<>*/ break_same_line + (fits[1], fits[2], fits[3], state) /*<>*/ ; case 0: case 5: - /*<>*/ return break_same_line(state, fits) /*<>*/ ; + /*<>*/ return break_same_line + (fits[1], fits[2], fits[3], state) /*<>*/ ; default: /*<>*/ return break_new_line - (state, breaks, width$1) /*<>*/ ; + (breaks[1], breaks[2], breaks[3], state, width$1) /*<>*/ ; } case 3: var @@ -27239,9 +27274,9 @@ var offset = /*<>*/ tab - insertion_point | 0; /*<>*/ return 0 <= offset ? /*<>*/ break_same_line - (state, [0, cst, offset + n | 0, cst]) + (cst, offset + n | 0, cst, state) : /*<>*/ break_new_line - (state, [0, cst, tab + off$0 | 0, cst], state[6]) /*<>*/ ; + (cst, tab + off$0 | 0, cst, state, state[6]) /*<>*/ ; case 4: var ty = /*<>*/ param[2], @@ -27254,10 +27289,10 @@ var match$0 = match[1], width = match$0[2], box_type = match$0[1]; /*<>*/ if (state[9] < width && 3 >= box_type - 1 >>> 0) - /*<>*/ break_new_line(state, _a_, width); + /*<>*/ break_line(state, width); } else - /*<>*/ pp_output_newline(state); + /*<>*/ pp_output_newline(state[20]); } var width$2 = /*<>*/ state[9] - off$1 | 0, @@ -27273,7 +27308,7 @@ var tag_name$0 = /*<>*/ param[1], marker$0 = /*<>*/ caml_call1(state[25], tag_name$0); - /*<>*/ pp_output_string(state, marker$0); + /*<>*/ pp_output_string(state[17], marker$0); /*<>*/ return Stdlib_Stack[3].call (null, tag_name$0, state[5]) /*<>*/ ; } @@ -27290,10 +27325,10 @@ length = match$0[3], token = match$0[2], pending_count = /*<>*/ state[13] - state[12] | 0, - _ai_ = /*<>*/ 0 <= size ? 1 : 0, - _ah_ = - /*<>*/ _ai_ || (state[9] <= pending_count ? 1 : 0); - if(! _ah_) return _ah_; + _ap_ = /*<>*/ 0 <= size ? 1 : 0, + _ao_ = + /*<>*/ _ap_ || (state[9] <= pending_count ? 1 : 0); + if(! _ao_) return _ao_; /*<>*/ if(! Stdlib_Queue[6].call(null, state[29])) /*<>*/ return Stdlib[1].call (null, "Format: Unsynchronized access to formatter") /*<>*/ ; @@ -27361,55 +27396,55 @@ elem = /*<>*/ [0, size$0, [4, indent, br_ty], 0]; /*<>*/ return scan_push(state, 0, elem) /*<>*/ ; } - var _ah_ = /*<>*/ state[14] === state[15] ? 1 : 0; - if(! _ah_) return _ah_; + var _ao_ = /*<>*/ state[14] === state[15] ? 1 : 0; + if(! _ao_) return _ao_; var s = /*<>*/ state[16], - size = /*<>*/ pp_string_width(state, s); + size = /*<>*/ pp_string_width(state[18], s); /*<>*/ return enqueue_string_as(state, size, s) /*<>*/ ; } var zero = /*<>*/ 0; function pp_close_box(state, param){ - var _ag_ = /*<>*/ 1 < state[14] ? 1 : 0; - if(_ag_){ + var _an_ = /*<>*/ 1 < state[14] ? 1 : 0; + if(_an_){ /*<>*/ if(state[14] < state[15]){ /*<>*/ pp_enqueue(state, [0, zero, 1, 0]); /*<>*/ set_size(state, 1); /*<>*/ set_size(state, 0); } /*<>*/ state[14] = state[14] - 1 | 0; - var _ah_ = 0; + var _ao_ = 0; } else - var _ah_ = /*<>*/ _ag_; - return _ah_; + var _ao_ = /*<>*/ _an_; + return _ao_; /*<>*/ } function pp_open_stag(state, tag_name){ /*<>*/ if(state[23]){ /*<>*/ Stdlib_Stack[3].call(null, tag_name, state[4]); /*<>*/ caml_call1(state[27], tag_name); } - var _ag_ = /*<>*/ state[24]; - if(! _ag_) return _ag_; + var _an_ = /*<>*/ state[24]; + if(! _an_) return _an_; var token = /*<>*/ [6, tag_name]; /*<>*/ return pp_enqueue(state, [0, zero, token, 0]) /*<>*/ ; } function pp_close_stag(state, param){ /*<>*/ if(state[24]) /*<>*/ pp_enqueue(state, [0, zero, 5, 0]); - var _af_ = /*<>*/ state[23]; - if(_af_){ + var _am_ = /*<>*/ state[23]; + if(_am_){ var match = /*<>*/ Stdlib_Stack[5].call(null, state[4]); /*<>*/ if(match){ var tag_name = match[1]; /*<>*/ return caml_call1(state[28], tag_name) /*<>*/ ; } - var _ag_ = /*<>*/ 0; + var _an_ = /*<>*/ 0; } else - var _ag_ = /*<>*/ _af_; - return _ag_; + var _an_ = /*<>*/ _am_; + return _an_; /*<>*/ } function pp_set_print_tags(state, b){ /*<>*/ state[23] = b; @@ -27419,35 +27454,34 @@ /*<>*/ state[24] = b; return 0; /*<>*/ } - function pp_get_print_tags(state, param){ - /*<>*/ return state[23]; + function pp_get_print_tags(_am_, param){ + /*<>*/ return _am_[23]; /*<>*/ } - function pp_get_mark_tags(state, param){ - /*<>*/ return state[24]; + function pp_get_mark_tags(_am_, param){ + /*<>*/ return _am_[24]; /*<>*/ } function pp_set_tags(state, b){ /*<>*/ pp_set_print_tags(state, b); /*<>*/ return pp_set_mark_tags(state, b) /*<>*/ ; } - function pp_get_formatter_stag_function(state, param){ + function pp_get_formatter_stag_function(_am_, param){ /*<>*/ return [0, - state[25], - state[26], - state[27], - state[28]]; + _am_[25], + _am_[26], + _am_[27], + _am_[28]]; /*<>*/ } - function pp_set_formatter_stag_function(state, param){ - var - pct = /*<>*/ param[4], - pot = param[3], - mct = param[2], - mot = param[1]; + function pp_set_formatter_stag_function$0(mot, mct, pot, pct, state){ /*<>*/ state[25] = mot; /*<>*/ state[26] = mct; /*<>*/ state[27] = pot; /*<>*/ state[28] = pct; return 0; /*<>*/ } + function pp_set_formatter_stag_function(_am_, _al_){ + /*<>*/ return pp_set_formatter_stag_function$0 + (_al_[1], _al_[2], _al_[3], _al_[4], _am_) /*<>*/ ; + } function pp_rinit(state){ /*<>*/ state[12] = 1; /*<>*/ state[13] = 1; @@ -27474,28 +27508,28 @@ /*<>*/ state[13] = pp_infinity; /*<>*/ advance_left(state); /*<>*/ if(end_with_newline) - /*<>*/ pp_output_newline(state); + /*<>*/ pp_output_newline(state[20]); /*<>*/ return pp_rinit(state) /*<>*/ ; } /*<>*/ pp_close_box(state, 0); } /*<>*/ } function pp_print_as_size(state, size, s){ - var _af_ = /*<>*/ state[14] < state[15] ? 1 : 0; - return _af_ + var _al_ = /*<>*/ state[14] < state[15] ? 1 : 0; + return _al_ ? /*<>*/ enqueue_string_as(state, size, s) - : _af_ /*<>*/ ; + : _al_ /*<>*/ ; } function pp_print_as(state, isize, s){ /*<>*/ return pp_print_as_size(state, isize, s) /*<>*/ ; } function pp_print_string(state, s){ - var isize = /*<>*/ pp_string_width(state, s); + var isize = /*<>*/ pp_string_width(state[18], s); /*<>*/ return pp_print_as_size(state, isize, s) /*<>*/ ; } function pp_print_substring_as(pos, len, state, size, source){ - var _af_ = /*<>*/ state[14] < state[15] ? 1 : 0; - if(! _af_) return _af_; + var _al_ = /*<>*/ state[14] < state[15] ? 1 : 0; + if(! _al_) return _al_; var token = /*<>*/ [1, source, pos, len]; /*<>*/ return enqueue_advance (state, [0, size, token, size]) /*<>*/ ; @@ -27553,31 +27587,32 @@ /*<>*/ return caml_call1(state[19], 0) /*<>*/ ; } function pp_force_newline(state, param){ - var _af_ = /*<>*/ state[14] < state[15] ? 1 : 0; - return _af_ + var _al_ = /*<>*/ state[14] < state[15] ? 1 : 0; + return _al_ ? /*<>*/ enqueue_advance(state, [0, zero, 3, 0]) - : _af_ /*<>*/ ; + : _al_ /*<>*/ ; } function pp_print_if_newline(state, param){ - var _af_ = /*<>*/ state[14] < state[15] ? 1 : 0; - return _af_ + var _al_ = /*<>*/ state[14] < state[15] ? 1 : 0; + return _al_ ? /*<>*/ enqueue_advance(state, [0, zero, 4, 0]) - : _af_ /*<>*/ ; + : _al_ /*<>*/ ; } function pp_print_custom_break(state, fits, breaks){ var after = /*<>*/ fits[3], width = fits[2], before = fits[1], - _ae_ = /*<>*/ state[14] < state[15] ? 1 : 0; - if(! _ae_) return _ae_; + _ak_ = /*<>*/ state[14] < state[15] ? 1 : 0; + if(! _ak_) return _ak_; var size = /*<>*/ - state[13] | 0, token = /*<>*/ [2, fits, breaks], - _af_ = /*<>*/ pp_string_width(state, after), + _al_ = /*<>*/ pp_string_width(state[18], after), length = - /*<>*/ (pp_string_width(state, before) + width | 0) - + _af_ + /*<>*/ (pp_string_width(state[18], before) + width + | 0) + + _al_ | 0; /*<>*/ return scan_push (state, 1, [0, size, token, length]) /*<>*/ ; @@ -27594,30 +27629,30 @@ } function pp_open_tbox(state, param){ /*<>*/ state[14] = state[14] + 1 | 0; - var _ae_ = /*<>*/ state[14] < state[15] ? 1 : 0; - if(! _ae_) return _ae_; + var _ak_ = /*<>*/ state[14] < state[15] ? 1 : 0; + if(! _ak_) return _ak_; /*<>*/ return enqueue_advance (state, [0, zero, [5, [0, [0, 0]]], 0]) /*<>*/ ; } function pp_close_tbox(state, param){ - var _ad_ = /*<>*/ 1 < state[14] ? 1 : 0; - if(_ad_){ - var _ae_ = /*<>*/ state[14] < state[15] ? 1 : 0; - if(_ae_){ + var _aj_ = /*<>*/ 1 < state[14] ? 1 : 0; + if(_aj_){ + var _ak_ = /*<>*/ state[14] < state[15] ? 1 : 0; + if(_ak_){ /*<>*/ enqueue_advance(state, [0, zero, 2, 0]); /*<>*/ state[14] = state[14] - 1 | 0; - var _ac_ = 0; + var _ai_ = 0; } else - var _ac_ = /*<>*/ _ae_; + var _ai_ = /*<>*/ _ak_; } else - var _ac_ = /*<>*/ _ad_; - return _ac_; + var _ai_ = /*<>*/ _aj_; + return _ai_; /*<>*/ } function pp_print_tbreak(state, width, offset){ - var _ac_ = /*<>*/ state[14] < state[15] ? 1 : 0; - if(! _ac_) return _ac_; + var _ai_ = /*<>*/ state[14] < state[15] ? 1 : 0; + if(! _ai_) return _ai_; var size = /*<>*/ - state[13] | 0, elem = /*<>*/ [0, size, [3, width, offset], width]; @@ -27627,62 +27662,62 @@ /*<>*/ return pp_print_tbreak(state, 0, 0) /*<>*/ ; } function pp_set_tab(state, param){ - var _ac_ = /*<>*/ state[14] < state[15] ? 1 : 0; - if(! _ac_) return _ac_; + var _ai_ = /*<>*/ state[14] < state[15] ? 1 : 0; + if(! _ai_) return _ai_; /*<>*/ return enqueue_advance(state, [0, zero, 0, 0]) /*<>*/ ; } function pp_set_max_boxes(state, n){ var - _ab_ = /*<>*/ 1 < n ? 1 : 0, - _ac_ = _ab_ ? (state[15] = n, 0) : _ab_; - return _ac_; + _ah_ = /*<>*/ 1 < n ? 1 : 0, + _ai_ = _ah_ ? (state[15] = n, 0) : _ah_; + return _ai_; /*<>*/ } - function pp_get_max_boxes(state, param){ - /*<>*/ return state[15]; + function pp_get_max_boxes(_ah_, param){ + /*<>*/ return _ah_[15]; /*<>*/ } - function pp_over_max_boxes(state, param){ - /*<>*/ return state[14] === state[15] ? 1 : 0; + function pp_over_max_boxes(_ah_, param){ + /*<>*/ return _ah_[14] === _ah_[15] ? 1 : 0; /*<>*/ } function pp_set_ellipsis_text(state, s){ /*<>*/ state[16] = s; return 0; /*<>*/ } - function pp_get_ellipsis_text(state, param){ - /*<>*/ return state[16]; + function pp_get_ellipsis_text(_ah_, param){ + /*<>*/ return _ah_[16]; /*<>*/ } function pp_limit(n){ /*<>*/ return n < 1000000010 ? n : 1000000009 /*<>*/ ; } function pp_set_max_indent(state, n$0){ - var _ab_ = /*<>*/ 1 < n$0 ? 1 : 0; - if(! _ab_) return _ab_; + var _ah_ = /*<>*/ 1 < n$0 ? 1 : 0; + if(! _ah_) return _ah_; var n$1 = /*<>*/ state[6] - n$0 | 0, - _aa_ = /*<>*/ 1 <= n$1 ? 1 : 0; - if(! _aa_) return _aa_; + _ag_ = /*<>*/ 1 <= n$1 ? 1 : 0; + if(! _ag_) return _ag_; var n = /*<>*/ pp_limit(n$1); /*<>*/ state[7] = n; /*<>*/ state[8] = state[6] - state[7] | 0; /*<>*/ return pp_rinit(state) /*<>*/ ; } - function pp_get_max_indent(state, param){ - /*<>*/ return state[8]; + function pp_get_max_indent(_ag_, param){ + /*<>*/ return _ag_[8]; /*<>*/ } function pp_set_margin(state, n){ - var _$_ = /*<>*/ 1 <= n ? 1 : 0; - if(! _$_) return _$_; + var _af_ = /*<>*/ 1 <= n ? 1 : 0; + if(! _af_) return _af_; var n$0 = /*<>*/ pp_limit(n); /*<>*/ state[6] = n$0; /*<>*/ if(state[8] <= state[6]) var new_max_indent = /*<>*/ state[8]; else var - _aa_ = + _ag_ = /*<>*/ Stdlib_Int[11].call (null, state[6] - state[7] | 0, state[6] / 2 | 0), new_max_indent = /*<>*/ /*<>*/ Stdlib_Int[11].call - (null, _aa_, 1); + (null, _ag_, 1); /*<>*/ return pp_set_max_indent(state, new_max_indent) /*<>*/ ; } var @@ -27690,62 +27725,57 @@ _d_ = [1, "margin >= pp_infinity"], _e_ = [0, 0], _f_ = [1, "max_indent < 2"]; - function validate_geometry(param){ - var margin = /*<>*/ param[2], max_indent = param[1]; + function validate_geometry(max_indent, margin){ /*<>*/ return 2 <= max_indent ? margin <= max_indent ? _c_ : 1000000010 <= margin ? _d_ : _e_ : _f_ /*<>*/ ; } function check_geometry(geometry){ - /*<>*/ return 0 === validate_geometry(geometry)[0] + /*<>*/ return 0 + === validate_geometry(geometry[1], geometry[2])[0] ? 1 : 0 /*<>*/ ; } - function pp_get_margin(state, param){ - /*<>*/ return state[6]; + function pp_get_margin(_af_, param){ + /*<>*/ return _af_[6]; /*<>*/ } - function pp_set_full_geometry(state, param){ - var margin = /*<>*/ param[2], max_indent = param[1]; + function pp_set_full_geometry(max_indent, margin, state){ /*<>*/ pp_set_margin(state, margin); /*<>*/ pp_set_max_indent(state, max_indent); /*<>*/ return 0; /*<>*/ } function pp_set_geometry(state, max_indent, margin){ var - geometry = /*<>*/ [0, max_indent, margin], - match = /*<>*/ validate_geometry(geometry); + match = /*<>*/ validate_geometry(max_indent, margin); /*<>*/ if(0 === match[0]) - /*<>*/ return pp_set_full_geometry(state, geometry) /*<>*/ ; + /*<>*/ return pp_set_full_geometry + (max_indent, margin, state) /*<>*/ ; var msg = /*<>*/ match[1], - _$_ = + _af_ = /*<>*/ Stdlib[28].call (null, "Format.pp_set_geometry: ", msg); /*<>*/ throw caml_maybe_attach_backtrace - ([0, Stdlib[6], _$_], 1); + ([0, Stdlib[6], _af_], 1); /*<>*/ } function pp_safe_set_geometry(state, max_indent, margin){ - var geometry = /*<>*/ [0, max_indent, margin]; - /*<>*/ return 0 === validate_geometry(geometry)[0] - ? /*<>*/ pp_set_full_geometry(state, geometry) + /*<>*/ return 0 + === validate_geometry(max_indent, margin)[0] + ? /*<>*/ pp_set_full_geometry + (max_indent, margin, state) : 0 /*<>*/ ; } function pp_get_geometry(state, param){ /*<>*/ return [0, state[8], state[6]]; /*<>*/ } function pp_update_geometry(state, update){ - var geometry = /*<>*/ pp_get_geometry(state, 0); - /*<>*/ return /*<>*/ pp_set_full_geometry - (state, /*<>*/ caml_call1(update, geometry)) /*<>*/ ; - } - function pp_set_formatter_out_functions(state, param){ - var - j = /*<>*/ param[6], - i = param[5], - h = param[4], - g = param[3], - f2 = param[2], - f = param[1]; + var + geometry = /*<>*/ pp_get_geometry(state, 0), + _af_ = /*<>*/ caml_call1(update, geometry); + /*<>*/ return pp_set_full_geometry + (_af_[1], _af_[2], state); + } + function pp_set_formatter_out_functions$0(f, f2, g, h, i, j, state){ /*<>*/ state[17] = f; /*<>*/ state[18] = f2; /*<>*/ state[19] = g; @@ -27754,33 +27784,37 @@ /*<>*/ state[22] = j; return 0; /*<>*/ } - function pp_get_formatter_out_functions(state, param){ + function pp_set_formatter_out_functions(_af_, _ae_){ + /*<>*/ return pp_set_formatter_out_functions$0 + (_ae_[1], _ae_[2], _ae_[3], _ae_[4], _ae_[5], _ae_[6], _af_) /*<>*/ ; + } + function pp_get_formatter_out_functions(_ae_, param){ /*<>*/ return [0, - state[17], - state[18], - state[19], - state[20], - state[21], - state[22]]; + _ae_[17], + _ae_[18], + _ae_[19], + _ae_[20], + _ae_[21], + _ae_[22]]; /*<>*/ } function pp_set_formatter_output_functi(state, f, g){ /*<>*/ state[17] = f; /*<>*/ state[19] = g; return 0; /*<>*/ } - function pp_get_formatter_output_functi(state, param){ - /*<>*/ return [0, state[17], state[19]]; + function pp_get_formatter_output_functi(_ae_, param){ + /*<>*/ return [0, _ae_[17], _ae_[19]]; /*<>*/ } - function display_newline(state, param){ - /*<>*/ return caml_call3(state[17], "\n", 0, 1) /*<>*/ ; + function display_newline(_ae_, param){ + /*<>*/ return caml_call3(_ae_, "\n", 0, 1) /*<>*/ ; } var blank_line = /*<>*/ Stdlib_String[1].call(null, 80, 32); function display_blanks(state, n$1){ var n = /*<>*/ n$1; for(;;){ - var _$_ = 0 < n ? 1 : 0; - if(! _$_) return _$_; + var _ae_ = 0 < n ? 1 : 0; + if(! _ae_) return _ae_; /*<>*/ if(80 >= n) /*<>*/ return caml_call3(state[17], blank_line, 0, n) /*<>*/ ; /*<>*/ caml_call3(state[17], blank_line, 0, 80); @@ -27789,26 +27823,26 @@ } /*<>*/ } function pp_set_formatter_out_channel(state, oc){ - var _Y_ = /*<>*/ Stdlib[69]; + var _ab_ = /*<>*/ Stdlib[69]; /*<>*/ state[17] = - function(_Z_, ___, _$_){ - /*<>*/ return _Y_(oc, _Z_, ___, _$_); + function(_ac_, _ad_, _ae_){ + /*<>*/ return _ab_(oc, _ac_, _ad_, _ae_); }; /*<>*/ state[19] = function(param){ /*<>*/ return Stdlib[63].call(null, oc) /*<>*/ ; }; /*<>*/ state[20] = - function(_Y_){ - /*<>*/ return display_newline(state, _Y_); + function(_ab_){ + /*<>*/ return display_newline(state[17], _ab_); }; /*<>*/ state[21] = - function(_Y_){ - /*<>*/ return display_blanks(state, _Y_); + function(_ab_){ + /*<>*/ return display_blanks(state, _ab_); }; /*<>*/ state[22] = - function(_Y_){ - /*<>*/ return display_blanks(state, _Y_); + function(_ab_){ + /*<>*/ return display_blanks(state, _ab_); }; /*<>*/ return 0; } @@ -27818,19 +27852,19 @@ /*<>*/ return cst; var s = /*<>*/ param[2], - _Y_ = /*<>*/ Stdlib[28].call(null, s, cst$0); - /*<>*/ return Stdlib[28].call(null, "<", _Y_) /*<>*/ ; + _ab_ = /*<>*/ Stdlib[28].call(null, s, cst$0); + /*<>*/ return Stdlib[28].call(null, "<", _ab_) /*<>*/ ; } function default_pp_mark_close_tag(param){ /*<>*/ if(param[1] !== String_tag) /*<>*/ return cst; var s = /*<>*/ param[2], - _Y_ = /*<>*/ Stdlib[28].call(null, s, cst$0); - /*<>*/ return Stdlib[28].call(null, "<\/", _Y_) /*<>*/ ; + _ab_ = /*<>*/ Stdlib[28].call(null, s, cst$0); + /*<>*/ return Stdlib[28].call(null, "<\/", _ab_) /*<>*/ ; } - function default_pp_print_open_tag(_Y_){ /*<>*/ return 0;} - function default_pp_print_close_tag(_Y_){return 0;} + function default_pp_print_open_tag(_ab_){ /*<>*/ return 0;} + function default_pp_print_close_tag(_ab_){return 0;} function utf_8_scalar_width(s, current, len){ var stop = /*<>*/ current + len | 0, @@ -27849,8 +27883,7 @@ current$0 = current$1; } /*<>*/ } - function ascii_width(_Y_, param, len){ - /*<>*/ return len; + function ascii_width(_ab_, param, len){ /*<>*/ return len; /*<>*/ } var _g_ = /*<>*/ [4, 0, 3]; function pp_make_formatter(f, g, h, i, j){ @@ -27863,17 +27896,17 @@ /*<>*/ Stdlib_Stack[3].call (null, [0, 1, sys_tok], scan_stack); var - _V_ = /*<>*/ Stdlib[19], - _W_ = Stdlib_Stack[2].call(null, 0), - _X_ = /*<>*/ Stdlib_Stack[2].call(null, 0), - _Y_ = /*<>*/ Stdlib_Stack[2].call(null, 0), + ___ = /*<>*/ Stdlib[19], + _$_ = Stdlib_Stack[2].call(null, 0), + _aa_ = /*<>*/ Stdlib_Stack[2].call(null, 0), + _ab_ = /*<>*/ Stdlib_Stack[2].call(null, 0), pp_margin = /*<>*/ 78; /*<>*/ return [0, scan_stack, Stdlib_Stack[2].call(null, 0), - _Y_, - _X_, - _W_, + _ab_, + _aa_, + _$_, pp_margin, 10, 68, @@ -27883,7 +27916,7 @@ 1, 1, 1, - _V_, + ___, ".", f, utf_8_scalar_width, @@ -27909,40 +27942,40 @@ /*<>*/ pp_make_formatter (output, flush, - function(_V_){ /*<>*/ return 0;}, - function(_V_){return 0;}, - function(_V_){return 0;}); + function(___){ /*<>*/ return 0;}, + function(___){return 0;}, + function(___){return 0;}); /*<>*/ ppf[20] = - function(_V_){ - /*<>*/ return display_newline(ppf, _V_); + function(___){ + /*<>*/ return display_newline(ppf[17], ___); }; /*<>*/ ppf[21] = - function(_V_){ - /*<>*/ return display_blanks(ppf, _V_); + function(___){ + /*<>*/ return display_blanks(ppf, ___); }; /*<>*/ ppf[22] = - function(_V_){ - /*<>*/ return display_blanks(ppf, _V_); + function(___){ + /*<>*/ return display_blanks(ppf, ___); }; /*<>*/ return ppf; /*<>*/ } function formatter_of_out_channel(oc){ - var _S_ = /*<>*/ Stdlib[69]; + var _X_ = /*<>*/ Stdlib[69]; /*<>*/ return make_formatter - (function(_T_, _U_, _V_){ - /*<>*/ return _S_(oc, _T_, _U_, _V_); + (function(_Y_, _Z_, ___){ + /*<>*/ return _X_(oc, _Y_, _Z_, ___); }, function(param){ /*<>*/ return Stdlib[63].call(null, oc) /*<>*/ ; }) /*<>*/ ; } function formatter_of_buffer(b){ - var _P_ = /*<>*/ Stdlib_Buffer[18]; + var _U_ = /*<>*/ Stdlib_Buffer[18]; /*<>*/ return make_formatter - (function(_Q_, _R_, _S_){ - /*<>*/ return _P_(b, _Q_, _R_, _S_); + (function(_V_, _W_, _X_){ + /*<>*/ return _U_(b, _V_, _W_, _X_); }, - function(_P_){ /*<>*/ return 0;}) /*<>*/ ; + function(_U_){ /*<>*/ return 0;}) /*<>*/ ; } var pp_buffer_size = /*<>*/ 512; function pp_make_buffer(param){ @@ -27975,9 +28008,9 @@ (Stdlib_Domain[11][3], str_formatter_key, str_formatter); function buffered_out_string(key, str, ofs, len){ var - _P_ = /*<>*/ caml_call1(Stdlib_Domain[11][2], key); + _U_ = /*<>*/ caml_call1(Stdlib_Domain[11][2], key); /*<>*/ return Stdlib_Buffer[18].call - (null, _P_, str, ofs, len) /*<>*/ ; + (null, _U_, str, ofs, len) /*<>*/ ; } function buffered_out_flush(oc, key, param){ var @@ -28011,36 +28044,36 @@ 0, function(param){ var - _M_ = /*<>*/ Stdlib[39], + _R_ = /*<>*/ Stdlib[39], ppf = /*<>*/ pp_make_formatter - (function(_N_, _O_, _P_){ + (function(_S_, _T_, _U_){ /*<>*/ return buffered_out_string - (std_buf_key, _N_, _O_, _P_); + (std_buf_key, _S_, _T_, _U_); }, - function(_N_){ + function(_S_){ /*<>*/ return buffered_out_flush - (_M_, std_buf_key, _N_); + (_R_, std_buf_key, _S_); }, - function(_M_){ /*<>*/ return 0;}, - function(_M_){return 0;}, - function(_M_){return 0;}); + function(_R_){ /*<>*/ return 0;}, + function(_R_){return 0;}, + function(_R_){return 0;}); /*<>*/ ppf[20] = - function(_M_){ - /*<>*/ return display_newline(ppf, _M_); + function(_R_){ + /*<>*/ return display_newline(ppf[17], _R_); }; /*<>*/ ppf[21] = - function(_M_){ - /*<>*/ return display_blanks(ppf, _M_); + function(_R_){ + /*<>*/ return display_blanks(ppf, _R_); }; /*<>*/ ppf[22] = - function(_M_){ - /*<>*/ return display_blanks(ppf, _M_); + function(_R_){ + /*<>*/ return display_blanks(ppf, _R_); }; /*<>*/ Stdlib_Domain[6].call (null, - function(_M_){ - /*<>*/ return pp_print_flush(ppf, _M_); + function(_R_){ + /*<>*/ return pp_print_flush(ppf, _R_); }); /*<>*/ return ppf; /*<>*/ }); @@ -28053,36 +28086,36 @@ 0, function(param){ var - _J_ = /*<>*/ Stdlib[40], + _O_ = /*<>*/ Stdlib[40], ppf = /*<>*/ pp_make_formatter - (function(_K_, _L_, _M_){ + (function(_P_, _Q_, _R_){ /*<>*/ return buffered_out_string - (err_buf_key, _K_, _L_, _M_); + (err_buf_key, _P_, _Q_, _R_); }, - function(_K_){ + function(_P_){ /*<>*/ return buffered_out_flush - (_J_, err_buf_key, _K_); + (_O_, err_buf_key, _P_); }, - function(_J_){ /*<>*/ return 0;}, - function(_J_){return 0;}, - function(_J_){return 0;}); + function(_O_){ /*<>*/ return 0;}, + function(_O_){return 0;}, + function(_O_){return 0;}); /*<>*/ ppf[20] = - function(_J_){ - /*<>*/ return display_newline(ppf, _J_); + function(_O_){ + /*<>*/ return display_newline(ppf[17], _O_); }; /*<>*/ ppf[21] = - function(_J_){ - /*<>*/ return display_blanks(ppf, _J_); + function(_O_){ + /*<>*/ return display_blanks(ppf, _O_); }; /*<>*/ ppf[22] = - function(_J_){ - /*<>*/ return display_blanks(ppf, _J_); + function(_O_){ + /*<>*/ return display_blanks(ppf, _O_); }; /*<>*/ Stdlib_Domain[6].call (null, - function(_J_){ - /*<>*/ return pp_print_flush(ppf, _J_); + function(_O_){ + /*<>*/ return pp_print_flush(ppf, _O_); }); /*<>*/ return ppf; /*<>*/ }); @@ -28129,19 +28162,19 @@ buf = /*<>*/ Stdlib_Buffer[1].call (null, pp_buffer_size), - _G_ = /*<>*/ Stdlib_Buffer[18]; - function output$0(_H_, _I_, _J_){ - /*<>*/ return _G_(buf, _H_, _I_, _J_); + _L_ = /*<>*/ Stdlib_Buffer[18]; + function output$0(_M_, _N_, _O_){ + /*<>*/ return _L_(buf, _M_, _N_, _O_); } function flush$0(param){ var - _G_ = + _L_ = /*<>*/ Stdlib_Buffer[7].call(null, buf); /*<>*/ /*<>*/ caml_call3 (output, /*<>*/ Stdlib_Buffer[2].call(null, buf), 0, - _G_); + _L_); /*<>*/ Stdlib_Buffer[8].call(null, buf); /*<>*/ return caml_call1(flush, 0) /*<>*/ ; } @@ -28150,10 +28183,10 @@ }) /*<>*/ ; } function synchronized_formatter_of_out_(oc){ - var _D_ = /*<>*/ Stdlib[69]; + var _I_ = /*<>*/ Stdlib[69]; /*<>*/ return make_synchronized_formatter - (function(_E_, _F_, _G_){ - /*<>*/ return _D_(oc, _E_, _F_, _G_); + (function(_J_, _K_, _L_){ + /*<>*/ return _I_(oc, _J_, _K_, _L_); }, function(param){ /*<>*/ return Stdlib[63].call(null, oc) /*<>*/ ; @@ -28165,11 +28198,15 @@ /*<>*/ sob[1] = 0; return 0; /*<>*/ } - function get_symbolic_output_buffer(sob){ - /*<>*/ return Stdlib_List[11].call(null, sob[1]) /*<>*/ ; + function get_symbolic_output_buffer$0(_I_){ + /*<>*/ return Stdlib_List[11].call(null, _I_) /*<>*/ ; + } + function get_symbolic_output_buffer(_I_){ + /*<>*/ return get_symbolic_output_buffer$0(_I_[1]) /*<>*/ ; } function flush_symbolic_output_buffer(sob){ - var items = /*<>*/ get_symbolic_output_buffer(sob); + var + items = /*<>*/ get_symbolic_output_buffer$0(sob[1]); /*<>*/ clear_symbolic_output_buffer(sob); /*<>*/ return items; /*<>*/ } @@ -28388,11 +28425,9 @@ v) /*<>*/ ; } function get_margin(v){ - var - state = - /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key); - /*<>*/ return state[6]; + /*<>*/ return caml_call1 + (Stdlib_Domain[11][2], std_formatter_key) + [6] /*<>*/ ; /*<>*/ } function set_max_indent(v){ /*<>*/ return /*<>*/ pp_set_max_indent @@ -28401,11 +28436,9 @@ v) /*<>*/ ; } function get_max_indent(v){ - var - state = - /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key); - /*<>*/ return state[8]; + /*<>*/ return caml_call1 + (Stdlib_Domain[11][2], std_formatter_key) + [8] /*<>*/ ; /*<>*/ } function set_geometry(max_indent, margin){ /*<>*/ return /*<>*/ pp_set_geometry @@ -28440,18 +28473,17 @@ v) /*<>*/ ; } function get_max_boxes(v){ - var - state = - /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key); - /*<>*/ return state[15]; + /*<>*/ return caml_call1 + (Stdlib_Domain[11][2], std_formatter_key) + [15] /*<>*/ ; /*<>*/ } function over_max_boxes(v){ - /*<>*/ return /*<>*/ pp_over_max_boxes - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; - } + var + _I_ = + /*<>*/ caml_call1 + (Stdlib_Domain[11][2], std_formatter_key); + /*<>*/ return _I_[14] === _I_[15] ? 1 : 0; + /*<>*/ } function set_ellipsis_text(v){ /*<>*/ return /*<>*/ pp_set_ellipsis_text ( /*<>*/ caml_call1 @@ -28459,11 +28491,9 @@ v) /*<>*/ ; } function get_ellipsis_text(v){ - var - state = - /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key); - /*<>*/ return state[16]; + /*<>*/ return caml_call1 + (Stdlib_Domain[11][2], std_formatter_key) + [16] /*<>*/ ; /*<>*/ } function set_formatter_out_channel(v){ /*<>*/ return /*<>*/ pp_set_formatter_out_channel @@ -28472,17 +28502,26 @@ v) /*<>*/ ; } function set_formatter_out_functions(v){ - /*<>*/ return /*<>*/ pp_set_formatter_out_functions - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + var + _I_ = + /*<>*/ caml_call1 + (Stdlib_Domain[11][2], std_formatter_key); + /*<>*/ return pp_set_formatter_out_functions$0 + (v[1], v[2], v[3], v[4], v[5], v[6], _I_) /*<>*/ ; } function get_formatter_out_functions(v){ - /*<>*/ return /*<>*/ pp_get_formatter_out_functions - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; - } + var + _I_ = + /*<>*/ caml_call1 + (Stdlib_Domain[11][2], std_formatter_key); + /*<>*/ return [0, + _I_[17], + _I_[18], + _I_[19], + _I_[20], + _I_[21], + _I_[22]]; + /*<>*/ } function set_formatter_output_functions(v, w){ /*<>*/ return /*<>*/ pp_set_formatter_output_functi ( /*<>*/ caml_call1 @@ -28491,23 +28530,27 @@ w) /*<>*/ ; } function get_formatter_output_functions(v){ - /*<>*/ return /*<>*/ pp_get_formatter_output_functi - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; - } + var + _I_ = + /*<>*/ caml_call1 + (Stdlib_Domain[11][2], std_formatter_key); + /*<>*/ return [0, _I_[17], _I_[19]]; + /*<>*/ } function set_formatter_stag_functions(v){ - /*<>*/ return /*<>*/ pp_set_formatter_stag_function - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + var + _I_ = + /*<>*/ caml_call1 + (Stdlib_Domain[11][2], std_formatter_key); + /*<>*/ return pp_set_formatter_stag_function$0 + (v[1], v[2], v[3], v[4], _I_) /*<>*/ ; } function get_formatter_stag_functions(v){ - /*<>*/ return /*<>*/ pp_get_formatter_stag_function - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; - } + var + _I_ = + /*<>*/ caml_call1 + (Stdlib_Domain[11][2], std_formatter_key); + /*<>*/ return [0, _I_[25], _I_[26], _I_[27], _I_[28]]; + /*<>*/ } function set_print_tags(v){ /*<>*/ return /*<>*/ pp_set_print_tags ( /*<>*/ caml_call1 @@ -28515,11 +28558,9 @@ v) /*<>*/ ; } function get_print_tags(v){ - var - state = - /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key); - /*<>*/ return state[23]; + /*<>*/ return caml_call1 + (Stdlib_Domain[11][2], std_formatter_key) + [23] /*<>*/ ; /*<>*/ } function set_mark_tags(v){ /*<>*/ return /*<>*/ pp_set_mark_tags @@ -28528,11 +28569,9 @@ v) /*<>*/ ; } function get_mark_tags(v){ - var - state = - /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key); - /*<>*/ return state[24]; + /*<>*/ return caml_call1 + (Stdlib_Domain[11][2], std_formatter_key) + [24] /*<>*/ ; /*<>*/ } function set_tags(v){ /*<>*/ return /*<>*/ pp_set_tags @@ -28582,8 +28621,8 @@ /*<>*/ } /*<>*/ for(;;){ if(right[1] === len){ - var _D_ = /*<>*/ left[1] !== len ? 1 : 0; - return _D_ ? /*<>*/ flush(0) : _D_ /*<>*/ ; + var _I_ = /*<>*/ left[1] !== len ? 1 : 0; + return _I_ ? /*<>*/ flush(0) : _I_ /*<>*/ ; } var match = /*<>*/ caml_string_get(s, right[1]); /*<>*/ if(10 === match){ @@ -28779,7 +28818,7 @@ /*<>*/ opt ? opt[1] : function - (_D_, param){ + (_I_, param){ /*<>*/ return 0; /*<>*/ }; /*<>*/ if(! param) @@ -28874,55 +28913,55 @@ var acc$1 = /*<>*/ match[1]; /*<>*/ output_acc(ppf, p$0); var - _D_ = /*<>*/ compute_tag(output_acc, acc$1), + _I_ = /*<>*/ compute_tag(output_acc, acc$1), match$0 = - /*<>*/ CamlinternalFormat[20].call(null, _D_), + /*<>*/ CamlinternalFormat[20].call(null, _I_), bty = /*<>*/ match$0[2], indent = match$0[1]; /*<>*/ return pp_open_box_gen(ppf, indent, bty) /*<>*/ ; case 2: - var _v_ = /*<>*/ acc[1]; - if(typeof _v_ !== "number" && 0 === _v_[0]){ - var _z_ = _v_[2]; - if(typeof _z_ !== "number" && 1 === _z_[0]){ - var s$0 = acc[2], size = _z_[2], p$2 = _v_[1]; + var _A_ = /*<>*/ acc[1]; + if(typeof _A_ !== "number" && 0 === _A_[0]){ + var _E_ = _A_[2]; + if(typeof _E_ !== "number" && 1 === _E_[0]){ + var s$0 = acc[2], size = _E_[2], p$2 = _A_[1]; break a; } } - var s = acc[2], p$1 = _v_; + var s = acc[2], p$1 = _A_; break b; case 3: - var _w_ = acc[1]; - if(typeof _w_ !== "number" && 0 === _w_[0]){ - var _A_ = _w_[2]; - if(typeof _A_ !== "number" && 1 === _A_[0]){ - var c$0 = acc[2], size$0 = _A_[2], p$4 = _w_[1]; + var _B_ = acc[1]; + if(typeof _B_ !== "number" && 0 === _B_[0]){ + var _F_ = _B_[2]; + if(typeof _F_ !== "number" && 1 === _F_[0]){ + var c$0 = acc[2], size$0 = _F_[2], p$4 = _B_[1]; break c; } } - var c = acc[2], p$3 = _w_; + var c = acc[2], p$3 = _B_; break; case 4: - var _x_ = acc[1]; - if(typeof _x_ !== "number" && 0 === _x_[0]){ - var _B_ = _x_[2]; - if(typeof _B_ !== "number" && 1 === _B_[0]){ - var s$0 = acc[2], size = _B_[2], p$2 = _x_[1]; + var _C_ = acc[1]; + if(typeof _C_ !== "number" && 0 === _C_[0]){ + var _G_ = _C_[2]; + if(typeof _G_ !== "number" && 1 === _G_[0]){ + var s$0 = acc[2], size = _G_[2], p$2 = _C_[1]; break a; } } - var s = acc[2], p$1 = _x_; + var s = acc[2], p$1 = _C_; break b; case 5: - var _y_ = acc[1]; - if(typeof _y_ !== "number" && 0 === _y_[0]){ - var _C_ = _y_[2]; - if(typeof _C_ !== "number" && 1 === _C_[0]){ - var c$0 = acc[2], size$0 = _C_[2], p$4 = _y_[1]; + var _D_ = acc[1]; + if(typeof _D_ !== "number" && 0 === _D_[0]){ + var _H_ = _D_[2]; + if(typeof _H_ !== "number" && 1 === _H_[0]){ + var c$0 = acc[2], size$0 = _H_[2], p$4 = _D_[1]; break c; } } - var c = acc[2], p$3 = _y_; + var c = acc[2], p$3 = _D_; break; case 6: var f$0 = acc[2], p$5 = acc[1]; @@ -28980,55 +29019,55 @@ var acc$1 = /*<>*/ match[1]; /*<>*/ strput_acc(ppf, p$0); var - _v_ = /*<>*/ compute_tag(strput_acc, acc$1), + _A_ = /*<>*/ compute_tag(strput_acc, acc$1), match$0 = - /*<>*/ CamlinternalFormat[20].call(null, _v_), + /*<>*/ CamlinternalFormat[20].call(null, _A_), bty = /*<>*/ match$0[2], indent = match$0[1]; /*<>*/ return pp_open_box_gen(ppf, indent, bty) /*<>*/ ; case 2: - var _n_ = /*<>*/ acc[1]; - if(typeof _n_ !== "number" && 0 === _n_[0]){ - var _r_ = _n_[2]; - if(typeof _r_ !== "number" && 1 === _r_[0]){ - var s$0 = acc[2], size = _r_[2], p$2 = _n_[1]; + var _s_ = /*<>*/ acc[1]; + if(typeof _s_ !== "number" && 0 === _s_[0]){ + var _w_ = _s_[2]; + if(typeof _w_ !== "number" && 1 === _w_[0]){ + var s$0 = acc[2], size = _w_[2], p$2 = _s_[1]; break a; } } - var s = acc[2], p$1 = _n_; + var s = acc[2], p$1 = _s_; break b; case 3: - var _o_ = acc[1]; - if(typeof _o_ !== "number" && 0 === _o_[0]){ - var _s_ = _o_[2]; - if(typeof _s_ !== "number" && 1 === _s_[0]){ - var c$0 = acc[2], size$0 = _s_[2], p$4 = _o_[1]; + var _t_ = acc[1]; + if(typeof _t_ !== "number" && 0 === _t_[0]){ + var _x_ = _t_[2]; + if(typeof _x_ !== "number" && 1 === _x_[0]){ + var c$0 = acc[2], size$0 = _x_[2], p$4 = _t_[1]; break c; } } - var c = acc[2], p$3 = _o_; + var c = acc[2], p$3 = _t_; break; case 4: - var _p_ = acc[1]; - if(typeof _p_ !== "number" && 0 === _p_[0]){ - var _t_ = _p_[2]; - if(typeof _t_ !== "number" && 1 === _t_[0]){ - var s$0 = acc[2], size = _t_[2], p$2 = _p_[1]; + var _u_ = acc[1]; + if(typeof _u_ !== "number" && 0 === _u_[0]){ + var _y_ = _u_[2]; + if(typeof _y_ !== "number" && 1 === _y_[0]){ + var s$0 = acc[2], size = _y_[2], p$2 = _u_[1]; break a; } } - var s = acc[2], p$1 = _p_; + var s = acc[2], p$1 = _u_; break b; case 5: - var _q_ = acc[1]; - if(typeof _q_ !== "number" && 0 === _q_[0]){ - var _u_ = _q_[2]; - if(typeof _u_ !== "number" && 1 === _u_[0]){ - var c$0 = acc[2], size$0 = _u_[2], p$4 = _q_[1]; + var _v_ = acc[1]; + if(typeof _v_ !== "number" && 0 === _v_[0]){ + var _z_ = _v_[2]; + if(typeof _z_ !== "number" && 1 === _z_[0]){ + var c$0 = acc[2], size$0 = _z_[2], p$4 = _v_[1]; break c; } } - var c = acc[2], p$3 = _q_; + var c = acc[2], p$3 = _v_; break; case 6: var p$5 = acc[1]; @@ -29069,8 +29108,7 @@ /*<>*/ strput_acc(ppf, p$2); /*<>*/ return pp_print_as_size(ppf, size, s$0) /*<>*/ ; } - function kfprintf(k, ppf, param){ - var fmt = /*<>*/ param[1]; + function kfprintf$0(fmt, k, ppf){ /*<>*/ return CamlinternalFormat[7].call (null, function(acc){ @@ -29080,6 +29118,9 @@ 0, fmt) /*<>*/ ; } + function kfprintf(_q_, _r_, _s_){ + /*<>*/ return kfprintf$0(_s_[1], _q_, _r_) /*<>*/ ; + } function ikfprintf(k, ppf, param){ var fmt = /*<>*/ param[1]; /*<>*/ return CamlinternalFormat[8].call @@ -29088,12 +29129,12 @@ function ifprintf(ppf, param){ var fmt = /*<>*/ param[1]; /*<>*/ return CamlinternalFormat[8].call - (null, function(_n_){ /*<>*/ return 0;}, 0, fmt) /*<>*/ ; + (null, function(_q_){ /*<>*/ return 0;}, 0, fmt) /*<>*/ ; } function fprintf(ppf){ - function _m_(_n_){ /*<>*/ return 0;} - /*<>*/ return function(_n_){ - /*<>*/ return kfprintf(_m_, ppf, _n_);} /*<>*/ ; + function _p_(_q_){ /*<>*/ return 0;} + /*<>*/ return function(_q_){ + /*<>*/ return kfprintf$0(_q_[1], _p_, ppf);} /*<>*/ ; /*<>*/ } function printf(param){ var fmt = /*<>*/ param[1]; @@ -29121,8 +29162,7 @@ 0, fmt) /*<>*/ ; } - function kdprintf(k, param){ - var fmt = /*<>*/ param[1]; + function kdprintf$0(fmt, k){ /*<>*/ return CamlinternalFormat[7].call (null, function(acc){ @@ -29135,16 +29175,18 @@ 0, fmt) /*<>*/ ; } + function kdprintf(_o_, _p_){ + /*<>*/ return kdprintf$0(_p_[1], _o_) /*<>*/ ; + } function dprintf(fmt){ - /*<>*/ return kdprintf - (function(i){ + /*<>*/ return kdprintf$0 + (fmt[1], + function(i){ /*<>*/ return i; - /*<>*/ }, - fmt) /*<>*/ ; + /*<>*/ }) /*<>*/ ; } - function ksprintf(k, param){ + function ksprintf$0(fmt, k){ var - fmt = /*<>*/ param[1], b = /*<>*/ pp_make_buffer(0), ppf = /*<>*/ formatter_of_buffer(b); function k$0(acc){ @@ -29155,12 +29197,14 @@ /*<>*/ return CamlinternalFormat[7].call (null, k$0, 0, fmt) /*<>*/ ; } + function ksprintf(_n_, _o_){ + /*<>*/ return ksprintf$0(_o_[1], _n_) /*<>*/ ; + } function sprintf(fmt){ - /*<>*/ return ksprintf(id, fmt) /*<>*/ ; + /*<>*/ return ksprintf$0(fmt[1], id) /*<>*/ ; } - function kasprintf(k, param){ + function kasprintf$0(fmt, k){ var - fmt = /*<>*/ param[1], b = /*<>*/ pp_make_buffer(0), ppf = /*<>*/ formatter_of_buffer(b); function k$0(acc){ @@ -29171,8 +29215,11 @@ /*<>*/ return CamlinternalFormat[7].call (null, k$0, 0, fmt) /*<>*/ ; } + function kasprintf(_m_, _n_){ + /*<>*/ return kasprintf$0(_n_[1], _m_) /*<>*/ ; + } function asprintf(fmt){ - /*<>*/ return kasprintf(id, fmt) /*<>*/ ; + /*<>*/ return kasprintf$0(fmt[1], id) /*<>*/ ; } function flush_standard_formatters(param){ /*<>*/ /*<>*/ pp_print_flush @@ -29189,46 +29236,36 @@ (null, function(param){ /*<>*/ flush_standard_formatters(0); - var - fs = - /*<>*/ pp_get_formatter_out_functions - (std_formatter, 0), - _g_ = /*<>*/ Stdlib[39]; - /*<>*/ pp_set_formatter_out_functions - (std_formatter, - [0, - function(_k_, _l_, _m_){ - /*<>*/ return buffered_out_string - (std_buf_key, _k_, _l_, _m_); - }, - fs[2], - function(_k_){ - /*<>*/ return buffered_out_flush - (_g_, std_buf_key, _k_); - }, - fs[4], - fs[5], - fs[6]]); - var - fs$0 = - /*<>*/ pp_get_formatter_out_functions - (err_formatter, 0), - _h_ = /*<>*/ Stdlib[40]; - /*<>*/ return pp_set_formatter_out_functions - (err_formatter, - [0, - function(_i_, _j_, _k_){ - /*<>*/ return buffered_out_string - (err_buf_key, _i_, _j_, _k_); - }, - fs$0[2], - function(_i_){ - /*<>*/ return buffered_out_flush - (_h_, err_buf_key, _i_); - }, - fs$0[4], - fs$0[5], - fs$0[6]]) /*<>*/ ; + var _g_ = /*<>*/ Stdlib[39]; + /*<>*/ pp_set_formatter_out_functions$0 + (function(_k_, _l_, _m_){ + /*<>*/ return buffered_out_string + (std_buf_key, _k_, _l_, _m_); + }, + std_formatter[18], + function(_k_){ + /*<>*/ return buffered_out_flush + (_g_, std_buf_key, _k_); + }, + std_formatter[20], + std_formatter[21], + std_formatter[22], + std_formatter); + var _h_ = /*<>*/ Stdlib[40]; + /*<>*/ return pp_set_formatter_out_functions$0 + (function(_i_, _j_, _k_){ + /*<>*/ return buffered_out_string + (err_buf_key, _i_, _j_, _k_); + }, + err_formatter[18], + function(_i_){ + /*<>*/ return buffered_out_flush + (_h_, err_buf_key, _i_); + }, + err_formatter[20], + err_formatter[21], + err_formatter[22], + err_formatter) /*<>*/ ; }); /*<>*/ runtime.caml_register_global (44, @@ -29533,8 +29570,8 @@ /*<>*/ } /*<>*/ return create(1, next) /*<>*/ ; } - function from_function(_av_){ - /*<>*/ return create(0, _av_); + function from_function(_az_){ + /*<>*/ return create(0, _az_); } function scan_close_at_end(ic){ /*<>*/ Stdlib[93].call(null, ic); @@ -29581,10 +29618,10 @@ (scan_close_at_end, [1, fname, ic], ic) /*<>*/ ; } var _a_ = /*<>*/ Stdlib[79]; - function open_in(_av_){return open_in_file(_a_, _av_);} + function open_in(_az_){return open_in_file(_a_, _az_);} var _b_ = /*<>*/ Stdlib[80]; - function open_in_bin(_av_){ - /*<>*/ return open_in_file(_b_, _av_); + function open_in_bin(_az_){ + /*<>*/ return open_in_file(_b_, _az_); } function from_channel(ic){ /*<>*/ return from_ic(scan_raise_at_end, [0, ic], ic) /*<>*/ ; @@ -29666,15 +29703,15 @@ /*<>*/ for(;;){ var c = /*<>*/ peek_char(ib), - _av_ = /*<>*/ 1 - ib[1]; - if(! _av_) return _av_; - var _au_ = /*<>*/ c - 9 | 0; + _az_ = /*<>*/ 1 - ib[1]; + if(! _az_) return _az_; + var _ay_ = /*<>*/ c - 9 | 0; a: { - if(4 < _au_ >>> 0){ - if(23 !== _au_) break a; + if(4 < _ay_ >>> 0){ + if(23 !== _ay_) break a; } - else if(1 >= _au_ - 2 >>> 0) break a; + else if(1 >= _ay_ - 2 >>> 0) break a; /*<>*/ invalidate_current_char(ib); continue; } @@ -29734,31 +29771,31 @@ /*<>*/ switch(conv){ case 0: var - _ar_ = /*<>*/ token_string(ib), + _av_ = /*<>*/ token_string(ib), tok = /*<>*/ /*<>*/ Stdlib[28].call - (null, "0b", _ar_); + (null, "0b", _av_); break; case 3: var - _as_ = /*<>*/ token_string(ib), + _aw_ = /*<>*/ token_string(ib), tok = /*<>*/ /*<>*/ Stdlib[28].call - (null, "0o", _as_); + (null, "0o", _aw_); break; case 4: var - _at_ = /*<>*/ token_string(ib), + _ax_ = /*<>*/ token_string(ib), tok = /*<>*/ /*<>*/ Stdlib[28].call - (null, "0u", _at_); + (null, "0u", _ax_); break; case 5: var - _au_ = /*<>*/ token_string(ib), + _ay_ = /*<>*/ token_string(ib), tok = /*<>*/ /*<>*/ Stdlib[28].call - (null, "0x", _au_); + (null, "0x", _ay_); break; default: var @@ -29856,13 +29893,13 @@ /*<>*/ return 7 < param - 48 >>> 0 ? 0 : 1 /*<>*/ ; } function is_hexa_digit(param){ - var _ar_ = /*<>*/ param - 48 | 0; + var _av_ = /*<>*/ param - 48 | 0; a: { - if(22 < _ar_ >>> 0){ - if(5 < _ar_ - 49 >>> 0) break a; + if(22 < _av_ >>> 0){ + if(5 < _av_ - 49 >>> 0) break a; } - else if(6 >= _ar_ - 10 >>> 0) break a; + else if(6 >= _av_ - 10 >>> 0) break a; /*<>*/ return 1; } /*<>*/ return 0; @@ -29995,42 +30032,42 @@ } var len = /*<>*/ caml_ml_string_length(str), - _ao_ = /*<>*/ len - 1 | 0; - if(_ao_ < 0) + _as_ = /*<>*/ len - 1 | 0; + if(_as_ < 0) var width$1 = width; else{ var width$0 = width, i = 0; for(;;){ var c = /*<>*/ peek_char(ib), - _aq_ = + _au_ = /*<>*/ /*<>*/ lowercase ( /*<>*/ caml_string_get(str, i)); - /*<>*/ if(lowercase(c) !== _aq_) + /*<>*/ if(lowercase(c) !== _au_) /*<>*/ caml_call1(error, 0); /*<>*/ if(0 === width$0) /*<>*/ caml_call1(error, 0); var - _ap_ = /*<>*/ store_char(width$0, ib, c), - _ar_ = /*<>*/ i + 1 | 0; - if(_ao_ === i){var width$1 = _ap_; break;} - width$0 = _ap_; - i = _ar_; + _at_ = /*<>*/ store_char(width$0, ib, c), + _av_ = /*<>*/ i + 1 | 0; + if(_as_ === i){var width$1 = _at_; break;} + width$0 = _at_; + i = _av_; } } /*<>*/ return width$1; /*<>*/ } function scan_hex_float(width, precision, ib){ var - _ad_ = /*<>*/ 0 === width, - _ae_ = _ad_ || /*<>*/ end_of_input(ib); - /*<>*/ if(_ae_) + _ah_ = /*<>*/ 0 === width, + _ai_ = _ah_ || /*<>*/ end_of_input(ib); + /*<>*/ if(_ai_) /*<>*/ bad_input(cst_not_a_valid_float_in_hexad); var width$0 = /*<>*/ scan_sign(width, ib), - _af_ = /*<>*/ 0 === width$0, - _ag_ = _af_ || /*<>*/ end_of_input(ib); - /*<>*/ if(_ag_) + _aj_ = /*<>*/ 0 === width$0, + _ak_ = _aj_ || /*<>*/ end_of_input(ib); + /*<>*/ if(_ak_) /*<>*/ bad_input(cst_not_a_valid_float_in_hexad); var c = /*<>*/ peek_char(ib); a: @@ -30041,9 +30078,9 @@ if(32 <= switcher) break a; var width$1 = /*<>*/ store_char(width$0, ib, c), - _ah_ = /*<>*/ 0 === width$1, - _ai_ = _ah_ || /*<>*/ end_of_input(ib); - /*<>*/ if(_ai_) + _al_ = /*<>*/ 0 === width$1, + _am_ = _al_ || /*<>*/ end_of_input(ib); + /*<>*/ if(_am_) /*<>*/ bad_input(cst_not_a_valid_float_in_hexad); /*<>*/ return check_case_insensitive_string (width$1, ib, bad_hex_float, "an") /*<>*/ ; @@ -30054,9 +30091,9 @@ if(48 === c){ var width$3 = /*<>*/ store_char(width$0, ib, c), - _al_ = /*<>*/ 0 === width$3, - _am_ = _al_ || /*<>*/ end_of_input(ib); - /*<>*/ if(_am_) + _ap_ = /*<>*/ 0 === width$3, + _aq_ = _ap_ || /*<>*/ end_of_input(ib); + /*<>*/ if(_aq_) /*<>*/ bad_input(cst_not_a_valid_float_in_hexad); var width$4 = @@ -30064,13 +30101,13 @@ (width$3, ib, bad_hex_float, "x"); /*<>*/ if (0 !== width$4 && ! /*<>*/ end_of_input(ib)){ - var _ac_ = /*<>*/ peek_char(ib) - 46 | 0; + var _ag_ = /*<>*/ peek_char(ib) - 46 | 0; b: { - /*<>*/ if(34 < _ac_ >>> 0){ - if(66 === _ac_){var width$5 = width$4; break b;} + /*<>*/ if(34 < _ag_ >>> 0){ + if(66 === _ag_){var width$5 = width$4; break b;} } - else if(32 < _ac_ - 1 >>> 0){var width$5 = width$4; break b;} + else if(32 < _ag_ - 1 >>> 0){var width$5 = width$4; break b;} var width$5 = /*<>*/ /*<>*/ scan_digit_plus @@ -30114,9 +30151,9 @@ /*<>*/ return width$7; var width$8 = /*<>*/ store_char(width$7, ib, c$1), - _an_ = /*<>*/ 0 === width$8, - _ao_ = _an_ || /*<>*/ end_of_input(ib); - /*<>*/ if(_ao_) + _ar_ = /*<>*/ 0 === width$8, + _as_ = _ar_ || /*<>*/ end_of_input(ib); + /*<>*/ if(_as_) /*<>*/ bad_input(cst_not_a_valid_float_in_hexad); /*<>*/ return scan_optionally_signed_decimal (width$8, ib) /*<>*/ ; @@ -30131,9 +30168,9 @@ } var width$2 = /*<>*/ store_char(width$0, ib, c), - _aj_ = /*<>*/ 0 === width$2, - _ak_ = _aj_ || /*<>*/ end_of_input(ib); - /*<>*/ if(_ak_) + _an_ = /*<>*/ 0 === width$2, + _ao_ = _an_ || /*<>*/ end_of_input(ib); + /*<>*/ if(_ao_) /*<>*/ bad_input(cst_not_a_valid_float_in_hexad); /*<>*/ return check_case_insensitive_string (width$2, ib, bad_hex_float, "nfinity") /*<>*/ ; @@ -30145,15 +30182,15 @@ /*<>*/ "no dot or exponent part found in float token"; function scan_caml_float_rest(width, precision, ib){ var - _$_ = /*<>*/ 0 === width, - _aa_ = _$_ || /*<>*/ end_of_input(ib); - /*<>*/ if(_aa_) + _ad_ = /*<>*/ 0 === width, + _ae_ = _ad_ || /*<>*/ end_of_input(ib); + /*<>*/ if(_ae_) /*<>*/ bad_input(cst_no_dot_or_exponent_part_fo); var width$0 = /*<>*/ scan_decimal_digit_star(width, ib), - _ab_ = /*<>*/ 0 === width$0, - _ac_ = _ab_ || /*<>*/ end_of_input(ib); - /*<>*/ if(_ac_) + _af_ = /*<>*/ 0 === width$0, + _ag_ = _af_ || /*<>*/ end_of_input(ib); + /*<>*/ if(_ag_) /*<>*/ bad_input(cst_no_dot_or_exponent_part_fo); var c = /*<>*/ peek_char(ib), @@ -30178,24 +30215,24 @@ } function scan_caml_float(width, precision, ib){ var - _O_ = /*<>*/ 0 === width, - _P_ = _O_ || /*<>*/ end_of_input(ib); - /*<>*/ if(_P_) + _S_ = /*<>*/ 0 === width, + _T_ = _S_ || /*<>*/ end_of_input(ib); + /*<>*/ if(_T_) /*<>*/ bad_input(cst_no_dot_or_exponent_part_fo); var width$0 = /*<>*/ scan_sign(width, ib), - _Q_ = /*<>*/ 0 === width$0, - _R_ = _Q_ || /*<>*/ end_of_input(ib); - /*<>*/ if(_R_) + _U_ = /*<>*/ 0 === width$0, + _V_ = _U_ || /*<>*/ end_of_input(ib); + /*<>*/ if(_V_) /*<>*/ bad_input(cst_no_dot_or_exponent_part_fo); var c = /*<>*/ peek_char(ib); /*<>*/ if(49 <= c){ if(58 > c){ var width$1 = /*<>*/ store_char(width$0, ib, c), - _S_ = /*<>*/ 0 === width$1, - _T_ = _S_ || /*<>*/ end_of_input(ib); - /*<>*/ if(_T_) + _W_ = /*<>*/ 0 === width$1, + _X_ = _W_ || /*<>*/ end_of_input(ib); + /*<>*/ if(_X_) /*<>*/ bad_input(cst_no_dot_or_exponent_part_fo); /*<>*/ return scan_caml_float_rest (width$1, precision, ib) /*<>*/ ; @@ -30204,9 +30241,9 @@ else if(48 <= c){ var width$2 = /*<>*/ store_char(width$0, ib, c), - _U_ = /*<>*/ 0 === width$2, - _V_ = _U_ || /*<>*/ end_of_input(ib); - /*<>*/ if(_V_) + _Y_ = /*<>*/ 0 === width$2, + _Z_ = _Y_ || /*<>*/ end_of_input(ib); + /*<>*/ if(_Z_) /*<>*/ bad_input(cst_no_dot_or_exponent_part_fo); var c$0 = /*<>*/ peek_char(ib); /*<>*/ if(88 !== c$0 && 120 !== c$0) @@ -30214,17 +30251,17 @@ (width$2, precision, ib) /*<>*/ ; var width$3 = /*<>*/ store_char(width$2, ib, c$0), - _W_ = /*<>*/ 0 === width$3, - _X_ = _W_ || /*<>*/ end_of_input(ib); - /*<>*/ if(_X_) + ___ = /*<>*/ 0 === width$3, + _$_ = ___ || /*<>*/ end_of_input(ib); + /*<>*/ if(_$_) /*<>*/ bad_input(cst_no_dot_or_exponent_part_fo); var width$7 = /*<>*/ scan_digit_plus (cst_hexadecimal, is_hexa_digit, width$3, ib), - _Y_ = /*<>*/ 0 === width$7, - _Z_ = _Y_ || /*<>*/ end_of_input(ib); - /*<>*/ if(_Z_) + _aa_ = /*<>*/ 0 === width$7, + _ab_ = _aa_ || /*<>*/ end_of_input(ib); + /*<>*/ if(_ab_) /*<>*/ bad_input(cst_no_dot_or_exponent_part_fo); var c$1 = /*<>*/ peek_char(ib), @@ -30280,9 +30317,9 @@ /*<>*/ return width$5; var width$6 = /*<>*/ store_char(width$5, ib, c$2), - ___ = /*<>*/ 0 === width$6, - _$_ = ___ || /*<>*/ end_of_input(ib); - /*<>*/ if(_$_) + _ac_ = /*<>*/ 0 === width$6, + _ad_ = _ac_ || /*<>*/ end_of_input(ib); + /*<>*/ if(_ad_) /*<>*/ bad_input(cst_not_a_valid_float_in_hexad); /*<>*/ return scan_optionally_signed_decimal (width$6, ib) /*<>*/ ; @@ -30309,13 +30346,13 @@ /*<>*/ width$0 = width$1; } else{ - var _O_ = /*<>*/ c - 9 | 0; + var _S_ = /*<>*/ c - 9 | 0; a: { - if(4 < _O_ >>> 0){ - if(23 !== _O_) break a; + if(4 < _S_ >>> 0){ + if(23 !== _S_) break a; } - else if(1 >= _O_ - 2 >>> 0) break a; + else if(1 >= _S_ - 2 >>> 0) break a; /*<>*/ return width$0; } var width$2 = /*<>*/ store_char(width$0, ib, c); @@ -30385,16 +30422,16 @@ b: { /*<>*/ if(0 <= c && 255 >= c){ - var _N_ = /*<>*/ Stdlib[29].call(null, c); + var _R_ = /*<>*/ Stdlib[29].call(null, c); break b; } var - _N_ = + _R_ = /*<>*/ bad_input ( /*<>*/ caml_call3 (Stdlib_Printf[4].call(null, _k_), c0, c1$0, c2$0)); } - /*<>*/ return store_char(width - 2 | 0, ib, _N_) /*<>*/ ; + /*<>*/ return store_char(width - 2 | 0, ib, _R_) /*<>*/ ; } var switcher = /*<>*/ c0 - 92 | 0; if(28 < switcher >>> 0) break a; @@ -30405,37 +30442,37 @@ /*<>*/ function(param){ var c = /*<>*/ next_char(ib), - _O_ = /*<>*/ c - 48 | 0; + _S_ = /*<>*/ c - 48 | 0; a: { - if(22 < _O_ >>> 0){ - if(5 < _O_ - 49 >>> 0) break a; + if(22 < _S_ >>> 0){ + if(5 < _S_ - 49 >>> 0) break a; } - else if(6 >= _O_ - 10 >>> 0) break a; + else if(6 >= _S_ - 10 >>> 0) break a; /*<>*/ return c; } /*<>*/ return bad_input_escape(c) /*<>*/ ; }, c1 = /*<>*/ get_digit(0), c2 = /*<>*/ get_digit(0), - _O_ = /*<>*/ hexadecimal_value_of_char(c2), + _S_ = /*<>*/ hexadecimal_value_of_char(c2), c$0 = /*<>*/ (16 * hexadecimal_value_of_char(c1) | 0) - + _O_ + + _S_ | 0; b: { /*<>*/ if(0 <= c$0 && 255 >= c$0){ - var _M_ = /*<>*/ Stdlib[29].call(null, c$0); + var _Q_ = /*<>*/ Stdlib[29].call(null, c$0); break b; } var - _M_ = + _Q_ = /*<>*/ bad_input ( /*<>*/ caml_call2 (Stdlib_Printf[4].call(null, _l_), c1, c2)); } - /*<>*/ return store_char(width - 2 | 0, ib, _M_) /*<>*/ ; + /*<>*/ return store_char(width - 2 | 0, ib, _Q_) /*<>*/ ; case 0: case 6: case 18: @@ -30447,20 +30484,20 @@ else if(34 !== c0 && 39 > c0) break a; /*<>*/ if(110 <= c0) if(117 <= c0) - var _L_ = c0; + var _P_ = c0; else switch(c0 - 110 | 0){ case 0: - var _L_ = /*<>*/ 10; break; + var _P_ = /*<>*/ 10; break; case 4: - var _L_ = /*<>*/ 13; break; + var _P_ = /*<>*/ 13; break; case 6: - var _L_ = /*<>*/ 9; break; - default: var _L_ = /*<>*/ c0; + var _P_ = /*<>*/ 9; break; + default: var _P_ = /*<>*/ c0; } else - var _L_ = 98 === c0 ? 8 : c0; - /*<>*/ return store_char(width, ib, _L_) /*<>*/ ; + var _P_ = 98 === c0 ? 8 : c0; + /*<>*/ return store_char(width, ib, _P_) /*<>*/ ; } /*<>*/ return bad_input_escape(c0) /*<>*/ ; } @@ -30478,19 +30515,19 @@ match = /*<>*/ check_next_char(cst_a_String, width$0, ib); /*<>*/ if(10 === match){ - var _K_ = /*<>*/ ignore_char(width$0, ib); + var _O_ = /*<>*/ ignore_char(width$0, ib); /*<>*/ return counter < 50 - ? skip_spaces(counter + 1 | 0, _K_) - : caml_trampoline_return(skip_spaces, [0, _K_]) /*<>*/ ; + ? skip_spaces(counter + 1 | 0, _O_) + : caml_trampoline_return(skip_spaces, [0, _O_]) /*<>*/ ; } /*<>*/ if(13 === match){ var width$2 = /*<>*/ ignore_char(width$0, ib); /*<>*/ if (10 === check_next_char(cst_a_String, width$2, ib)){ - var _L_ = /*<>*/ ignore_char(width$2, ib); + var _P_ = /*<>*/ ignore_char(width$2, ib); /*<>*/ return counter < 50 - ? skip_spaces(counter + 1 | 0, _L_) - : caml_trampoline_return(skip_spaces, [0, _L_]) /*<>*/ ; + ? skip_spaces(counter + 1 | 0, _P_) + : caml_trampoline_return(skip_spaces, [0, _P_]) /*<>*/ ; } var width$4 = /*<>*/ store_char(width$2, ib, 13); /*<>*/ width = width$4; @@ -30532,21 +30569,21 @@ function scan_chars(i$1, stp){ var i = /*<>*/ i$1; for(;;){ - var c = peek_char(ib), _I_ = /*<>*/ 0 < i ? 1 : 0; - if(_I_){ - var _J_ = /*<>*/ 1 - ib[1]; - if(_J_) + var c = peek_char(ib), _M_ = /*<>*/ 0 < i ? 1 : 0; + if(_M_){ + var _N_ = /*<>*/ 1 - ib[1]; + if(_N_) var - _K_ = + _O_ = /*<>*/ CamlinternalFormat[1].call (null, char_set, c), - _H_ = /*<>*/ _K_ ? c !== stp ? 1 : 0 : _K_; + _L_ = /*<>*/ _O_ ? c !== stp ? 1 : 0 : _O_; else - var _H_ = /*<>*/ _J_; + var _L_ = /*<>*/ _N_; } else - var _H_ = /*<>*/ _I_; - if(! _H_) return _H_; + var _L_ = /*<>*/ _M_; + if(! _L_) return _L_; /*<>*/ store_char(Stdlib[19], ib, c); var i$0 = /*<>*/ i - 1 | 0; i = i$0; @@ -30556,8 +30593,8 @@ /*<>*/ return scan_chars(width, -1) /*<>*/ ; var c = /*<>*/ scan_indic[1]; /*<>*/ scan_chars(width, c); - var _H_ = /*<>*/ 1 - ib[1]; - if(! _H_) return _H_; + var _L_ = /*<>*/ 1 - ib[1]; + if(! _L_) return _L_; var ci = /*<>*/ peek_char(ib); /*<>*/ return c === ci ? /*<>*/ invalidate_current_char(ib) @@ -30617,22 +30654,22 @@ var rest$3 = fmt[3], fmtty = fmt[2], - _H_ = + _L_ = /*<>*/ CamlinternalFormat[21].call(null, fmtty), - _G_ = + _K_ = /*<>*/ CamlinternalFormatBasics[2].call - (null, _H_); + (null, _L_); /*<>*/ return counter < 50 ? take_fmtty_format_readers$0 - (counter + 1 | 0, k, _G_, rest$3) + (counter + 1 | 0, k, _K_, rest$3) : caml_trampoline_return - (take_fmtty_format_readers$0, [0, k, _G_, rest$3]) /*<>*/ ; + (take_fmtty_format_readers$0, [0, k, _K_, rest$3]) /*<>*/ ; case 18: - var _F_ = /*<>*/ fmt[1]; - if(0 === _F_[0]){ + var _J_ = /*<>*/ fmt[1]; + if(0 === _J_[0]){ var rest$4 = fmt[2], - fmt$0 = _F_[1][1], + fmt$0 = _J_[1][1], fmt$1 = /*<>*/ CamlinternalFormatBasics[3].call (null, fmt$0, rest$4); @@ -30641,7 +30678,7 @@ else{ var rest$5 = /*<>*/ fmt[2], - fmt$2 = _F_[1][1], + fmt$2 = _J_[1][1], fmt$3 = /*<>*/ CamlinternalFormatBasics[3].call (null, fmt$2, rest$5); @@ -30727,11 +30764,11 @@ rest = /*<>*/ fmtty[3], ty2 = fmtty[2], ty1 = fmtty[1], - _F_ = + _J_ = /*<>*/ CamlinternalFormat[21].call(null, ty1), ty = /*<>*/ CamlinternalFormat[22].call - (null, _F_, ty2), + (null, _J_, ty2), fmtty$2 = /*<>*/ CamlinternalFormatBasics[1].call (null, ty, rest); @@ -30826,39 +30863,39 @@ /*<>*/ switch(fmt[1][2]){ case 5: case 8: - var rest$11 = fmt[4], prec$4 = fmt[3], pad$6 = fmt[2]; + var pad$7 = fmt[2], prec$4 = fmt[3], rest$24 = fmt[4]; /*<>*/ return pad_prec_scanf (ib, - rest$11, + rest$24, readers, - pad$6, + pad$7, prec$4, scan_caml_float, token_float) /*<>*/ ; case 6: case 7: var - rest$12 = /*<>*/ fmt[4], + pad$8 = /*<>*/ fmt[2], prec$5 = fmt[3], - pad$7 = fmt[2]; + rest$25 = fmt[4]; /*<>*/ return pad_prec_scanf (ib, - rest$12, + rest$25, readers, - pad$7, + pad$8, prec$5, scan_hex_float, token_float) /*<>*/ ; default: var - rest$10 = /*<>*/ fmt[4], + pad$6 = /*<>*/ fmt[2], prec$3 = fmt[3], - pad$5 = fmt[2]; + rest$23 = fmt[4]; /*<>*/ return pad_prec_scanf (ib, - rest$10, + rest$23, readers, - pad$5, + pad$6, prec$3, scan_float, token_float) /*<>*/ ; @@ -30866,32 +30903,32 @@ case 9: break h; case 10: - var rest$14 = /*<>*/ fmt[1]; + var rest$10 = /*<>*/ fmt[1]; /*<>*/ if(! end_of_input(ib)) /*<>*/ return bad_input ("end of input not found") /*<>*/ ; - /*<>*/ fmt = rest$14; + /*<>*/ fmt = rest$10; break; case 11: var - rest$15 = /*<>*/ fmt[2], + rest$11 = /*<>*/ fmt[2], str$0 = fmt[1]; /*<>*/ Stdlib_String[30].call (null, - function(_F_){ - /*<>*/ return check_char(ib, _F_); + function(_J_){ + /*<>*/ return check_char(ib, _J_); }, str$0); - /*<>*/ fmt = rest$15; + /*<>*/ fmt = rest$11; break; case 12: - var rest$16 = /*<>*/ fmt[2], chr = fmt[1]; + var rest$12 = /*<>*/ fmt[2], chr = fmt[1]; /*<>*/ check_char(ib, chr); - /*<>*/ fmt = rest$16; + /*<>*/ fmt = rest$12; break; case 13: var - rest$17 = /*<>*/ fmt[3], + rest$13 = /*<>*/ fmt[3], fmtty = fmt[2], pad_opt = fmt[1]; /*<>*/ /*<>*/ scan_caml_string @@ -30899,10 +30936,10 @@ var s = /*<>*/ token_string(ib); /*<>*/ try{ var - _A_ = + _E_ = /*<>*/ CamlinternalFormat[14].call (null, s, fmtty), - fmt$2 = _A_; + fmt$2 = _E_; } catch(exn$0){ var exn = /*<>*/ caml_wrap_exception(exn$0); @@ -30916,7 +30953,7 @@ } /*<>*/ return [0, fmt$2, - make_scanf(ib, rest$17, readers)] /*<>*/ ; + make_scanf(ib, rest$13, readers)] /*<>*/ ; case 14: break i; case 15: @@ -30927,41 +30964,41 @@ (null, 'scanf: bad conversion "%t"') /*<>*/ ; case 17: var - rest$19 = /*<>*/ fmt[2], + rest$15 = /*<>*/ fmt[2], formatting_lit = fmt[1], - _F_ = + _J_ = /*<>*/ CamlinternalFormat[17].call (null, formatting_lit); /*<>*/ Stdlib_String[30].call (null, - function(_F_){ - /*<>*/ return check_char(ib, _F_); + function(_J_){ + /*<>*/ return check_char(ib, _J_); }, - _F_); - /*<>*/ fmt = rest$19; + _J_); + /*<>*/ fmt = rest$15; break; case 18: - var _y_ = /*<>*/ fmt[1]; - if(0 === _y_[0]){ - var rest$20 = fmt[2], fmt$8 = _y_[1][1]; + var _C_ = /*<>*/ fmt[1]; + if(0 === _C_[0]){ + var rest$16 = fmt[2], fmt$8 = _C_[1][1]; /*<>*/ check_char(ib, 64); /*<>*/ check_char(ib, 123); var fmt$9 = /*<>*/ CamlinternalFormatBasics[3].call - (null, fmt$8, rest$20); + (null, fmt$8, rest$16); /*<>*/ fmt = fmt$9; } else{ var - rest$21 = /*<>*/ fmt[2], - fmt$10 = _y_[1][1]; + rest$17 = /*<>*/ fmt[2], + fmt$10 = _C_[1][1]; /*<>*/ check_char(ib, 64); /*<>*/ check_char(ib, 91); var fmt$11 = /*<>*/ CamlinternalFormatBasics[3].call - (null, fmt$10, rest$21); + (null, fmt$10, rest$17); /*<>*/ fmt = fmt$11; } break; @@ -30981,7 +31018,7 @@ break j; case 21: var - rest$24 = /*<>*/ fmt[2], + rest$19 = /*<>*/ fmt[2], counter = fmt[1]; /*<>*/ switch(counter){ case 0: @@ -30992,21 +31029,21 @@ } /*<>*/ return [0, count, - make_scanf(ib, rest$24, readers)] /*<>*/ ; + make_scanf(ib, rest$19, readers)] /*<>*/ ; case 22: var - rest$25 = /*<>*/ fmt[1], + rest$20 = /*<>*/ fmt[1], c$2 = /*<>*/ checked_peek_char(ib); /*<>*/ return [0, c$2, - make_scanf(ib, rest$25, readers)] /*<>*/ ; + make_scanf(ib, rest$20, readers)] /*<>*/ ; case 23: var - rest$26 = /*<>*/ fmt[2], + rest$21 = /*<>*/ fmt[2], ign = fmt[1], fmt$12 = /*<>*/ CamlinternalFormat[6].call - (null, ign, rest$26) + (null, ign, rest$21) [1], match$3 = /*<>*/ make_scanf(ib, fmt$12, readers); @@ -31025,9 +31062,9 @@ match$1 = fmt[3]; if(typeof match$1 !== "number" && 17 === match$1[0]){ var - rest$23 = match$1[2], + rest$18 = match$1[2], fmting_lit$0 = match$1[1], - char_set$0 = fmt[2], + char_set = fmt[2], match$2 = /*<>*/ stopper_of_formatting_lit (fmting_lit$0), @@ -31035,25 +31072,25 @@ stp$0 = match$2[1], width$1 = /*<>*/ width_of_pad_opt(width_opt); /*<>*/ scan_chars_in_char_set - (char_set$0, [0, stp$0], width$1, ib); + (char_set, [0, stp$0], width$1, ib); var s$2 = /*<>*/ token_string(ib); /*<>*/ return [0, s$2, - make_scanf(ib, [11, str$1, rest$23], readers)] /*<>*/ ; + make_scanf(ib, [11, str$1, rest$18], readers)] /*<>*/ ; } var - rest$22 = /*<>*/ fmt[3], - char_set = fmt[2], + char_set$0 = /*<>*/ fmt[2], + rest$22 = fmt[3], width$0 = /*<>*/ width_of_pad_opt(width_opt); /*<>*/ scan_chars_in_char_set - (char_set, 0, width$0, ib); + (char_set$0, 0, width$0, ib); var s$1 = /*<>*/ token_string(ib); /*<>*/ return [0, s$1, make_scanf(ib, rest$22, readers)] /*<>*/ ; } var - rest$18 = /*<>*/ fmt[3], + rest$14 = /*<>*/ fmt[3], fmtty$0 = fmt[2], pad_opt$0 = fmt[1]; /*<>*/ /*<>*/ scan_caml_string @@ -31069,23 +31106,23 @@ /*<>*/ CamlinternalFormat[13].call (null, 0, s$0) [1], - _B_ = + _F_ = /*<>*/ CamlinternalFormat[21].call (null, fmtty$0), - _C_ = + _G_ = /*<>*/ CamlinternalFormatBasics[2].call - (null, _B_), + (null, _F_), fmt$7 = /*<>*/ CamlinternalFormat[12].call - (null, fmt$6, _C_), - _D_ = + (null, fmt$6, _G_), + _H_ = /*<>*/ CamlinternalFormatBasics[2].call (null, fmtty$0), - _E_ = + _I_ = /*<>*/ CamlinternalFormat[12].call - (null, fmt$5, _D_), + (null, fmt$5, _H_), fmt$4 = fmt$7, - fmt$3 = _E_; + fmt$3 = _I_; } catch(exn){ var exn$0 = /*<>*/ caml_wrap_exception(exn); @@ -31093,23 +31130,23 @@ throw caml_maybe_attach_backtrace(exn$0, 0); var msg$0 = exn$0[2], - _z_ = /*<>*/ bad_input(msg$0), - fmt$4 = _z_[2], - fmt$3 = _z_[1]; + _D_ = /*<>*/ bad_input(msg$0), + fmt$4 = _D_[2], + fmt$3 = _D_[1]; } /*<>*/ return [0, [0, fmt$3, s$0], /*<>*/ make_scanf (ib, /*<>*/ CamlinternalFormatBasics[3].call - (null, fmt$4, rest$18), + (null, fmt$4, rest$14), readers)] /*<>*/ ; } var - rest$13 = /*<>*/ fmt[2], - pad$8 = fmt[1], + rest$9 = /*<>*/ fmt[2], + pad$5 = fmt[1], scan$8 = - /*<>*/ function(_F_, param, ib){ + /*<>*/ function(_J_, param, ib){ var c = /*<>*/ checked_peek_char(ib), m = @@ -31124,10 +31161,10 @@ /*<>*/ return scan_string(0, m, ib) /*<>*/ ; }; /*<>*/ return pad_prec_scanf - (ib, rest$13, readers, pad$8, 0, scan$8, token_bool) /*<>*/ ; + (ib, rest$9, readers, pad$5, 0, scan$8, token_bool) /*<>*/ ; } var - rest$9 = /*<>*/ fmt[4], + rest$8 = /*<>*/ fmt[4], prec$2 = fmt[3], pad$4 = fmt[2], iconv$2 = fmt[1], @@ -31142,7 +31179,7 @@ }; /*<>*/ return pad_prec_scanf (ib, - rest$9, + rest$8, readers, pad$4, prec$2, @@ -31153,7 +31190,7 @@ }) /*<>*/ ; } var - rest$8 = /*<>*/ fmt[4], + rest$7 = /*<>*/ fmt[4], prec$1 = fmt[3], pad$3 = fmt[2], iconv$1 = fmt[1], @@ -31168,7 +31205,7 @@ }; /*<>*/ return pad_prec_scanf (ib, - rest$8, + rest$7, readers, pad$3, prec$1, @@ -31179,7 +31216,7 @@ }) /*<>*/ ; } var - rest$7 = /*<>*/ fmt[4], + rest$6 = /*<>*/ fmt[4], prec$0 = fmt[3], pad$2 = fmt[2], iconv$0 = fmt[1], @@ -31194,7 +31231,7 @@ }; /*<>*/ return pad_prec_scanf (ib, - rest$7, + rest$6, readers, pad$2, prec$0, @@ -31205,7 +31242,7 @@ }) /*<>*/ ; } var - rest$6 = /*<>*/ fmt[4], + rest$5 = /*<>*/ fmt[4], prec = fmt[3], pad$1 = fmt[2], iconv = fmt[1], @@ -31219,7 +31256,7 @@ }; /*<>*/ return pad_prec_scanf (ib, - rest$6, + rest$5, readers, pad$1, prec, @@ -31230,21 +31267,21 @@ }) /*<>*/ ; } var - rest$5 = /*<>*/ fmt[2], + rest$4 = /*<>*/ fmt[2], pad$0 = fmt[1], scan$3 = /*<>*/ function(width, param, ib){ /*<>*/ return scan_caml_string(width, ib) /*<>*/ ; }; /*<>*/ return pad_prec_scanf - (ib, rest$5, readers, pad$0, 0, scan$3, token_string) /*<>*/ ; + (ib, rest$4, readers, pad$0, 0, scan$3, token_string) /*<>*/ ; } var pad = /*<>*/ fmt[1], match = fmt[2]; if(typeof match !== "number") switch(match[0]){ case 17: var - rest$2 = match[2], + rest$1 = match[2], fmting_lit = match[1], match$0 = /*<>*/ stopper_of_formatting_lit(fmting_lit), @@ -31256,18 +31293,18 @@ }; /*<>*/ return pad_prec_scanf (ib, - [11, str, rest$2], + [11, str, rest$1], readers, pad, 0, scan$0, token_string) /*<>*/ ; case 18: - var _x_ = /*<>*/ match[1]; - if(0 === _x_[0]){ + var _B_ = /*<>*/ match[1]; + if(0 === _B_[0]){ var - rest$3 = match[2], - fmt$0 = _x_[1][1], + rest$2 = match[2], + fmt$0 = _B_[1][1], scan$1 = /*<>*/ function(width, param, ib){ /*<>*/ return scan_string(_p_, width, ib) /*<>*/ ; @@ -31275,7 +31312,7 @@ /*<>*/ return /*<>*/ pad_prec_scanf (ib, /*<>*/ CamlinternalFormatBasics[3].call - (null, fmt$0, rest$3), + (null, fmt$0, rest$2), readers, pad, 0, @@ -31283,8 +31320,8 @@ token_string) /*<>*/ ; } var - rest$4 = /*<>*/ match[2], - fmt$1 = _x_[1][1], + rest$3 = /*<>*/ match[2], + fmt$1 = _B_[1][1], scan$2 = /*<>*/ function(width, param, ib){ /*<>*/ return scan_string(_q_, width, ib) /*<>*/ ; @@ -31292,7 +31329,7 @@ /*<>*/ return /*<>*/ pad_prec_scanf (ib, /*<>*/ CamlinternalFormatBasics[3].call - (null, fmt$1, rest$4), + (null, fmt$1, rest$3), readers, pad, 0, @@ -31300,13 +31337,13 @@ token_string) /*<>*/ ; } var - rest$1 = /*<>*/ fmt[2], + rest$26 = /*<>*/ fmt[2], scan = /*<>*/ function(width, param, ib){ /*<>*/ return scan_string(0, width, ib) /*<>*/ ; }; /*<>*/ return pad_prec_scanf - (ib, rest$1, readers, pad, 0, scan, token_string) /*<>*/ ; + (ib, rest$26, readers, pad, 0, scan, token_string) /*<>*/ ; } var rest$0 = /*<>*/ fmt[1]; function find_stop(width){ @@ -31370,8 +31407,7 @@ /*<>*/ return [0, x$1, make_scanf(ib, fmt, readers)] /*<>*/ ; /*<>*/ } var cst = /*<>*/ '"'; - function kscanf_gen(ib, ef, af, param){ - var str = /*<>*/ param[2], fmt = param[1]; + function kscanf_gen(fmt, str, ib, ef, af){ function k(readers, f$1){ /*<>*/ Stdlib_Buffer[9].call(null, ib[8]); /*<>*/ try{ @@ -31387,12 +31423,12 @@ if(exc[1] !== Stdlib[6]) throw caml_maybe_attach_backtrace(exc, 0); var msg = exc[2], - _u_ = /*<>*/ Stdlib_String[25].call(null, str), - _v_ = Stdlib[28].call(null, _u_, cst), - _w_ = - /*<>*/ Stdlib[28].call(null, ' in format "', _v_), - _x_ = /*<>*/ Stdlib[28].call(null, msg, _w_); - /*<>*/ return Stdlib[1].call(null, _x_) /*<>*/ ; + _y_ = /*<>*/ Stdlib_String[25].call(null, str), + _z_ = Stdlib[28].call(null, _y_, cst), + _A_ = + /*<>*/ Stdlib[28].call(null, ' in format "', _z_), + _B_ = /*<>*/ Stdlib[28].call(null, msg, _A_); + /*<>*/ return Stdlib[1].call(null, _B_) /*<>*/ ; } /*<>*/ return caml_call2(ef, ib, exc) /*<>*/ ; } @@ -31409,49 +31445,57 @@ /*<>*/ } /*<>*/ return take_format_readers(k, fmt) /*<>*/ ; } - function kscanf(ib, ef, fmt){ + function kscanf$0(_x_, _y_, ib, ef){ /*<>*/ return kscanf_gen - (ib, + (_x_, + _y_, + ib, ef, function(x){ /*<>*/ return x; - /*<>*/ }, - fmt) /*<>*/ ; + /*<>*/ }) /*<>*/ ; } - function kscanf_opt(ib, fmt){ + function kscanf(_w_, _x_, _v_){ + /*<>*/ return kscanf$0(_v_[1], _v_[2], _w_, _x_) /*<>*/ ; + } + function kscanf_opt(_u_, _v_, ib){ /*<>*/ return kscanf_gen - (ib, - function(_u_, param){ + (_u_, + _v_, + ib, + function(_v_, param){ /*<>*/ return 0; /*<>*/ }, function(x){ /*<>*/ return [0, x]; - /*<>*/ }, - fmt) /*<>*/ ; + /*<>*/ }) /*<>*/ ; } function bscanf(ib, fmt){ - /*<>*/ return kscanf(ib, scanf_bad_input, fmt) /*<>*/ ; + /*<>*/ return kscanf$0 + (fmt[1], fmt[2], ib, scanf_bad_input) /*<>*/ ; } function bscanf_opt(ib, fmt){ - /*<>*/ return kscanf_opt(ib, fmt) /*<>*/ ; + /*<>*/ return kscanf_opt(fmt[1], fmt[2], ib) /*<>*/ ; } function ksscanf(s, ef, fmt){ - /*<>*/ return /*<>*/ kscanf - ( /*<>*/ from_string(s), ef, fmt) /*<>*/ ; + var _u_ = /*<>*/ from_string(s); + /*<>*/ return kscanf$0(fmt[1], fmt[2], _u_, ef) /*<>*/ ; } function sscanf(s, fmt){ - /*<>*/ return /*<>*/ kscanf - ( /*<>*/ from_string(s), scanf_bad_input, fmt) /*<>*/ ; + var _u_ = /*<>*/ from_string(s); + /*<>*/ return kscanf$0 + (fmt[1], fmt[2], _u_, scanf_bad_input) /*<>*/ ; } function sscanf_opt(s, fmt){ - /*<>*/ return /*<>*/ kscanf_opt - ( /*<>*/ from_string(s), fmt) /*<>*/ ; + var _u_ = /*<>*/ from_string(s); + /*<>*/ return kscanf_opt(fmt[1], fmt[2], _u_) /*<>*/ ; } function scanf(fmt){ - /*<>*/ return kscanf(stdin, scanf_bad_input, fmt) /*<>*/ ; + /*<>*/ return kscanf$0 + (fmt[1], fmt[2], stdin, scanf_bad_input) /*<>*/ ; } function scanf_opt(fmt){ - /*<>*/ return kscanf_opt(stdin, fmt) /*<>*/ ; + /*<>*/ return kscanf_opt(fmt[1], fmt[2], stdin) /*<>*/ ; } function bscanf_format(ib, format, f){ /*<>*/ scan_caml_string(Stdlib[19], ib); @@ -31603,24 +31647,24 @@ } function public_method_label(s){ var - _A_ = + _C_ = /*<>*/ runtime.caml_ml_string_length(s) - 1 | 0, - _z_ = /*<>*/ 0; - /*<>*/ if(_A_ < 0) - var accu$1 = _z_; + _B_ = /*<>*/ 0; + /*<>*/ if(_C_ < 0) + var accu$1 = _B_; else{ - var accu$0 = _z_, i = 0; + var accu$0 = _B_, i = 0; for(;;){ var - _B_ = + _D_ = /*<>*/ (223 * accu$0 | 0) + runtime.caml_string_get(s, i) | 0, - _C_ = /*<>*/ i + 1 | 0; - if(_A_ === i){var accu$1 = _B_; break;} - accu$0 = _B_; - i = _C_; + _E_ = /*<>*/ i + 1 | 0; + if(_C_ === i){var accu$1 = _D_; break;} + accu$0 = _D_; + i = _E_; } } var @@ -31657,30 +31701,30 @@ ((len * 2 | 0) + 2 | 0, dummy_met); /*<>*/ caml_check_bound(methods, 0)[1] = len; var - _w_ = /*<>*/ Stdlib_Sys[10], - _x_ = + _y_ = /*<>*/ Stdlib_Sys[10], + _z_ = ( /*<>*/ runtime.caml_mul - ( /*<>*/ fit_size(len), _w_) + ( /*<>*/ fit_size(len), _y_) / 8 | 0) - 1 | 0; - /*<>*/ caml_check_bound(methods, 1)[2] = _x_; - var _u_ = /*<>*/ len - 1 | 0; - if(_u_ >= 0){ + /*<>*/ caml_check_bound(methods, 1)[2] = _z_; + var _w_ = /*<>*/ len - 1 | 0; + if(_w_ >= 0){ var i = 0; for(;;){ var - _v_ = /*<>*/ (i * 2 | 0) + 3 | 0, - _y_ = + _x_ = /*<>*/ (i * 2 | 0) + 3 | 0, + _A_ = /*<>*/ caml_check_bound(pub_labels, i) [i + 1]; - /*<>*/ caml_check_bound(methods, _v_) - [_v_ + 1] - = _y_; - var _z_ = /*<>*/ i + 1 | 0; - if(_u_ === i) break; - i = _z_; + /*<>*/ caml_check_bound(methods, _x_) + [_x_ + 1] + = _A_; + var _B_ = /*<>*/ i + 1 | 0; + if(_w_ === i) break; + i = _B_; } } /*<>*/ return [0, @@ -31696,19 +31740,19 @@ function resize(array, new_size){ var old_size = /*<>*/ array[2].length - 1, - _t_ = /*<>*/ old_size < new_size ? 1 : 0; - if(_t_){ + _v_ = /*<>*/ old_size < new_size ? 1 : 0; + if(_v_){ var new_buck = /*<>*/ caml_array_make(new_size, dummy_met); /*<>*/ Stdlib_Array[9].call (null, array[2], 0, new_buck, 0, old_size); /*<>*/ array[2] = new_buck; - var _u_ = 0; + var _w_ = 0; } else - var _u_ = /*<>*/ _t_; - return _u_; + var _w_ = /*<>*/ _v_; + return _w_; /*<>*/ } var method_count = @@ -31723,9 +31767,9 @@ function get_method_label(table, name){ /*<>*/ try{ var - _t_ = + _v_ = /*<>*/ caml_call2(Meths[17], name, table[3]); - return _t_; + return _v_; } catch(exn$0){ var exn = /*<>*/ caml_wrap_exception(exn$0); @@ -31741,9 +31785,9 @@ function get_method_labels(table, names){ /*<>*/ return Stdlib_Array[16].call (null, - function(_t_){ + function(_v_){ /*<>*/ return get_method_label - (table, _t_); + (table, _v_); }, names) /*<>*/ ; } @@ -31763,10 +31807,10 @@ function get_method(table, label){ /*<>*/ try{ var - _t_ = + _v_ = /*<>*/ Stdlib_List[54].call (null, label, table[6]); - return _t_; + return _v_; } catch(exn$0){ var exn = /*<>*/ caml_wrap_exception(exn$0); @@ -31792,17 +31836,17 @@ virt_meth_labs = /*<>*/ Stdlib_List[21].call (null, - function(_t_){ + function(_v_){ /*<>*/ return get_method_label - (table, _t_); + (table, _v_); }, virt_meths$0), concr_meth_labs = /*<>*/ Stdlib_List[21].call (null, - function(_t_){ + function(_v_){ /*<>*/ return get_method_label - (table, _t_); + (table, _v_); }, concr_meths$0); /*<>*/ table[5] = @@ -31829,21 +31873,21 @@ function(met, label){ /*<>*/ by_name[1] = caml_call3(Meths[2], met, label, by_name[1]); - var _s_ = /*<>*/ by_label[1]; + var _u_ = /*<>*/ by_label[1]; try{ var - _t_ = + _v_ = /*<>*/ caml_call2 (Labs[17], label, table[4]), - _r_ = _t_; + _t_ = _v_; } catch(exn$0){ var exn = /*<>*/ caml_wrap_exception(exn$0); if(exn !== Stdlib[8]) throw caml_maybe_attach_backtrace(exn, 0); - var _r_ = /*<>*/ 1; + var _t_ = /*<>*/ 1; } /*<>*/ by_label[1] = - caml_call3(Labs[2], label, _r_, _s_); + caml_call3(Labs[2], label, _t_, _u_); /*<>*/ return 0; }, concr_meths$0, @@ -31892,10 +31936,10 @@ (null, function(s, v){ var - _r_ = + _t_ = /*<>*/ caml_call2(Vars[17], v, table[7]); /*<>*/ return caml_call3 - (Vars[2], v, _r_, s) /*<>*/ ; + (Vars[2], v, _t_, s) /*<>*/ ; }, saved_vars, vars); @@ -31918,9 +31962,9 @@ function new_variable(table, name){ /*<>*/ try{ var - _r_ = + _t_ = /*<>*/ caml_call2(Vars[17], name, table[7]); - return _r_; + return _t_; } catch(exn$0){ var exn = /*<>*/ caml_wrap_exception(exn$0); @@ -31946,36 +31990,36 @@ res = /*<>*/ caml_array_make (nmeths + nvals | 0, 0), - _l_ = /*<>*/ nmeths - 1 | 0; - if(_l_ >= 0){ + _n_ = /*<>*/ nmeths - 1 | 0; + if(_n_ >= 0){ var i$0 = 0; for(;;){ var - _q_ = + _s_ = /*<>*/ /*<>*/ get_method_label (table, /*<>*/ caml_check_bound(meths$0, i$0) [i$0 + 1]); - /*<>*/ caml_check_bound(res, i$0)[i$0 + 1] = _q_; - var _r_ = /*<>*/ i$0 + 1 | 0; - if(_l_ === i$0) break; - i$0 = _r_; + /*<>*/ caml_check_bound(res, i$0)[i$0 + 1] = _s_; + var _t_ = /*<>*/ i$0 + 1 | 0; + if(_n_ === i$0) break; + i$0 = _t_; } } - var _m_ = /*<>*/ nvals - 1 | 0; - if(_m_ >= 0){ + var _o_ = /*<>*/ nvals - 1 | 0; + if(_o_ >= 0){ var i = 0; for(;;){ var - _n_ = /*<>*/ i + nmeths | 0, - _o_ = + _p_ = /*<>*/ i + nmeths | 0, + _q_ = /*<>*/ /*<>*/ new_variable (table, /*<>*/ caml_check_bound(vals, i)[i + 1]); - /*<>*/ caml_check_bound(res, _n_)[_n_ + 1] = _o_; - var _p_ = /*<>*/ i + 1 | 0; - if(_m_ === i) break; - i = _p_; + /*<>*/ caml_check_bound(res, _p_)[_p_ + 1] = _q_; + var _r_ = /*<>*/ i + 1 | 0; + if(_o_ === i) break; + i = _r_; } } /*<>*/ return res; @@ -31987,9 +32031,9 @@ function get_variable(table, name){ /*<>*/ try{ var - _l_ = + _n_ = /*<>*/ caml_call2(Vars[17], name, table[7]); - return _l_; + return _n_; } catch(exn$0){ var exn = /*<>*/ caml_wrap_exception(exn$0); @@ -32002,9 +32046,9 @@ function get_variables(table, names){ /*<>*/ return Stdlib_Array[16].call (null, - function(_l_){ + function(_n_){ /*<>*/ return get_variable - (table, _l_); + (table, _n_); }, names) /*<>*/ ; } @@ -32038,7 +32082,7 @@ (null, inst_var_count, table[1] - 1 | 0); /*<>*/ table[8] = Stdlib_List[11].call(null, table[8]); - var _l_ = /*<>*/ Stdlib_Sys[10]; + var _n_ = /*<>*/ Stdlib_Sys[10]; return /*<>*/ resize (table, 3 @@ -32049,7 +32093,7 @@ [2] * 16 | 0, - _l_) + _n_) | 0) /*<>*/ ; } function inherits(cla, vals, virt_meths, concr_meths, param, top){ @@ -32063,8 +32107,8 @@ : /*<>*/ caml_call1(super$, cla); /*<>*/ widen(cla); var - _i_ = /*<>*/ to_array(concr_meths), - _j_ = + _k_ = /*<>*/ to_array(concr_meths), + _l_ = /*<>*/ [0, Stdlib_Array[16].call (null, @@ -32073,21 +32117,21 @@ (cla, /*<>*/ get_method_label(cla, nm)) /*<>*/ ; }, - _i_), + _k_), 0], - _k_ = /*<>*/ to_array(vals), - _l_ = + _m_ = /*<>*/ to_array(vals), + _n_ = /*<>*/ [0, [0, init], [0, Stdlib_Array[16].call (null, - function(_l_){ - /*<>*/ return get_variable(cla, _l_); + function(_n_){ + /*<>*/ return get_variable(cla, _n_); }, - _k_), - _j_]]; - /*<>*/ return Stdlib_Array[5].call(null, _l_) /*<>*/ ; + _m_), + _l_]]; + /*<>*/ return Stdlib_Array[5].call(null, _n_) /*<>*/ ; } function make_class(pub_meths, class_init){ var @@ -32117,14 +32161,16 @@ /*<>*/ } /*<>*/ return [0, undef, undef, 0]; /*<>*/ } - function create_object(table){ + function create_object$0(_j_, _k_){ var obj = - /*<>*/ caml_obj_block - (Stdlib_Obj[10], table[1]); - /*<>*/ obj[1] = table[2]; + /*<>*/ caml_obj_block(Stdlib_Obj[10], _j_); + /*<>*/ obj[1] = _k_; /*<>*/ return caml_set_oo_id(obj) /*<>*/ ; } + function create_object(_j_){ + /*<>*/ return create_object$0(_j_[1], _j_[2]) /*<>*/ ; + } function create_object_opt(obj_0, table){ /*<>*/ if(obj_0) /*<>*/ return obj_0; @@ -32144,11 +32190,12 @@ /*<>*/ param = l; } /*<>*/ } - function run_initializers(obj, table){ - var - inits = /*<>*/ table[8], - _i_ = /*<>*/ 0 !== inits ? 1 : 0; - return _i_ ? /*<>*/ iter_f(obj, inits) : _i_ /*<>*/ ; + function run_initializers$0(inits, obj){ + var _j_ = /*<>*/ 0 !== inits ? 1 : 0; + return _j_ ? /*<>*/ iter_f(obj, inits) : _j_ /*<>*/ ; + } + function run_initializers(_i_, _j_){ + /*<>*/ return run_initializers$0(_j_[8], _i_) /*<>*/ ; } function run_initializers_opt(obj_0, obj, table){ /*<>*/ if(obj_0) @@ -32161,8 +32208,10 @@ function create_object_and_run_initiali(obj_0, table){ /*<>*/ if(obj_0) /*<>*/ return obj_0; - var obj = /*<>*/ create_object(table); - /*<>*/ run_initializers(obj, table); + var + obj = + /*<>*/ create_object$0(table[1], table[2]); + /*<>*/ run_initializers$0(table[8], obj); /*<>*/ return obj; /*<>*/ } var @@ -32770,21 +32819,21 @@ Stdlib_Obj = global_data.Stdlib__Obj, CamlinternalOO = global_data.CamlinternalOO; function copy_from_array(a, dummy){ - var _af_ = /*<>*/ Stdlib_Obj[17]; - if(caml_obj_tag(a) !== _af_) + var _ag_ = /*<>*/ Stdlib_Obj[17]; + if(caml_obj_tag(a) !== _ag_) /*<>*/ return Stdlib_Array[7].call(null, a) /*<>*/ ; var n = /*<>*/ a.length - 1, arr = /*<>*/ caml_array_make(n, dummy), - _ae_ = /*<>*/ n - 1 | 0; - if(_ae_ >= 0){ + _af_ = /*<>*/ n - 1 | 0; + if(_af_ >= 0){ var i = 0; for(;;){ var v = /*<>*/ a[i + 1]; /*<>*/ arr[i + 1] = v; - var _ag_ = /*<>*/ i + 1 | 0; - if(_ae_ === i) break; - i = _ag_; + var _ah_ = /*<>*/ i + 1 | 0; + if(_af_ === i) break; + i = _ah_; } } /*<>*/ return arr; @@ -32812,10 +32861,10 @@ _c_ = CamlinternalOO[3].call(null, _b_, "x"); CamlinternalOO[17].call(null, _b_); _a_[1] = - function(_ae_){ - var _ad_ = /*<>*/ CamlinternalOO[24].call(null, 0, _b_); - _ad_[_c_ + 1] = _ae_[2]; - return _ad_; + function(_af_){ + var _ae_ = /*<>*/ CamlinternalOO[24].call(null, 0, _b_); + _ae_[_c_ + 1] = _af_[2]; + return _ae_; }; } var @@ -32933,17 +32982,15 @@ 0, [11, " to ", [4, 0, 0, 0, [11, " occurred during iteration", 0]]]]]]], "Dynarray.%s: a length change from %d to %d occurred during iteration"]; - function check_same_length(f, param, expected){ - var - length_a = /*<>*/ param[1], - _ad_ = /*<>*/ expected !== length_a ? 1 : 0; - return _ad_ + function check_same_length(length_a, f, expected){ + var _ae_ = /*<>*/ expected !== length_a ? 1 : 0; + return _ae_ ? /*<>*/ caml_call3 (Stdlib_Printf[10].call(null, Stdlib[1], _m_), f, expected, length_a) - : _ad_ /*<>*/ ; + : _ae_ /*<>*/ ; } var _l_ = @@ -32955,14 +33002,14 @@ function check_valid_length(length, arr){ var capacity = /*<>*/ arr.length - 1, - _ad_ = /*<>*/ capacity < length ? 1 : 0; - return _ad_ + _ae_ = /*<>*/ capacity < length ? 1 : 0; + return _ae_ ? /*<>*/ caml_call3 (Stdlib_Printf[10].call(null, Stdlib[1], _l_), invalid_state_description, length, capacity) - : _ad_ /*<>*/ ; + : _ae_ /*<>*/ ; } function unsafe_get(arr, dummy, i, length){ var v = /*<>*/ arr[i + 1]; @@ -32976,8 +33023,8 @@ function make(n, x){ /*<>*/ if(n < 0) /*<>*/ negative_length_requested("make", n); - var _ad_ = /*<>*/ Stdlib_Obj[16]; - if(caml_obj_tag(x) !== _ad_) + var _ae_ = /*<>*/ Stdlib_Obj[16]; + if(caml_obj_tag(x) !== _ae_) var arr$0 = /*<>*/ /*<>*/ caml_array_make @@ -32994,29 +33041,31 @@ /*<>*/ negative_length_requested("init", n); var arr = /*<>*/ caml_array_make(n, dummy), - _ac_ = /*<>*/ n - 1 | 0; - if(_ac_ >= 0){ + _ad_ = /*<>*/ n - 1 | 0; + if(_ad_ >= 0){ var i = 0; for(;;){ var v = /*<>*/ caml_call1(f, i); /*<>*/ arr[i + 1] = v; - var _ad_ = /*<>*/ i + 1 | 0; - if(_ac_ === i) break; - i = _ad_; + var _ae_ = /*<>*/ i + 1 | 0; + if(_ad_ === i) break; + i = _ae_; } } /*<>*/ return [0, n, arr, dummy]; /*<>*/ } - function get(param, i){ - var - v = /*<>*/ caml_check_bound(param[2], i)[i + 1], - dummy = /*<>*/ param[3]; - /*<>*/ if(v !== dummy) - /*<>*/ return v; - var length = /*<>*/ param[1]; - /*<>*/ return i < length - ? /*<>*/ missing_element(i, length) - : /*<>*/ index_out_of_bounds("get", i, length) /*<>*/ ; + function get$0(length, _ad_, dummy, i){ + var v = /*<>*/ caml_check_bound(_ad_, i)[i + 1]; + /*<>*/ return v === dummy + ? i + < length + ? /*<>*/ missing_element(i, length) + : /*<>*/ index_out_of_bounds + ("get", i, length) + : v /*<>*/ ; + } + function get(_ac_, _ad_){ + /*<>*/ return get$0(_ac_[1], _ac_[2], _ac_[3], _ad_) /*<>*/ ; } function set(param, i, x){ var length = /*<>*/ param[1], arr = param[2]; @@ -33029,8 +33078,8 @@ = x, 0) /*<>*/ ; } - function length(param){ - /*<>*/ return param[1]; + function length(_ac_){ + /*<>*/ return _ac_[1]; /*<>*/ } function is_empty(param){ /*<>*/ return 0 === param[1] ? 1 : 0; @@ -33274,8 +33323,8 @@ src_arr = /*<>*/ src[2], dst_arr = /*<>*/ dst[2], cst_blit = /*<>*/ "blit"; - /*<>*/ check_same_length(cst_blit, src, src_length); - /*<>*/ check_same_length(cst_blit, dst, dst_length); + /*<>*/ check_same_length(src[1], cst_blit, src_length); + /*<>*/ check_same_length(dst[1], cst_blit, dst_length); /*<>*/ if(dst_length < (dst_pos + blit_length | 0)) /*<>*/ dst[1] = dst_pos + blit_length | 0; var dst_dummy = /*<>*/ dst[3], src_dummy = src[3]; @@ -33365,7 +33414,9 @@ [11, ") in target dynarray of length ", [4, 0, 0, 0, 0]]]]]], "Dynarray.blit: invalid target region (%d..%d) in target dynarray of length %d"]; function blit(src, src_pos, dst, dst_pos, len){ - var src_length = /*<>*/ src[1], dst_length = dst[1]; + var + src_length = /*<>*/ src[1], + dst_length = /*<>*/ dst[1]; /*<>*/ if(len < 0) /*<>*/ caml_call1 (Stdlib_Printf[10].call(null, Stdlib[1], _s_), len); @@ -33439,22 +33490,21 @@ : ( /*<>*/ blit_assume_room (b, 0, length_b, param, length_a, length_a, length_b), /*<>*/ check_same_length - (cst_append, b, length_b), + (b[1], cst_append, length_b), 1) /*<>*/ ; } function append(a, b){ - var length_b = /*<>*/ b[1]; + var length_b = /*<>*/ b[1]; /*<>*/ if(append_if_room(a, b, length_b)) /*<>*/ return 0; /*<>*/ for(;;){ /*<>*/ ensure_extra_capacity(a, length_b); - /*<>*/ check_same_length(cst_append, b, length_b); + /*<>*/ check_same_length(b[1], cst_append, length_b); var _K_ = /*<>*/ 1 - append_if_room(a, b, length_b); /*<>*/ if(! _K_) return _K_; } /*<>*/ } - function iter(f, k, a){ - var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; + function iter$0(length, arr, dummy, f, k){ /*<>*/ check_valid_length(length, arr); var _J_ = /*<>*/ length - 1 | 0; if(_J_ >= 0){ @@ -33467,10 +33517,10 @@ i = _K_; } } - /*<>*/ return check_same_length(f, a, length) /*<>*/ ; + /*<>*/ return check_same_length(length, f, length) /*<>*/ ; } - function iter$0(k, a){ - /*<>*/ return iter("iter", k, a) /*<>*/ ; + function iter(k, a){ + /*<>*/ return iter$0(a[1], a[2], a[3], "iter", k) /*<>*/ ; } function iteri(k, a){ var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; @@ -33486,7 +33536,7 @@ i = _J_; } } - /*<>*/ return check_same_length("iteri", a, length) /*<>*/ ; + /*<>*/ return check_same_length(a[1], "iteri", length) /*<>*/ ; } function map(f, a){ var length = /*<>*/ a[1], arr_in = a[2], dummy = a[3]; @@ -33508,7 +33558,7 @@ i = _I_; } } - /*<>*/ check_same_length("map", a, length); + /*<>*/ check_same_length(a[1], "map", length); /*<>*/ return [0, length, arr_out, dummy]; /*<>*/ } function mapi(f, a){ @@ -33532,7 +33582,7 @@ i = _H_; } } - /*<>*/ check_same_length("mapi", a, length); + /*<>*/ check_same_length(a[1], "mapi", length); /*<>*/ return [0, length, arr_out, dummy]; /*<>*/ } function fold_left(f, acc, a){ @@ -33553,7 +33603,7 @@ i = _G_; } } - /*<>*/ check_same_length("fold_left", a, length); + /*<>*/ check_same_length(a[1], "fold_left", length); /*<>*/ return r$0; /*<>*/ } function fold_right(f, a, acc){ @@ -33574,7 +33624,7 @@ i = _E_; } } - /*<>*/ check_same_length("fold_right", a, length); + /*<>*/ check_same_length(a[1], "fold_right", length); /*<>*/ return r$0; /*<>*/ } function exists(p, a){ @@ -33596,7 +33646,7 @@ } var res = _C_; } - /*<>*/ check_same_length("exists", a, length); + /*<>*/ check_same_length(a[1], "exists", length); /*<>*/ return res; } /*<>*/ } @@ -33619,7 +33669,7 @@ } var res = _C_; } - /*<>*/ check_same_length("for_all", a, length); + /*<>*/ check_same_length(a[1], "for_all", length); /*<>*/ return res; } /*<>*/ } @@ -33656,8 +33706,10 @@ } var res = _B_; } - /*<>*/ check_same_length(cst_exists2, a1, length1); - /*<>*/ check_same_length(cst_exists2, a2, length2); + /*<>*/ check_same_length + (a1[1], cst_exists2, length1); + /*<>*/ check_same_length + (a2[1], cst_exists2, length2); /*<>*/ return res; } /*<>*/ } @@ -33694,36 +33746,42 @@ } var res = _A_; } - /*<>*/ check_same_length(cst_for_all2, a1, length1); - /*<>*/ check_same_length(cst_for_all2, a2, length2); + /*<>*/ check_same_length + (a1[1], cst_for_all2, length1); + /*<>*/ check_same_length + (a2[1], cst_for_all2, length2); /*<>*/ return res; } /*<>*/ } function filter(f, a){ var b = /*<>*/ create(0); - /*<>*/ iter - ("filter", + /*<>*/ iter$0 + (a[1], + a[2], + a[3], + "filter", function(x){ var _A_ = /*<>*/ caml_call1(f, x); /*<>*/ return _A_ ? /*<>*/ add_last(b, x) : _A_ /*<>*/ ; - }, - a); + }); /*<>*/ return b; /*<>*/ } function filter_map(f, a){ var b = /*<>*/ create(0); - /*<>*/ iter - ("filter_map", + /*<>*/ iter$0 + (a[1], + a[2], + a[3], + "filter_map", function(x){ var match = /*<>*/ caml_call1(f, x); /*<>*/ if(! match) /*<>*/ return 0; var y = /*<>*/ match[1]; /*<>*/ return add_last(b, y) /*<>*/ ; - }, - a); + }); /*<>*/ return b; /*<>*/ } function mem(x, a){ @@ -33745,7 +33803,7 @@ } var res = /*<>*/ 1; } - /*<>*/ check_same_length("mem", a, length); + /*<>*/ check_same_length(a[1], "mem", length); /*<>*/ return res; } /*<>*/ } @@ -33764,7 +33822,7 @@ } var res = /*<>*/ 1; } - /*<>*/ check_same_length("memq", a, length); + /*<>*/ check_same_length(a[1], "memq", length); /*<>*/ return res; } /*<>*/ } @@ -33784,7 +33842,7 @@ } var res = /*<>*/ [0, x]; } - /*<>*/ check_same_length("find_opt", a, length); + /*<>*/ check_same_length(a[1], "find_opt", length); /*<>*/ return res; } /*<>*/ } @@ -33804,7 +33862,7 @@ } var res = /*<>*/ [0, i]; } - /*<>*/ check_same_length("find_index", a, length); + /*<>*/ check_same_length(a[1], "find_index", length); /*<>*/ return res; } /*<>*/ } @@ -33827,7 +33885,7 @@ } var res = /*<>*/ r; } - /*<>*/ check_same_length("find_map", a, length); + /*<>*/ check_same_length(a[1], "find_map", length); /*<>*/ return res; } /*<>*/ } @@ -33852,7 +33910,7 @@ } var res = /*<>*/ r; } - /*<>*/ check_same_length("find_mapi", a, length); + /*<>*/ check_same_length(a[1], "find_mapi", length); /*<>*/ return res; } /*<>*/ } @@ -33888,8 +33946,8 @@ var r = _z_; } var cst_equal = /*<>*/ "equal"; - /*<>*/ check_same_length(cst_equal, a1, length); - /*<>*/ check_same_length(cst_equal, a2, length); + /*<>*/ check_same_length(a1[1], cst_equal, length); + /*<>*/ check_same_length(a2[1], cst_equal, length); /*<>*/ return r; } /*<>*/ } @@ -33925,8 +33983,8 @@ var r = /*<>*/ c; } var cst_compare = /*<>*/ "compare"; - /*<>*/ check_same_length(cst_compare, a1, length); - /*<>*/ check_same_length(cst_compare, a2, length); + /*<>*/ check_same_length(a1[1], cst_compare, length); + /*<>*/ check_same_length(a2[1], cst_compare, length); /*<>*/ return r; } /*<>*/ } @@ -33947,7 +34005,7 @@ function(i){ /*<>*/ return unsafe_get(arr, dummy, i, length) /*<>*/ ; }); - /*<>*/ check_same_length("to_array", a, length); + /*<>*/ check_same_length(a[1], "to_array", length); /*<>*/ return res; /*<>*/ } function of_list(li){ @@ -33981,7 +34039,7 @@ i = _z_; } } - /*<>*/ check_same_length("to_list", a, length); + /*<>*/ check_same_length(a[1], "to_list", length); /*<>*/ return l$0; /*<>*/ } function of_seq(seq){ @@ -33994,7 +34052,7 @@ /*<>*/ check_valid_length(length, arr); function aux(i){ /*<>*/ return function(param){ - /*<>*/ check_same_length("to_seq", a, length); + /*<>*/ check_same_length(a[1], "to_seq", length); /*<>*/ if(length <= i) /*<>*/ return 0; var v = /*<>*/ unsafe_get(arr, dummy, i, length); @@ -34007,7 +34065,7 @@ /*<>*/ return function(param){ /*<>*/ if(a[1] <= i) /*<>*/ return 0; - var v = /*<>*/ get(a, i); + var v = /*<>*/ get$0(a[1], a[2], a[3], i); /*<>*/ return [0, v, aux(i + 1 | 0)] /*<>*/ ; /*<>*/ } /*<>*/ ; /*<>*/ } /*<>*/ return aux(0) /*<>*/ ; @@ -34017,7 +34075,8 @@ /*<>*/ check_valid_length(length, arr); function aux(i){ /*<>*/ return function(param){ - /*<>*/ check_same_length("to_seq_rev", a, length); + /*<>*/ check_same_length + (a[1], "to_seq_rev", length); /*<>*/ if(0 > i) /*<>*/ return 0; var v = /*<>*/ unsafe_get(arr, dummy, i, length); @@ -34032,7 +34091,7 @@ /*<>*/ return 0; /*<>*/ if(a[1] <= i) /*<>*/ return aux(a[1] - 1 | 0)(0) /*<>*/ ; - var v = /*<>*/ get(a, i); + var v = /*<>*/ get$0(a[1], a[2], a[3], i); /*<>*/ return [0, v, aux(i - 1 | 0)] /*<>*/ ; /*<>*/ } /*<>*/ ; /*<>*/ } /*<>*/ return aux(a[1] - 1 | 0) /*<>*/ ; @@ -34132,7 +34191,7 @@ remove_last, truncate, clear, - iter$0, + iter, iteri, map, mapi, @@ -34401,9 +34460,9 @@ var Stdlib_Pqueue = [0, - function(E){ + function(_b_){ var - compare = E[1], + compare = _b_[1], include = MakeMinPoly([0, compare]), create = include[1], length = include[2], @@ -34616,8 +34675,8 @@ _w_ = Stdlib_Array[7].call(null, h[2]); /*<>*/ return [0, h[1], _w_, _v_, _u_]; /*<>*/ } - function key_index(h, hkey){ - /*<>*/ return hkey & (h[2].length - 2 | 0); + function key_index(_u_, hkey){ + /*<>*/ return hkey & (_u_.length - 2 | 0); /*<>*/ } function clean(h){ function do_bucket(param$0){ @@ -34674,7 +34733,7 @@ data = param[2], hkey = param[1]; /*<>*/ insert_bucket(rest); - var nidx = /*<>*/ key_index(h, hkey); + var nidx = /*<>*/ key_index(h[2], hkey); /*<>*/ ndata[nidx + 1] = [0, hkey, data, caml_check_bound(ndata, nidx)[nidx + 1]]; /*<>*/ }, @@ -34698,7 +34757,7 @@ function add(h, key, info){ var hkey = /*<>*/ caml_call2(H[2], h[3], key), - i = /*<>*/ key_index(h, hkey), + i = /*<>*/ key_index(h[2], hkey), container = /*<>*/ caml_call2(H[1], key, info), bucket = /*<>*/ [0, @@ -34741,7 +34800,7 @@ } /*<>*/ } var - i = /*<>*/ key_index(h, hkey), + i = /*<>*/ key_index(h[2], hkey), _p_ = /*<>*/ /*<>*/ remove_bucket ( /*<>*/ caml_check_bound(h[2], i)[i + 1]); @@ -34751,7 +34810,7 @@ function find(h, key){ var hkey = /*<>*/ caml_call2(H[2], h[3], key), - _p_ = /*<>*/ key_index(h, hkey), + _p_ = /*<>*/ key_index(h[2], hkey), param = /*<>*/ /*<>*/ caml_check_bound (h[2], _p_) @@ -34784,7 +34843,7 @@ function find_opt(h, key){ var hkey = /*<>*/ caml_call2(H[2], h[3], key), - _p_ = /*<>*/ key_index(h, hkey), + _p_ = /*<>*/ key_index(h[2], hkey), param = /*<>*/ /*<>*/ caml_check_bound (h[2], _p_) @@ -34838,7 +34897,7 @@ } } /*<>*/ } - var _p_ = /*<>*/ key_index(h, hkey); + var _p_ = /*<>*/ key_index(h[2], hkey); /*<>*/ return /*<>*/ find_in_bucket ( /*<>*/ caml_check_bound(h[2], _p_) [_p_ + 1]) /*<>*/ ; @@ -34846,7 +34905,7 @@ function replace(h, key, info){ var hkey = /*<>*/ caml_call2(H[2], h[3], key), - i = /*<>*/ key_index(h, hkey), + i = /*<>*/ key_index(h[2], hkey), l = /*<>*/ caml_check_bound(h[2], i)[i + 1]; /*<>*/ try{ var param = l; @@ -34887,7 +34946,7 @@ function mem(h, key){ var hkey = /*<>*/ caml_call2(H[2], h[3], key), - _o_ = /*<>*/ key_index(h, hkey), + _o_ = /*<>*/ key_index(h[2], hkey), param = /*<>*/ /*<>*/ caml_check_bound (h[2], _o_) @@ -35076,20 +35135,19 @@ ? /*<>*/ get_data(eph) : 0 /*<>*/ ; } - function MakeSeeded$0(H){ + function MakeSeeded$3(_o_, seeded_hash){ function create$0(k, d){ var c = /*<>*/ create(0); /*<>*/ set_data(c, d); /*<>*/ set_key(c, k); /*<>*/ return c; /*<>*/ } - var seeded_hash = /*<>*/ H[2]; function equal(c, k){ var match = /*<>*/ get_key(c); /*<>*/ if(! match) /*<>*/ return 2; var k$0 = /*<>*/ match[1]; - /*<>*/ return caml_call2(H[1], k, k$0) ? 0 : 1 /*<>*/ ; + /*<>*/ return caml_call2(_o_, k, k$0) ? 0 : 1 /*<>*/ ; } function set_key_data(c, k, d){ /*<>*/ caml_call1(Stdlib_Obj[23][12], c); @@ -35105,6 +35163,7 @@ set_key_data, check_key]); } + function MakeSeeded$0(_o_){return MakeSeeded$3(_o_[1], _o_[2]);} var _a_ = [0, 0]; function Make(H){ var equal = H[1]; @@ -35112,7 +35171,7 @@ /*<>*/ return caml_call1(H[2], x) /*<>*/ ; } var - include = /*<>*/ MakeSeeded$0([0, equal, seeded_hash]), + include = /*<>*/ MakeSeeded$3(equal, seeded_hash), _o_ = include[1], clear = include[2], reset = include[3], @@ -36021,26 +36080,6 @@ /*<>*/ return generic_dirname (is_dir_sep, current_dir_name, _M_); } - var - cst$5 = /*<>*/ "..", - cst$6 = "/", - cst_dev_null = "/dev/null", - Unix = - /*<>*/ [0, - cst_dev_null, - current_dir_name, - cst$5, - cst$6, - is_dir_sep, - is_relative, - is_implicit, - check_suffix, - chop_suffix_opt, - temp_dir_name, - quote, - quote_command, - basename, - dirname]; function is_dir_sep$0(s, i){ var c = /*<>*/ caml_string_get(s, i), @@ -36432,58 +36471,59 @@ (is_dir_sep$0, current_dir_name$1, _h_); } var - Cygwin = - /*<>*/ [0, - cst_dev_null, - current_dir_name$1, - cst$5, - cst$6, - is_dir_sep$0, - is_relative$0, - is_implicit$0, - check_suffix$0, - chop_suffix_opt$0, - temp_dir_name, - quote, - quote_command, - basename$1, - dirname$1], - match = Stdlib_Sys[5], - Sysdeps = - match !== "Cygwin" - ? match - !== "Win32" - ? Unix - : [0, - "NUL", - current_dir_name$0, - cst$5, - "\\", - is_dir_sep$0, - is_relative$0, - is_implicit$0, - check_suffix$0, - chop_suffix_opt$0, - temp_dir_name$0, - quote$0, - quote_command$0, - basename$0, - dirname$0] - : Cygwin, - null$ = Sysdeps[1], - current_dir_name$2 = Sysdeps[2], - parent_dir_name = Sysdeps[3], - dir_sep = Sysdeps[4], - is_dir_sep$1 = Sysdeps[5], - is_relative$1 = Sysdeps[6], - is_implicit$1 = Sysdeps[7], - check_suffix$1 = Sysdeps[8], - chop_suffix_opt$1 = Sysdeps[9], - temp_dir_name$1 = Sysdeps[10], - quote$1 = Sysdeps[11], - quote_command$1 = Sysdeps[12], - basename$2 = Sysdeps[13], - dirname$2 = Sysdeps[14]; + match = /*<>*/ Stdlib_Sys[5], + cst$5 = /*<>*/ "..", + cst$6 = "/", + cst_dev_null = "/dev/null"; + /*<>*/ if(match !== "Cygwin") + if(match !== "Win32") + var + dirname$2 = dirname, + basename$2 = basename, + quote_command$1 = quote_command, + quote$1 = quote, + temp_dir_name$1 = temp_dir_name, + chop_suffix_opt$1 = chop_suffix_opt, + check_suffix$1 = check_suffix, + is_implicit$1 = is_implicit, + is_relative$1 = is_relative, + is_dir_sep$1 = is_dir_sep, + dir_sep = cst$6, + parent_dir_name = cst$5, + current_dir_name$2 = current_dir_name, + null$ = cst_dev_null; + else + var + dirname$2 = dirname$0, + basename$2 = basename$0, + quote_command$1 = quote_command$0, + quote$1 = quote$0, + temp_dir_name$1 = temp_dir_name$0, + chop_suffix_opt$1 = chop_suffix_opt$0, + check_suffix$1 = check_suffix$0, + is_implicit$1 = is_implicit$0, + is_relative$1 = is_relative$0, + is_dir_sep$1 = is_dir_sep$0, + dir_sep = "\\", + parent_dir_name = cst$5, + current_dir_name$2 = current_dir_name$0, + null$ = "NUL"; + else + var + dirname$2 = dirname$1, + basename$2 = basename$1, + quote_command$1 = quote_command, + quote$1 = quote, + temp_dir_name$1 = temp_dir_name, + chop_suffix_opt$1 = chop_suffix_opt$0, + check_suffix$1 = check_suffix$0, + is_implicit$1 = is_implicit$0, + is_relative$1 = is_relative$0, + is_dir_sep$1 = is_dir_sep$0, + dir_sep = cst$6, + parent_dir_name = cst$5, + current_dir_name$2 = current_dir_name$1, + null$ = cst_dev_null; function concat(dirname, filename){ var l = /*<>*/ caml_ml_string_length(dirname); /*<>*/ if @@ -36683,32 +36723,32 @@ } } /*<>*/ } - /*<>*/ runtime.caml_register_global - (64, - [0, - current_dir_name$2, - parent_dir_name, - dir_sep, - concat, - is_relative$1, - is_implicit$1, - check_suffix$1, - chop_suffix, - chop_suffix_opt$1, - extension, - remove_extension, - chop_extension, - basename$2, - dirname$2, - null$, - temp_file, - open_temp_file, - temp_dir, - get_temp_dir_name, - set_temp_dir_name, - quote$1, - quote_command$1], - "Stdlib__Filename"); + var + Stdlib_Filename = + /*<>*/ [0, + current_dir_name$2, + parent_dir_name, + dir_sep, + concat, + is_relative$1, + is_implicit$1, + check_suffix$1, + chop_suffix, + chop_suffix_opt$1, + extension, + remove_extension, + chop_extension, + basename$2, + dirname$2, + null$, + temp_file, + open_temp_file, + temp_dir, + get_temp_dir_name, + set_temp_dir_name, + quote$1, + quote_command$1]; + runtime.caml_register_global(64, Stdlib_Filename, "Stdlib__Filename"); return; /*<>*/ } (globalThis)); @@ -37453,7 +37493,7 @@ //# unitInfo: Provides: Stdlib__MoreLabels //# unitInfo: Requires: Stdlib__Hashtbl, Stdlib__Map, Stdlib__Set -//# shape: Stdlib__MoreLabels:[[F(2),F(1),F(1),F(1),F(3),F(2),F(2),F(2),F(2),F(2),F(3),F(2),F(2),F(3),F(1)*,F(1),F(1)*,F(2),F(1),F(1)*->F(1),F(1)*->F(1),F(1)*->F(1),F(2),F(2),F(1),F(1)*,F(1)*,F(1)*,F(2)*,F(3)*,F(4)*],[F(1)*],[F(1)*]] +//# shape: Stdlib__MoreLabels:[[F(2),F(1),F(1),F(1),F(3),F(2),F(2),F(2),F(2),F(2),F(3),F(2),F(2),F(3),F(1)*,F(1),F(1)*,F(2),F(1),F(1)*,F(1)*->F(1),F(1)*->F(1),F(2),F(2),F(1),F(1)*,F(1)*,F(1)*,F(2)*,F(3)*,F(4)*],[F(1)*],[F(1)*]] (function (globalThis){ "use strict"; From 277f674c0fb29eda22a0c5a4d98a189f49cc41b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Vouillon?= Date: Tue, 3 Mar 2026 23:39:59 +0100 Subject: [PATCH 7/9] fixup! Do allow field access after function call --- compiler/lib/unboxing.ml | 41 +++++++++++++++++ compiler/tests-full/stdlib.cma.expected.js | 52 +++++++++++----------- 2 files changed, 66 insertions(+), 27 deletions(-) diff --git a/compiler/lib/unboxing.ml b/compiler/lib/unboxing.ml index 750b13f14d..869064e5e7 100644 --- a/compiler/lib/unboxing.ml +++ b/compiler/lib/unboxing.ml @@ -181,6 +181,44 @@ let check_tuple_accesses p tbl = | Closure _ -> tuple.start_pc)) tbl +(* Check that there is no function call between the start of the + scope and the last field access. A function call could update a + mutable block through an alias, making the unboxed field values + stale. *) +let check_no_apply_before_field_access p tbl = + Var.Hashtbl.filter_map_inplace + (fun x tuple -> + let start_pc = + match tuple.loc with + | Block pc -> pc + | Closure _ -> tuple.start_pc + in + let visited = BitSet.create' p.free_pc in + (* Walk the scope of this candidate. Return true if we find + an Apply that can reach a Field access on [x]. We do this + by tracking [seen_apply] through the traversal. *) + let dominated_by_apply = ref false in + let rec traverse pc seen_apply = + if not (BitSet.mem visited pc) + then ( + BitSet.set visited pc; + let block = Addr.Map.find pc p.blocks in + let seen_apply = ref seen_apply in + List.iter + ~f:(fun i -> + match i with + | Let (_, Field (y, _, _)) when Var.equal x y -> + if !seen_apply then dominated_by_apply := true + | Let (_, Apply _) -> seen_apply := true + | Let (_, Closure (_, (pc', _), _)) -> traverse pc' false + | _ -> ()) + block.body; + Code.fold_children p.blocks pc (fun pc' () -> traverse pc' !seen_apply) ()) + in + traverse start_pc false; + if !dominated_by_apply then None else Some tuple) + tbl + let check_call_sites p tbl = let relevant_closures = Var.Hashtbl.fold @@ -483,6 +521,9 @@ let f p = (* Check that the tuples don't escape and that we don't access more fields than expected *) check_tuple_accesses p tbl; + (* Discard candidates where a function call could mutate the block + through an alias before a field access *) + check_no_apply_before_field_access p tbl; (* Do not unbox function parameters when we are using too many of their fields *) Var.Hashtbl.filter_map_inplace diff --git a/compiler/tests-full/stdlib.cma.expected.js b/compiler/tests-full/stdlib.cma.expected.js index 47f45ede56..394585dfc2 100644 --- a/compiler/tests-full/stdlib.cma.expected.js +++ b/compiler/tests-full/stdlib.cma.expected.js @@ -23966,13 +23966,14 @@ cst_Digest_subbytes = /*<>*/ "Digest.subbytes", cst_Digest_substring = "Digest.substring", cst_Digest_to_hex = "Digest.to_hex"; - function BLAKE2(hash_length){ - var _a_ = hash_length < 1, _b_ = _a_ || 64 < hash_length; + function BLAKE2(X){ + var _a_ = X[1] < 1, _b_ = _a_ || 64 < X[1]; if(_b_) /*<>*/ Stdlib[1].call (null, "Digest.BLAKE2: wrong hash size"); var - compare = /*<>*/ Stdlib_String[10], + hash_length = /*<>*/ X[1], + compare = Stdlib_String[10], equal = Stdlib_String[9], cst = /*<>*/ ""; function string(str){ @@ -24087,9 +24088,9 @@ of_hex]; } var - BLAKE128 = /*<>*/ BLAKE2(16), - BLAKE256 = BLAKE2(32), - BLAKE512 = BLAKE2(64), + BLAKE128 = /*<>*/ BLAKE2([0, 16]), + BLAKE256 = BLAKE2([0, 32]), + BLAKE512 = BLAKE2([0, 64]), compare = Stdlib_String[10], equal = Stdlib_String[9]; function string(str){ @@ -33504,7 +33505,8 @@ /*<>*/ if(! _K_) return _K_; } /*<>*/ } - function iter$0(length, arr, dummy, f, k){ + function iter(f, k, a){ + var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; /*<>*/ check_valid_length(length, arr); var _J_ = /*<>*/ length - 1 | 0; if(_J_ >= 0){ @@ -33517,10 +33519,10 @@ i = _K_; } } - /*<>*/ return check_same_length(length, f, length) /*<>*/ ; + /*<>*/ return check_same_length(a[1], f, length) /*<>*/ ; } - function iter(k, a){ - /*<>*/ return iter$0(a[1], a[2], a[3], "iter", k) /*<>*/ ; + function iter$0(k, a){ + /*<>*/ return iter("iter", k, a) /*<>*/ ; } function iteri(k, a){ var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; @@ -33755,33 +33757,29 @@ /*<>*/ } function filter(f, a){ var b = /*<>*/ create(0); - /*<>*/ iter$0 - (a[1], - a[2], - a[3], - "filter", + /*<>*/ iter + ("filter", function(x){ var _A_ = /*<>*/ caml_call1(f, x); /*<>*/ return _A_ ? /*<>*/ add_last(b, x) : _A_ /*<>*/ ; - }); + }, + a); /*<>*/ return b; /*<>*/ } function filter_map(f, a){ var b = /*<>*/ create(0); - /*<>*/ iter$0 - (a[1], - a[2], - a[3], - "filter_map", + /*<>*/ iter + ("filter_map", function(x){ var match = /*<>*/ caml_call1(f, x); /*<>*/ if(! match) /*<>*/ return 0; var y = /*<>*/ match[1]; /*<>*/ return add_last(b, y) /*<>*/ ; - }); + }, + a); /*<>*/ return b; /*<>*/ } function mem(x, a){ @@ -34191,7 +34189,7 @@ remove_last, truncate, clear, - iter, + iter$0, iteri, map, mapi, @@ -35135,19 +35133,20 @@ ? /*<>*/ get_data(eph) : 0 /*<>*/ ; } - function MakeSeeded$3(_o_, seeded_hash){ + function MakeSeeded$0(H){ function create$0(k, d){ var c = /*<>*/ create(0); /*<>*/ set_data(c, d); /*<>*/ set_key(c, k); /*<>*/ return c; /*<>*/ } + var seeded_hash = /*<>*/ H[2]; function equal(c, k){ var match = /*<>*/ get_key(c); /*<>*/ if(! match) /*<>*/ return 2; var k$0 = /*<>*/ match[1]; - /*<>*/ return caml_call2(_o_, k, k$0) ? 0 : 1 /*<>*/ ; + /*<>*/ return caml_call2(H[1], k, k$0) ? 0 : 1 /*<>*/ ; } function set_key_data(c, k, d){ /*<>*/ caml_call1(Stdlib_Obj[23][12], c); @@ -35163,7 +35162,6 @@ set_key_data, check_key]); } - function MakeSeeded$0(_o_){return MakeSeeded$3(_o_[1], _o_[2]);} var _a_ = [0, 0]; function Make(H){ var equal = H[1]; @@ -35171,7 +35169,7 @@ /*<>*/ return caml_call1(H[2], x) /*<>*/ ; } var - include = /*<>*/ MakeSeeded$3(equal, seeded_hash), + include = /*<>*/ MakeSeeded$0([0, equal, seeded_hash]), _o_ = include[1], clear = include[2], reset = include[3], From e03afdcfba2d7d430e62010055fdf78bef4e0ce6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Vouillon?= Date: Wed, 4 Mar 2026 00:05:32 +0100 Subject: [PATCH 8/9] Only unbox when at least one tuple allocation is eliminated Skip unboxing when no call site or branch passes a Block literal as the argument, since in that case unboxing just moves field extractions around without eliminating any allocation. --- compiler/lib/unboxing.ml | 107 +- compiler/tests-full/stdlib.cma.expected.js | 1958 ++++++++++---------- 2 files changed, 1055 insertions(+), 1010 deletions(-) diff --git a/compiler/lib/unboxing.ml b/compiler/lib/unboxing.ml index 869064e5e7..f32ecc2658 100644 --- a/compiler/lib/unboxing.ml +++ b/compiler/lib/unboxing.ml @@ -20,9 +20,6 @@ (* Unboxing wrappers should be inlined -Less aggressive variant: only apply if one branch / call site has an -explicit tuple argument - Also look at function calls to see whether we know more about a parameter. *) @@ -269,6 +266,107 @@ let check_call_sites p tbl = tbl; locations +let check_eliminates_tuple p tbl = + (* 1. Collect all variables defined as Block literals *) + let is_block = ref Var.Set.empty in + let visited = BitSet.create' p.free_pc in + let rec collect pc = + if not (BitSet.mem visited pc) + then ( + BitSet.set visited pc; + let block = Addr.Map.find pc p.blocks in + List.iter + ~f:(fun i -> + match i with + | Let (x, Block _) | Let (x, Constant (Tuple _)) -> + is_block := Var.Set.add x !is_block + | Let (_, Closure (_, (pc', _), _)) -> collect pc' + | _ -> ()) + block.body; + Code.fold_children p.blocks pc (fun pc' () -> collect pc') ()) + in + collect p.start; + let is_block = !is_block in + (* 2. Build reverse maps for efficient lookup *) + (* block_cands: target_pc -> (candidate var * position) list *) + let block_cands = ref Addr.Map.empty in + (* closure_cands: closure var -> (candidate var * position) list *) + let closure_cands = Var.Hashtbl.create 16 in + Var.Hashtbl.iter + (fun x tuple -> + match tuple.loc with + | Block pc -> + let block = Addr.Map.find pc p.blocks in + let i = Option.get (List.find_index ~f:(fun y -> Var.equal x y) block.params) in + block_cands := + Addr.Map.update + pc + (function + | None -> Some [ x, i ] + | Some l -> Some ((x, i) :: l)) + !block_cands + | Closure (f, params) -> + let i = Option.get (List.find_index ~f:(fun y -> Var.equal x y) params) in + let existing = + try Var.Hashtbl.find closure_cands f with Not_found -> [] + in + Var.Hashtbl.replace closure_cands f ((x, i) :: existing)) + tbl; + let block_cands = !block_cands in + (* 3. Traverse, check branches and call sites *) + let useful = ref Var.Set.empty in + let mark_useful_cont (pc', args) = + match Addr.Map.find pc' block_cands with + | lst -> + List.iter + ~f:(fun (x, pos) -> + if pos < List.length args && Var.Set.mem (List.nth args pos) is_block + then useful := Var.Set.add x !useful) + lst + | exception Not_found -> () + in + let visited2 = BitSet.create' p.free_pc in + let rec check pc = + if not (BitSet.mem visited2 pc) + then ( + BitSet.set visited2 pc; + let block = Addr.Map.find pc p.blocks in + List.iter + ~f:(fun i -> + match i with + | Let (_, Apply { f; args; exact = true; _ }) -> ( + match Var.Hashtbl.find closure_cands f with + | lst -> + List.iter + ~f:(fun (x, pos) -> + if pos < List.length args + && Var.Set.mem (List.nth args pos) is_block + then useful := Var.Set.add x !useful) + lst + | exception Not_found -> ()) + | Let (_, Closure (_, (pc', _), _)) -> check pc' + | _ -> ()) + block.body; + (match block.branch with + | Branch cont -> mark_useful_cont cont + | Cond (_, c1, c2) -> + mark_useful_cont c1; + mark_useful_cont c2 + | Switch (_, conts) -> Array.iter ~f:mark_useful_cont conts + | Pushtrap (c1, _, c2) -> + mark_useful_cont c1; + mark_useful_cont c2 + | Poptrap cont -> mark_useful_cont cont + | Return _ | Raise _ | Stop -> ()); + Code.fold_children p.blocks pc (fun pc' () -> check pc') ()) + in + check p.start; + let useful = !useful in + (* 4. Filter *) + Var.Hashtbl.filter_map_inplace + (fun x tuple -> if Var.Set.mem x useful then Some tuple else None) + tbl + let rewrite_blocks p tbl = let ops = Int.Hashtbl.create 16 in let blocks = @@ -535,6 +633,9 @@ let f p = (* Only unbox closure parameters when they have at least one known call site *) let locations = check_call_sites p tbl in + (* Only unbox when at least one call site / branch passes a Block + literal, so that we actually eliminate a tuple allocation *) + check_eliminates_tuple p tbl; if debug () then ( Format.eprintf "Unboxed tuples:@."; diff --git a/compiler/tests-full/stdlib.cma.expected.js b/compiler/tests-full/stdlib.cma.expected.js index 394585dfc2..a5a37a6a79 100644 --- a/compiler/tests-full/stdlib.cma.expected.js +++ b/compiler/tests-full/stdlib.cma.expected.js @@ -13772,8 +13772,8 @@ /*<>*/ return runtime.caml_bytes_unsafe_get(buffer, ofs) /*<>*/ ; /*<>*/ return Stdlib[1].call(null, "Buffer.nth") /*<>*/ ; } - function length(_h_){ - /*<>*/ return _h_[2]; + function length(b){ + /*<>*/ return b[2]; /*<>*/ } function clear(b){ /*<>*/ b[2] = 0; @@ -14557,17 +14557,18 @@ } } /*<>*/ } - function set$0(idx, x){ - var st = /*<>*/ maybe_grow(idx); + function set(param, x){ + var + idx = /*<>*/ param[1], + st = /*<>*/ maybe_grow(idx); /*<>*/ caml_check_bound(st, idx)[idx + 1] = x; /*<>*/ return 0; } - function set(_b_, _c_){ - /*<>*/ return set$0(_b_[1], _c_) /*<>*/ ; - } var _a_ = /*<>*/ [0, "domain.ml", 184, 13]; - function get$0(idx, init){ + function get(param){ var + init = /*<>*/ param[2], + idx = param[1], st = /*<>*/ maybe_grow(idx), oldval = /*<>*/ caml_check_bound(st, idx)[idx + 1]; /*<>*/ if(oldval !== none) @@ -14590,15 +14591,12 @@ /*<>*/ throw caml_maybe_attach_backtrace ([0, Assert_failure, _a_], 1); /*<>*/ } - function get(_b_){ - /*<>*/ return get$0(_b_[1], _b_[2]) /*<>*/ ; - } function set_initial_keys(l){ /*<>*/ return Stdlib_List[19].call (null, function(param){ var v = /*<>*/ param[2], k = param[1]; - /*<>*/ return set$0(k[1], v) /*<>*/ ; + /*<>*/ return set(k, v) /*<>*/ ; }, l) /*<>*/ ; } @@ -14640,17 +14638,15 @@ /*<>*/ return 0; /*<>*/ } /*<>*/ ; /*<>*/ }); function at_exit(f){ - var - old_exit = - /*<>*/ get$0(at_exit_key[1], at_exit_key[2]); + var old_exit = /*<>*/ get(at_exit_key); function new_exit(param){ /*<>*/ caml_call1(f, 0); /*<>*/ return caml_call1(old_exit, 0) /*<>*/ ; } - /*<>*/ return set$0(at_exit_key[1], new_exit) /*<>*/ ; + /*<>*/ return set(at_exit_key, new_exit) /*<>*/ ; } function do_at_exit(param){ - var f = /*<>*/ get$0(at_exit_key[1], at_exit_key[2]); + var f = /*<>*/ get(at_exit_key); /*<>*/ return caml_call1(f, 0) /*<>*/ ; } /*<>*/ Stdlib[104][1] = do_at_exit; @@ -14675,7 +14671,7 @@ /*<>*/ return [0, k, /*<>*/ caml_call1 - (split, /*<>*/ get$0(k[1], k[2]))] /*<>*/ ; + (split, /*<>*/ get(k))] /*<>*/ ; /*<>*/ }, _a_), _b_ = /*<>*/ Stdlib_Condition[1].call(null, 0), @@ -14807,14 +14803,14 @@ var str_ind = /*<>*/ c >>> 3 | 0, mask = 1 << (c & 7), - _a4_ = + _a3_ = /*<>*/ runtime.caml_bytes_get (char_set, str_ind) | mask; /*<>*/ return /*<>*/ caml_bytes_set (char_set, str_ind, - /*<>*/ Stdlib[29].call(null, _a4_)) /*<>*/ ; + /*<>*/ Stdlib[29].call(null, _a3_)) /*<>*/ ; } function freeze_char_set(char_set){ /*<>*/ return Stdlib_Bytes[6].call @@ -14826,18 +14822,18 @@ i = /*<>*/ 0; for(;;){ var - _a3_ = + _a2_ = /*<>*/ caml_string_get(char_set, i) ^ 255; /*<>*/ /*<>*/ caml_bytes_set (char_set$0, i, - /*<>*/ Stdlib[29].call(null, _a3_)); - var _a4_ = /*<>*/ i + 1 | 0; + /*<>*/ Stdlib[29].call(null, _a2_)); + var _a3_ = /*<>*/ i + 1 | 0; if(31 === i) /*<>*/ return Stdlib_Bytes[44].call (null, char_set$0) /*<>*/ ; - /*<>*/ i = _a4_; + /*<>*/ i = _a3_; } /*<>*/ } function is_in_char_set(char_set, c){ @@ -14907,11 +14903,11 @@ /*<>*/ if(prec_opt) var ndec = prec_opt[1], - _a3_ = /*<>*/ [0, ndec]; + _a2_ = /*<>*/ [0, ndec]; else - var _a3_ = /*<>*/ 0; + var _a2_ = /*<>*/ 0; /*<>*/ return [0, - [8, _a_, pad_of_pad_opt(pad_opt$5), _a3_, fmt]] /*<>*/ ; + [8, _a_, pad_of_pad_opt(pad_opt$5), _a2_, fmt]] /*<>*/ ; case 7: var pad_opt$6 = /*<>*/ ign[1]; /*<>*/ return [0, @@ -14939,8 +14935,8 @@ /*<>*/ return [0, [21, counter, fmt]]; } /*<>*/ } - function default_float_precision(match){ - /*<>*/ return 5 === match ? 12 : -6 /*<>*/ ; + function default_float_precision(fconv){ + /*<>*/ return 5 === fconv[2] ? 12 : -6 /*<>*/ ; } function buffer_create(init_size){ /*<>*/ return [0, @@ -14978,9 +14974,9 @@ (null, s, 0, buf[2], buf[1], str_len); /*<>*/ buf[1] = buf[1] + str_len | 0; /*<>*/ } - function buffer_contents(_a2_, _a3_){ + function buffer_contents(buf){ /*<>*/ return Stdlib_Bytes[8].call - (null, _a3_, 0, _a2_) /*<>*/ ; + (null, buf[2], 0, buf[1]) /*<>*/ ; } function char_of_iconv(iconv){ /*<>*/ switch(iconv){ @@ -15732,8 +15728,7 @@ } /*<>*/ } /*<>*/ fmtiter(fmt, 0); - /*<>*/ return buffer_contents - (buf[1], buf[2]) /*<>*/ ; + /*<>*/ return buffer_contents(buf) /*<>*/ ; } function symm(param){ /*<>*/ if(typeof param === "number") @@ -17647,8 +17642,7 @@ (buf, /*<>*/ Stdlib_Int[12].call(null, prec$0)); /*<>*/ buffer_add_char(buf, symb); - /*<>*/ return buffer_contents - (buf[1], buf[2]) /*<>*/ ; + /*<>*/ return buffer_contents(buf) /*<>*/ ; } function transform_int_alt(iconv, s){ /*<>*/ if(13 > iconv) @@ -17936,8 +17930,7 @@ function string_of_fmtty(fmtty){ var buf = /*<>*/ buffer_create(16); /*<>*/ bprint_fmtty(buf, fmtty); - /*<>*/ return buffer_contents - (buf[1], buf[2]) /*<>*/ ; + /*<>*/ return buffer_contents(buf) /*<>*/ ; } var _s_ = /*<>*/ [0, cst_camlinternalFormat_ml, 1558, 4]; function make_printf$0(counter, k$2, acc$4, fmt$2){ @@ -18221,7 +18214,7 @@ /*<>*/ /*<>*/ convert_float (fconv, /*<>*/ default_float_precision - (fconv[2]), + (fconv), x); /*<>*/ return make_printf (k, [4, acc, str], rest$7) /*<>*/ ; @@ -18257,7 +18250,7 @@ /*<>*/ /*<>*/ convert_float (fconv, /*<>*/ default_float_precision - (fconv[2]), + (fconv), x), str$0 = /*<>*/ fix_padding @@ -18299,7 +18292,7 @@ /*<>*/ /*<>*/ convert_float (fconv, /*<>*/ default_float_precision - (fconv[2]), + (fconv), x), str$0 = /*<>*/ fix_padding @@ -19059,27 +19052,27 @@ } break; case 6: - var f = /*<>*/ acc[2], p$1 = acc[1]; - /*<>*/ output_acc(o, p$1); + var f = /*<>*/ acc[2], p$3 = acc[1]; + /*<>*/ output_acc(o, p$3); /*<>*/ return caml_call1(f, o) /*<>*/ ; case 7: - var p$2 = /*<>*/ acc[1]; - /*<>*/ output_acc(o, p$2); + var p$4 = /*<>*/ acc[1]; + /*<>*/ output_acc(o, p$4); /*<>*/ return Stdlib[63].call(null, o) /*<>*/ ; case 8: - var msg = /*<>*/ acc[2], p$3 = acc[1]; - /*<>*/ output_acc(o, p$3); + var msg = /*<>*/ acc[2], p$5 = acc[1]; + /*<>*/ output_acc(o, p$5); /*<>*/ return Stdlib[1].call (null, msg) /*<>*/ ; case 2: case 4: - var p$4 = /*<>*/ acc[1], s$0 = acc[2]; - /*<>*/ output_acc(o, p$4); + var s$0 = /*<>*/ acc[2], p$1 = acc[1]; + /*<>*/ output_acc(o, p$1); /*<>*/ return Stdlib[66].call (null, o, s$0) /*<>*/ ; default: - var p$5 = /*<>*/ acc[1], c = acc[2]; - /*<>*/ output_acc(o, p$5); + var c = /*<>*/ acc[2], p$2 = acc[1]; + /*<>*/ output_acc(o, p$2); /*<>*/ return Stdlib[65].call (null, o, c) /*<>*/ ; } @@ -19121,27 +19114,27 @@ } break; case 6: - var f = /*<>*/ acc[2], p$1 = acc[1]; - /*<>*/ bufput_acc(b, p$1); + var f = /*<>*/ acc[2], p$3 = acc[1]; + /*<>*/ bufput_acc(b, p$3); /*<>*/ return caml_call1(f, b) /*<>*/ ; case 7: var acc$2 = /*<>*/ acc[1]; /*<>*/ acc = acc$2; break; case 8: - var msg = /*<>*/ acc[2], p$2 = acc[1]; - /*<>*/ bufput_acc(b, p$2); + var msg = /*<>*/ acc[2], p$4 = acc[1]; + /*<>*/ bufput_acc(b, p$4); /*<>*/ return Stdlib[1].call (null, msg) /*<>*/ ; case 2: case 4: - var p$3 = /*<>*/ acc[1], s$0 = acc[2]; - /*<>*/ bufput_acc(b, p$3); + var s$0 = /*<>*/ acc[2], p$1 = acc[1]; + /*<>*/ bufput_acc(b, p$1); /*<>*/ return Stdlib_Buffer[16].call (null, b, s$0) /*<>*/ ; default: - var p$4 = /*<>*/ acc[1], c = acc[2]; - /*<>*/ bufput_acc(b, p$4); + var c = /*<>*/ acc[2], p$2 = acc[1]; + /*<>*/ bufput_acc(b, p$2); /*<>*/ return Stdlib_Buffer[12].call (null, b, c) /*<>*/ ; } @@ -19183,8 +19176,8 @@ } break; case 6: - var f = /*<>*/ acc[2], p$1 = acc[1]; - /*<>*/ strput_acc(b, p$1); + var f = /*<>*/ acc[2], p$3 = acc[1]; + /*<>*/ strput_acc(b, p$3); var _aJ_ = /*<>*/ caml_call1(f, 0); /*<>*/ return Stdlib_Buffer[16].call (null, b, _aJ_) /*<>*/ ; @@ -19193,19 +19186,19 @@ /*<>*/ acc = acc$2; break; case 8: - var msg = /*<>*/ acc[2], p$2 = acc[1]; - /*<>*/ strput_acc(b, p$2); + var msg = /*<>*/ acc[2], p$4 = acc[1]; + /*<>*/ strput_acc(b, p$4); /*<>*/ return Stdlib[1].call (null, msg) /*<>*/ ; case 2: case 4: - var p$3 = /*<>*/ acc[1], s$0 = acc[2]; - /*<>*/ strput_acc(b, p$3); + var s$0 = /*<>*/ acc[2], p$1 = acc[1]; + /*<>*/ strput_acc(b, p$1); /*<>*/ return Stdlib_Buffer[16].call (null, b, s$0) /*<>*/ ; default: - var p$4 = /*<>*/ acc[1], c = acc[2]; - /*<>*/ strput_acc(b, p$4); + var c = /*<>*/ acc[2], p$2 = acc[1]; + /*<>*/ strput_acc(b, p$2); /*<>*/ return Stdlib_Buffer[12].call (null, b, c) /*<>*/ ; } @@ -21608,7 +21601,8 @@ Stdlib_Buffer = global_data.Stdlib__Buffer, CamlinternalFormat = global_data.CamlinternalFormat, Stdlib = global_data.Stdlib; - function kfprintf$0(fmt, k, o){ + function kfprintf(k, o, param){ + var fmt = /*<>*/ param[1]; /*<>*/ return CamlinternalFormat[7].call (null, function(acc){ @@ -21619,10 +21613,8 @@ 0, fmt) /*<>*/ ; } - function kfprintf(_g_, _h_, _i_){ - /*<>*/ return kfprintf$0(_i_[1], _g_, _h_) /*<>*/ ; - } - function kbprintf$0(fmt, k, b){ + function kbprintf(k, b, param){ + var fmt = /*<>*/ param[1]; /*<>*/ return CamlinternalFormat[7].call (null, function(acc){ @@ -21633,42 +21625,35 @@ 0, fmt) /*<>*/ ; } - function kbprintf(_e_, _f_, _g_){ - /*<>*/ return kbprintf$0(_g_[1], _e_, _f_) /*<>*/ ; - } - function ikfprintf$0(fmt, k, oc){ + function ikfprintf(k, oc, param){ + var fmt = /*<>*/ param[1]; /*<>*/ return CamlinternalFormat[8].call (null, k, oc, fmt) /*<>*/ ; } - function ikfprintf(_c_, _d_, _e_){ - /*<>*/ return ikfprintf$0(_e_[1], _c_, _d_) /*<>*/ ; - } - function fprintf$0(_c_, oc){ - /*<>*/ return kfprintf$0 - (_c_, function(_c_){ /*<>*/ return 0;}, oc) /*<>*/ ; - } - function fprintf(_b_, _c_){ - /*<>*/ return fprintf$0(_c_[1], _b_) /*<>*/ ; + function fprintf(oc, fmt){ + /*<>*/ return kfprintf + (function(_a_){ /*<>*/ return 0;}, oc, fmt) /*<>*/ ; } function bprintf(b, fmt){ - /*<>*/ return kbprintf$0 - (fmt[1], function(_b_){ /*<>*/ return 0;}, b) /*<>*/ ; + /*<>*/ return kbprintf + (function(_a_){ /*<>*/ return 0;}, b, fmt) /*<>*/ ; } function ifprintf(oc, fmt){ - /*<>*/ return ikfprintf$0 - (fmt[1], function(_b_){ /*<>*/ return 0;}, oc) /*<>*/ ; + /*<>*/ return ikfprintf + (function(_a_){ /*<>*/ return 0;}, oc, fmt) /*<>*/ ; } function ibprintf(b, fmt){ - /*<>*/ return ikfprintf$0 - (fmt[1], function(_b_){ /*<>*/ return 0;}, b) /*<>*/ ; + /*<>*/ return ikfprintf + (function(_a_){ /*<>*/ return 0;}, b, fmt) /*<>*/ ; } function printf(fmt){ - /*<>*/ return fprintf$0(fmt[1], Stdlib[39]) /*<>*/ ; + /*<>*/ return fprintf(Stdlib[39], fmt) /*<>*/ ; } function eprintf(fmt){ - /*<>*/ return fprintf$0(fmt[1], Stdlib[40]) /*<>*/ ; + /*<>*/ return fprintf(Stdlib[40], fmt) /*<>*/ ; } - function ksprintf$0(fmt, k){ + function ksprintf(k, param){ + var fmt = /*<>*/ param[1]; function k$0(acc){ var buf = /*<>*/ Stdlib_Buffer[1].call(null, 64); /*<>*/ CamlinternalFormat[11].call(null, buf, acc); @@ -21678,15 +21663,12 @@ /*<>*/ return CamlinternalFormat[7].call (null, k$0, 0, fmt) /*<>*/ ; } - function ksprintf(_a_, _b_){ - /*<>*/ return ksprintf$0(_b_[1], _a_) /*<>*/ ; - } function sprintf(fmt){ - /*<>*/ return ksprintf$0 - (fmt[1], - function(s){ + /*<>*/ return ksprintf + (function(s){ /*<>*/ return s; - /*<>*/ }) /*<>*/ ; + /*<>*/ }, + fmt) /*<>*/ ; } /*<>*/ runtime.caml_register_global (3, @@ -25335,7 +25317,7 @@ //# unitInfo: Provides: Stdlib__Hashtbl //# unitInfo: Requires: Stdlib, Stdlib__Array, Stdlib__Atomic, Stdlib__Domain, Stdlib__Int, Stdlib__Random, Stdlib__Seq, Stdlib__String, Stdlib__Sys -//# shape: Stdlib__Hashtbl:[F(2),F(1),F(1),F(1),F(3),F(2),F(2),F(2),F(2),F(2),F(3),F(2),F(2),F(3),F(1)*,F(1),F(1)*,F(2),F(1),F(1)*,F(1)*->F(1),F(1)*->F(1),F(2),F(2),F(1),F(1)*,F(1)*,F(1)*,F(2)*,F(3)*,F(4)*] +//# shape: Stdlib__Hashtbl:[F(2),F(1),F(1),F(1),F(3),F(2),F(2),F(2),F(2),F(2),F(3),F(2),F(2),F(3),F(1)*,F(1),F(1)*,F(2),F(1),F(1)*->F(1),F(1)*->F(1),F(1)*->F(1),F(2),F(2),F(1),F(1)*,F(1)*,F(1)*,F(2)*,F(3)*,F(4)*] (function (globalThis){ "use strict"; @@ -25377,9 +25359,9 @@ var Stdlib_String = global_data.Stdlib__String; function ongoing_traversal(h){ var - _E_ = /*<>*/ h.length - 1 < 4 ? 1 : 0, - _F_ = _E_ || (h[4] < 0 ? 1 : 0); - return _F_; + _C_ = /*<>*/ h.length - 1 < 4 ? 1 : 0, + _D_ = _C_ || (h[4] < 0 ? 1 : 0); + return _D_; /*<>*/ } function flip_ongoing_traversal(h){ /*<>*/ h[4] = - h[4] | 0; @@ -25440,24 +25422,24 @@ s = /*<>*/ power_2_above(16, initial_size); /*<>*/ if(random) var - _E_ = + _C_ = /*<>*/ caml_call1(Stdlib_Domain[11][2], prng_key), seed = /*<>*/ /*<>*/ caml_call1 - (Stdlib_Random[19][4], _E_); + (Stdlib_Random[19][4], _C_); else var seed = /*<>*/ 0; /*<>*/ return [0, 0, caml_array_make(s, 0), seed, s] /*<>*/ ; /*<>*/ } function clear(h){ - var _E_ = /*<>*/ 0 < h[1] ? 1 : 0; - return _E_ + var _C_ = /*<>*/ 0 < h[1] ? 1 : 0; + return _C_ ? (h [1] = 0, /*<>*/ Stdlib_Array[8].call (null, h[2], 0, h[2].length - 1, 0)) - : _E_ /*<>*/ ; + : _C_ /*<>*/ ; } function reset(h){ var len = /*<>*/ h[2].length - 1; @@ -25496,10 +25478,10 @@ /*<>*/ } function copy(h){ var - _C_ = /*<>*/ h[4], - _D_ = h[3], - _E_ = Stdlib_Array[16].call(null, copy_bucketlist, h[2]); - /*<>*/ return [0, h[1], _E_, _D_, _C_]; + _A_ = /*<>*/ h[4], + _B_ = h[3], + _C_ = Stdlib_Array[16].call(null, copy_bucketlist, h[2]); + /*<>*/ return [0, h[1], _C_, _B_, _A_]; /*<>*/ } function length(h){ /*<>*/ return h[1]; @@ -25508,8 +25490,8 @@ var nsize = /*<>*/ ndata.length - 1, ndata_tail = /*<>*/ caml_array_make(nsize, 0), - _y_ = /*<>*/ odata.length - 2 | 0; - if(_y_ >= 0){ + _w_ = /*<>*/ odata.length - 2 | 0; + if(_w_ >= 0){ var i$0 = 0; a: for(;;){ @@ -25519,9 +25501,9 @@ cell = /*<>*/ cell$1; for(;;){ /*<>*/ if(! cell){ - var _C_ = /*<>*/ i$0 + 1 | 0; - if(_y_ === i$0) break a; - i$0 = _C_; + var _A_ = /*<>*/ i$0 + 1 | 0; + if(_w_ === i$0) break a; + i$0 = _A_; break; } var @@ -25544,8 +25526,8 @@ } } /*<>*/ if(inplace){ - var _z_ = /*<>*/ nsize - 1 | 0; - if(_z_ >= 0){ + var _x_ = /*<>*/ nsize - 1 | 0; + if(_x_ >= 0){ var i = 0; for(;;){ var @@ -25553,24 +25535,24 @@ /*<>*/ caml_check_bound(ndata_tail, i)[i + 1]; /*<>*/ if(match$0) /*<>*/ match$0[3] = 0; - var _B_ = /*<>*/ i + 1 | 0; - if(_z_ === i) break; - i = _B_; + var _z_ = /*<>*/ i + 1 | 0; + if(_x_ === i) break; + i = _z_; } } - var _A_ = /*<>*/ 0; + var _y_ = /*<>*/ 0; } else - var _A_ = /*<>*/ inplace; - return _A_; + var _y_ = /*<>*/ inplace; + return _y_; /*<>*/ } function resize(indexfun, h){ var odata = /*<>*/ h[2], osize = /*<>*/ odata.length - 1, nsize = /*<>*/ osize * 2 | 0, - _y_ = /*<>*/ nsize < Stdlib_Sys[14] ? 1 : 0; - if(! _y_) return _y_; + _w_ = /*<>*/ nsize < Stdlib_Sys[14] ? 1 : 0; + if(! _w_) return _w_; var ndata = /*<>*/ caml_array_make(nsize, 0), inplace = /*<>*/ 1 - ongoing_traversal(h); @@ -25586,8 +25568,8 @@ /*<>*/ if(1 - old_trav) /*<>*/ flip_ongoing_traversal(h); /*<>*/ try{ - var d = h[2], _v_ = /*<>*/ d.length - 2 | 0; - if(_v_ >= 0){ + var d = h[2], _t_ = /*<>*/ d.length - 2 | 0; + if(_t_ >= 0){ var i = 0; a: for(;;){ @@ -25598,9 +25580,9 @@ [i + 1]; /*<>*/ for(;;){ /*<>*/ if(! param){ - var _y_ = /*<>*/ i + 1 | 0; - if(_v_ === i) break a; - i = _y_; + var _w_ = /*<>*/ i + 1 | 0; + if(_t_ === i) break a; + i = _w_; break; } var @@ -25613,9 +25595,9 @@ } } var - _w_ = /*<>*/ 1 - old_trav, - _x_ = _w_ ? /*<>*/ flip_ongoing_traversal(h) : _w_; - return _x_; + _u_ = /*<>*/ 1 - old_trav, + _v_ = _u_ ? /*<>*/ flip_ongoing_traversal(h) : _u_; + return _v_; } catch(exn$0){ var exn = /*<>*/ caml_wrap_exception(exn$0); @@ -25632,8 +25614,8 @@ /*<>*/ if(1 - old_trav) /*<>*/ flip_ongoing_traversal(h); /*<>*/ try{ - var _s_ = d.length - 2 | 0; - if(_s_ >= 0){ + var _q_ = d.length - 2 | 0; + if(_q_ >= 0){ var i = 0; a: for(;;){ @@ -25647,9 +25629,9 @@ /*<>*/ prec[3] = 0; else /*<>*/ caml_check_bound(h[2], i)[i + 1] = 0; - var _v_ = /*<>*/ i + 1 | 0; - if(_s_ === i) break a; - i = _v_; + var _t_ = /*<>*/ i + 1 | 0; + if(_q_ === i) break a; + i = _t_; break; } var @@ -25675,9 +25657,9 @@ } } var - _t_ = /*<>*/ 1 - old_trav, - _u_ = _t_ ? /*<>*/ flip_ongoing_traversal(h) : _t_; - return _u_; + _r_ = /*<>*/ 1 - old_trav, + _s_ = _r_ ? /*<>*/ flip_ongoing_traversal(h) : _r_; + return _s_; } catch(exn$0){ var exn = /*<>*/ caml_wrap_exception(exn$0); @@ -25692,8 +25674,8 @@ /*<>*/ if(1 - old_trav) /*<>*/ flip_ongoing_traversal(h); /*<>*/ try{ - var d = h[2], _r_ = /*<>*/ d.length - 2 | 0; - if(_r_ < 0) + var d = h[2], _p_ = /*<>*/ d.length - 2 | 0; + if(_p_ < 0) var accu$2 = init; else{ var accu$1 = init, i = 0; @@ -25705,8 +25687,8 @@ accu = accu$1; for(;;){ /*<>*/ if(! b){ - var _s_ = /*<>*/ i + 1 | 0; - if(_r_ !== i){accu$1 = accu; i = _s_; break;} + var _q_ = /*<>*/ i + 1 | 0; + if(_p_ !== i){accu$1 = accu; i = _q_; break;} var accu$2 = accu; break a; } @@ -25749,8 +25731,8 @@ /*<>*/ Stdlib_Array[20].call (null, function(m, b){ - var _r_ = /*<>*/ bucket_length(0, b); - /*<>*/ return Stdlib_Int[11].call(null, m, _r_); + var _p_ = /*<>*/ bucket_length(0, b); + /*<>*/ return Stdlib_Int[11].call(null, m, _p_); }, 0, h[2]), @@ -25766,7 +25748,8 @@ h[2]); /*<>*/ return [0, h[1], h[2].length - 1, mbl, histo]; /*<>*/ } - function to_seq$0(tbl_data){ + function to_seq(tbl){ + var tbl_data = /*<>*/ tbl[2]; function aux(i$1, buck$1, param){ var i = /*<>*/ i$1, buck = buck$1; for(;;){ @@ -25786,41 +25769,35 @@ next = buck[3]; /*<>*/ return [0, [0, key, data], - function(_r_){ - /*<>*/ return aux(i, next, _r_); + function(_p_){ + /*<>*/ return aux(i, next, _p_); }] /*<>*/ ; /*<>*/ } - /*<>*/ return function(_r_){ - /*<>*/ return aux(0, 0, _r_);} /*<>*/ ; + /*<>*/ return function(_p_){ + /*<>*/ return aux(0, 0, _p_);} /*<>*/ ; /*<>*/ } - function to_seq(_r_){ - /*<>*/ return to_seq$0(_r_[2]) /*<>*/ ; - } function to_seq_keys(m){ - var _o_ = /*<>*/ to_seq$0(m[2]); - function _p_(_r_){ /*<>*/ return _r_[1];} - var _q_ = /*<>*/ Stdlib_Seq[30]; - return function(_r_){ - /*<>*/ return _q_(_p_, _o_, _r_);} /*<>*/ ; + var _m_ = /*<>*/ to_seq(m); + function _n_(_p_){ /*<>*/ return _p_[1];} + var _o_ = /*<>*/ Stdlib_Seq[30]; + return function(_p_){ + /*<>*/ return _o_(_n_, _m_, _p_);} /*<>*/ ; } function to_seq_values(m){ - var _l_ = /*<>*/ to_seq$0(m[2]); - function _m_(_o_){ /*<>*/ return _o_[2];} - var _n_ = /*<>*/ Stdlib_Seq[30]; - return function(_o_){ - /*<>*/ return _n_(_m_, _l_, _o_);} /*<>*/ ; + var _j_ = /*<>*/ to_seq(m); + function _k_(_m_){ /*<>*/ return _m_[2];} + var _l_ = /*<>*/ Stdlib_Seq[30]; + return function(_m_){ + /*<>*/ return _l_(_k_, _j_, _m_);} /*<>*/ ; } function MakeSeeded(H){ - function key_index$0(_k_, _l_, key){ - /*<>*/ return caml_call2(H[2], _l_, key) - & (_k_.length - 2 | 0) /*<>*/ ; + function key_index(h, key){ + var _j_ = /*<>*/ h[2].length - 2 | 0; + return caml_call2(H[2], h[3], key) & _j_ /*<>*/ ; /*<>*/ } - function key_index(_j_, _k_){ - /*<>*/ return key_index$0(_j_[2], _j_[3], _k_) /*<>*/ ; - } function add(h, key, data){ var - i = /*<>*/ key_index$0(h[2], h[3], key), + i = /*<>*/ key_index(h, key), bucket = /*<>*/ [0, key, @@ -25833,7 +25810,7 @@ } function remove(h, key){ var - i = /*<>*/ key_index$0(h[2], h[3], key), + i = /*<>*/ key_index(h, key), prec$1 = /*<>*/ caml_check_bound(h[2], i)[i + 1], prec$0 = /*<>*/ 0, prec = prec$1; @@ -25857,7 +25834,7 @@ /*<>*/ } function find(h, key){ var - _j_ = /*<>*/ key_index$0(h[2], h[3], key), + _j_ = /*<>*/ key_index(h, key), match = /*<>*/ caml_check_bound(h[2], _j_)[_j_ + 1]; /*<>*/ if(! match) /*<>*/ throw caml_maybe_attach_backtrace @@ -25902,7 +25879,7 @@ /*<>*/ } function find_opt(h, key){ var - _j_ = /*<>*/ key_index$0(h[2], h[3], key), + _j_ = /*<>*/ key_index(h, key), match = /*<>*/ caml_check_bound(h[2], _j_)[_j_ + 1]; /*<>*/ if(! match) /*<>*/ return 0; @@ -25943,7 +25920,7 @@ /*<>*/ } function find_all(h, key){ var - _j_ = /*<>*/ key_index$0(h[2], h[3], key), + _j_ = /*<>*/ key_index(h, key), param = /*<>*/ /*<>*/ caml_check_bound (h[2], _j_) @@ -25985,7 +25962,7 @@ /*<>*/ } function replace(h, key, data){ var - i = /*<>*/ key_index$0(h[2], h[3], key), + i = /*<>*/ key_index(h, key), l = /*<>*/ caml_check_bound(h[2], i)[i + 1], param = /*<>*/ l; for(;;){ @@ -26017,7 +25994,7 @@ /*<>*/ } function mem(h, key){ var - _h_ = /*<>*/ key_index$0(h[2], h[3], key), + _h_ = /*<>*/ key_index(h, key), param = /*<>*/ /*<>*/ caml_check_bound (h[2], _h_) @@ -26576,8 +26553,8 @@ /*<>*/ } function Make(H){ var emptybucket = /*<>*/ create(0); - function get_index(_u_, h){ - /*<>*/ return caml_mod(h & Stdlib[19], _u_.length - 1) /*<>*/ ; + function get_index(t, h){ + /*<>*/ return caml_mod(h & Stdlib[19], t[1].length - 1) /*<>*/ ; } var limit = /*<>*/ 7; function create$0(sz){ @@ -26685,18 +26662,15 @@ accu = accu$0; } /*<>*/ } - function count$0(_s_){ + function count(t){ /*<>*/ return Stdlib_Array[22].call (null, function(_s_, _t_){ /*<>*/ return count_bucket(0, _s_, _t_); }, - _s_, + t[1], 0) /*<>*/ ; } - function count(_s_){ - /*<>*/ return count$0(_s_[1]) /*<>*/ ; - } function add_aux(t, setter, d, h, index){ var bucket$0 = @@ -26822,7 +26796,7 @@ setter, 0, h, - /*<>*/ get_index(newt[1], h)) /*<>*/ ; + /*<>*/ get_index(newt, h)) /*<>*/ ; }; /*<>*/ iter_weak(add_weak, t); /*<>*/ t[1] = newt[1]; @@ -26839,12 +26813,12 @@ function add(t, d){ var h = /*<>*/ caml_call1(H[2], d); /*<>*/ return /*<>*/ add_aux - (t, set, [0, d], h, /*<>*/ get_index(t[1], h)) /*<>*/ ; + (t, set, [0, d], h, /*<>*/ get_index(t, h)) /*<>*/ ; } function find_aux(t, d, k_found, k_notfound){ var h = /*<>*/ caml_call1(H[2], d), - index = /*<>*/ get_index(t[1], h), + index = /*<>*/ get_index(t, h), bucket = /*<>*/ caml_check_bound(t[1], index)[index + 1], hashes = @@ -26942,7 +26916,7 @@ function find_all(t, d){ var h = /*<>*/ caml_call1(H[2], d), - index = /*<>*/ get_index(t[1], h), + index = /*<>*/ get_index(t, h), bucket = /*<>*/ caml_check_bound(t[1], index)[index + 1], hashes = @@ -26984,13 +26958,7 @@ _c_ = /*<>*/ caml_check_bound(lens, _a_)[_a_ + 1], _d_ = /*<>*/ caml_check_bound(lens, _b_)[_b_ + 1], _e_ = /*<>*/ caml_check_bound(lens, 0)[1]; - /*<>*/ return [0, - len, - count$0(t[1]), - totlen, - _e_, - _d_, - _c_] /*<>*/ ; + /*<>*/ return [0, len, count(t), totlen, _e_, _d_, _c_] /*<>*/ ; /*<>*/ } /*<>*/ return [0, create$0, @@ -27069,35 +27037,33 @@ /*<>*/ return Stdlib_Queue[3].call (null, token, state[29]) /*<>*/ ; } - function pp_output_string(_ar_, s){ + function pp_output_string(state, s){ /*<>*/ return caml_call3 - (_ar_, s, 0, caml_ml_string_length(s)) /*<>*/ ; + (state[17], s, 0, caml_ml_string_length(s)) /*<>*/ ; } - function pp_string_width(_ar_, s){ + function pp_string_width(state, s){ /*<>*/ return caml_call3 - (_ar_, s, 0, caml_ml_string_length(s)) /*<>*/ ; + (state[18], s, 0, caml_ml_string_length(s)) /*<>*/ ; } - function pp_output_newline(_ar_){ - /*<>*/ return caml_call1(_ar_, 0) /*<>*/ ; + function pp_output_newline(state){ + /*<>*/ return caml_call1(state[20], 0) /*<>*/ ; } function format_pp_text(state, size, text){ /*<>*/ state[9] = state[9] - size | 0; - /*<>*/ pp_output_string(state[17], text); + /*<>*/ pp_output_string(state, text); /*<>*/ state[11] = 0; /*<>*/ } var cst = /*<>*/ ""; function format_string(state, s){ - var _ar_ = /*<>*/ s !== cst ? 1 : 0; - /*<>*/ return _ar_ + var _al_ = /*<>*/ s !== cst ? 1 : 0; + /*<>*/ return _al_ ? /*<>*/ format_pp_text - (state, - /*<>*/ pp_string_width(state[18], s), - s) - : _ar_ /*<>*/ ; + (state, /*<>*/ pp_string_width(state, s), s) + : _al_ /*<>*/ ; } function break_new_line(before, offset, after, state, width){ /*<>*/ format_string(state, before); - /*<>*/ pp_output_newline(state[20]); + /*<>*/ pp_output_newline(state); /*<>*/ state[11] = 1; var indent = /*<>*/ (state[6] - width | 0) + offset | 0, @@ -27154,16 +27120,16 @@ match$4 = /*<>*/ Stdlib_Stack[8].call(null, state[2]); /*<>*/ if(! match$4) - /*<>*/ return pp_output_newline(state[20]) /*<>*/ ; + /*<>*/ return pp_output_newline(state) /*<>*/ ; var width$0 = /*<>*/ match$4[1][2]; /*<>*/ return break_line(state, width$0) /*<>*/ ; case 4: var - _ap_ = + _aj_ = /*<>*/ state[10] !== (state[6] - state[9] | 0) ? 1 : 0; - if(! _ap_) return _ap_; + if(! _aj_) return _aj_; var match$1 = /*<>*/ Stdlib_Queue[6].call(null, state[29]); @@ -27185,7 +27151,7 @@ var tag_name = /*<>*/ match$5[1], marker = /*<>*/ caml_call1(state[26], tag_name); - /*<>*/ return pp_output_string(state[17], marker) /*<>*/ ; + /*<>*/ return pp_output_string(state, marker) /*<>*/ ; } /*<>*/ switch(param[0]){ case 0: @@ -27216,8 +27182,8 @@ box_type$0 = match$7[1]; /*<>*/ switch(box_type$0){ case 3: - var _aq_ = /*<>*/ state[9]; - return _aq_ < (size$0 + pp_string_width(state[18], before) | 0) + var _ak_ = /*<>*/ state[9]; + return _ak_ < (size$0 + pp_string_width(state, before) | 0) ? /*<>*/ break_new_line (breaks[1], breaks[2], breaks[3], state, width$1) : /*<>*/ break_same_line @@ -27226,8 +27192,8 @@ /*<>*/ if(state[11]) /*<>*/ return break_same_line (fits[1], fits[2], fits[3], state) /*<>*/ ; - var _ar_ = /*<>*/ state[9]; - return _ar_ < (size$0 + pp_string_width(state[18], before) | 0) + var _al_ = /*<>*/ state[9]; + return _al_ < (size$0 + pp_string_width(state, before) | 0) ? /*<>*/ break_new_line (breaks[1], breaks[2], breaks[3], state, width$1) : ((state @@ -27293,7 +27259,7 @@ /*<>*/ break_line(state, width); } else - /*<>*/ pp_output_newline(state[20]); + /*<>*/ pp_output_newline(state); } var width$2 = /*<>*/ state[9] - off$1 | 0, @@ -27309,7 +27275,7 @@ var tag_name$0 = /*<>*/ param[1], marker$0 = /*<>*/ caml_call1(state[25], tag_name$0); - /*<>*/ pp_output_string(state[17], marker$0); + /*<>*/ pp_output_string(state, marker$0); /*<>*/ return Stdlib_Stack[3].call (null, tag_name$0, state[5]) /*<>*/ ; } @@ -27326,10 +27292,10 @@ length = match$0[3], token = match$0[2], pending_count = /*<>*/ state[13] - state[12] | 0, - _ap_ = /*<>*/ 0 <= size ? 1 : 0, - _ao_ = - /*<>*/ _ap_ || (state[9] <= pending_count ? 1 : 0); - if(! _ao_) return _ao_; + _aj_ = /*<>*/ 0 <= size ? 1 : 0, + _ai_ = + /*<>*/ _aj_ || (state[9] <= pending_count ? 1 : 0); + if(! _ai_) return _ai_; /*<>*/ if(! Stdlib_Queue[6].call(null, state[29])) /*<>*/ return Stdlib[1].call (null, "Format: Unsynchronized access to formatter") /*<>*/ ; @@ -27397,55 +27363,55 @@ elem = /*<>*/ [0, size$0, [4, indent, br_ty], 0]; /*<>*/ return scan_push(state, 0, elem) /*<>*/ ; } - var _ao_ = /*<>*/ state[14] === state[15] ? 1 : 0; - if(! _ao_) return _ao_; + var _ai_ = /*<>*/ state[14] === state[15] ? 1 : 0; + if(! _ai_) return _ai_; var s = /*<>*/ state[16], - size = /*<>*/ pp_string_width(state[18], s); + size = /*<>*/ pp_string_width(state, s); /*<>*/ return enqueue_string_as(state, size, s) /*<>*/ ; } var zero = /*<>*/ 0; function pp_close_box(state, param){ - var _an_ = /*<>*/ 1 < state[14] ? 1 : 0; - if(_an_){ + var _ah_ = /*<>*/ 1 < state[14] ? 1 : 0; + if(_ah_){ /*<>*/ if(state[14] < state[15]){ /*<>*/ pp_enqueue(state, [0, zero, 1, 0]); /*<>*/ set_size(state, 1); /*<>*/ set_size(state, 0); } /*<>*/ state[14] = state[14] - 1 | 0; - var _ao_ = 0; + var _ai_ = 0; } else - var _ao_ = /*<>*/ _an_; - return _ao_; + var _ai_ = /*<>*/ _ah_; + return _ai_; /*<>*/ } function pp_open_stag(state, tag_name){ /*<>*/ if(state[23]){ /*<>*/ Stdlib_Stack[3].call(null, tag_name, state[4]); /*<>*/ caml_call1(state[27], tag_name); } - var _an_ = /*<>*/ state[24]; - if(! _an_) return _an_; + var _ah_ = /*<>*/ state[24]; + if(! _ah_) return _ah_; var token = /*<>*/ [6, tag_name]; /*<>*/ return pp_enqueue(state, [0, zero, token, 0]) /*<>*/ ; } function pp_close_stag(state, param){ /*<>*/ if(state[24]) /*<>*/ pp_enqueue(state, [0, zero, 5, 0]); - var _am_ = /*<>*/ state[23]; - if(_am_){ + var _ag_ = /*<>*/ state[23]; + if(_ag_){ var match = /*<>*/ Stdlib_Stack[5].call(null, state[4]); /*<>*/ if(match){ var tag_name = match[1]; /*<>*/ return caml_call1(state[28], tag_name) /*<>*/ ; } - var _an_ = /*<>*/ 0; + var _ah_ = /*<>*/ 0; } else - var _an_ = /*<>*/ _am_; - return _an_; + var _ah_ = /*<>*/ _ag_; + return _ah_; /*<>*/ } function pp_set_print_tags(state, b){ /*<>*/ state[23] = b; @@ -27455,34 +27421,35 @@ /*<>*/ state[24] = b; return 0; /*<>*/ } - function pp_get_print_tags(_am_, param){ - /*<>*/ return _am_[23]; + function pp_get_print_tags(state, param){ + /*<>*/ return state[23]; /*<>*/ } - function pp_get_mark_tags(_am_, param){ - /*<>*/ return _am_[24]; + function pp_get_mark_tags(state, param){ + /*<>*/ return state[24]; /*<>*/ } function pp_set_tags(state, b){ /*<>*/ pp_set_print_tags(state, b); /*<>*/ return pp_set_mark_tags(state, b) /*<>*/ ; } - function pp_get_formatter_stag_function(_am_, param){ + function pp_get_formatter_stag_function(state, param){ /*<>*/ return [0, - _am_[25], - _am_[26], - _am_[27], - _am_[28]]; + state[25], + state[26], + state[27], + state[28]]; /*<>*/ } - function pp_set_formatter_stag_function$0(mot, mct, pot, pct, state){ + function pp_set_formatter_stag_function(state, param){ + var + pct = /*<>*/ param[4], + pot = param[3], + mct = param[2], + mot = param[1]; /*<>*/ state[25] = mot; /*<>*/ state[26] = mct; /*<>*/ state[27] = pot; /*<>*/ state[28] = pct; return 0; /*<>*/ } - function pp_set_formatter_stag_function(_am_, _al_){ - /*<>*/ return pp_set_formatter_stag_function$0 - (_al_[1], _al_[2], _al_[3], _al_[4], _am_) /*<>*/ ; - } function pp_rinit(state){ /*<>*/ state[12] = 1; /*<>*/ state[13] = 1; @@ -27509,28 +27476,28 @@ /*<>*/ state[13] = pp_infinity; /*<>*/ advance_left(state); /*<>*/ if(end_with_newline) - /*<>*/ pp_output_newline(state[20]); + /*<>*/ pp_output_newline(state); /*<>*/ return pp_rinit(state) /*<>*/ ; } /*<>*/ pp_close_box(state, 0); } /*<>*/ } function pp_print_as_size(state, size, s){ - var _al_ = /*<>*/ state[14] < state[15] ? 1 : 0; - return _al_ + var _ag_ = /*<>*/ state[14] < state[15] ? 1 : 0; + return _ag_ ? /*<>*/ enqueue_string_as(state, size, s) - : _al_ /*<>*/ ; + : _ag_ /*<>*/ ; } function pp_print_as(state, isize, s){ /*<>*/ return pp_print_as_size(state, isize, s) /*<>*/ ; } function pp_print_string(state, s){ - var isize = /*<>*/ pp_string_width(state[18], s); + var isize = /*<>*/ pp_string_width(state, s); /*<>*/ return pp_print_as_size(state, isize, s) /*<>*/ ; } function pp_print_substring_as(pos, len, state, size, source){ - var _al_ = /*<>*/ state[14] < state[15] ? 1 : 0; - if(! _al_) return _al_; + var _ag_ = /*<>*/ state[14] < state[15] ? 1 : 0; + if(! _ag_) return _ag_; var token = /*<>*/ [1, source, pos, len]; /*<>*/ return enqueue_advance (state, [0, size, token, size]) /*<>*/ ; @@ -27588,32 +27555,31 @@ /*<>*/ return caml_call1(state[19], 0) /*<>*/ ; } function pp_force_newline(state, param){ - var _al_ = /*<>*/ state[14] < state[15] ? 1 : 0; - return _al_ + var _ag_ = /*<>*/ state[14] < state[15] ? 1 : 0; + return _ag_ ? /*<>*/ enqueue_advance(state, [0, zero, 3, 0]) - : _al_ /*<>*/ ; + : _ag_ /*<>*/ ; } function pp_print_if_newline(state, param){ - var _al_ = /*<>*/ state[14] < state[15] ? 1 : 0; - return _al_ + var _ag_ = /*<>*/ state[14] < state[15] ? 1 : 0; + return _ag_ ? /*<>*/ enqueue_advance(state, [0, zero, 4, 0]) - : _al_ /*<>*/ ; + : _ag_ /*<>*/ ; } function pp_print_custom_break(state, fits, breaks){ var after = /*<>*/ fits[3], width = fits[2], before = fits[1], - _ak_ = /*<>*/ state[14] < state[15] ? 1 : 0; - if(! _ak_) return _ak_; + _af_ = /*<>*/ state[14] < state[15] ? 1 : 0; + if(! _af_) return _af_; var size = /*<>*/ - state[13] | 0, token = /*<>*/ [2, fits, breaks], - _al_ = /*<>*/ pp_string_width(state[18], after), + _ag_ = /*<>*/ pp_string_width(state, after), length = - /*<>*/ (pp_string_width(state[18], before) + width - | 0) - + _al_ + /*<>*/ (pp_string_width(state, before) + width | 0) + + _ag_ | 0; /*<>*/ return scan_push (state, 1, [0, size, token, length]) /*<>*/ ; @@ -27630,30 +27596,30 @@ } function pp_open_tbox(state, param){ /*<>*/ state[14] = state[14] + 1 | 0; - var _ak_ = /*<>*/ state[14] < state[15] ? 1 : 0; - if(! _ak_) return _ak_; + var _af_ = /*<>*/ state[14] < state[15] ? 1 : 0; + if(! _af_) return _af_; /*<>*/ return enqueue_advance (state, [0, zero, [5, [0, [0, 0]]], 0]) /*<>*/ ; } function pp_close_tbox(state, param){ - var _aj_ = /*<>*/ 1 < state[14] ? 1 : 0; - if(_aj_){ - var _ak_ = /*<>*/ state[14] < state[15] ? 1 : 0; - if(_ak_){ + var _ae_ = /*<>*/ 1 < state[14] ? 1 : 0; + if(_ae_){ + var _af_ = /*<>*/ state[14] < state[15] ? 1 : 0; + if(_af_){ /*<>*/ enqueue_advance(state, [0, zero, 2, 0]); /*<>*/ state[14] = state[14] - 1 | 0; - var _ai_ = 0; + var _ad_ = 0; } else - var _ai_ = /*<>*/ _ak_; + var _ad_ = /*<>*/ _af_; } else - var _ai_ = /*<>*/ _aj_; - return _ai_; + var _ad_ = /*<>*/ _ae_; + return _ad_; /*<>*/ } function pp_print_tbreak(state, width, offset){ - var _ai_ = /*<>*/ state[14] < state[15] ? 1 : 0; - if(! _ai_) return _ai_; + var _ad_ = /*<>*/ state[14] < state[15] ? 1 : 0; + if(! _ad_) return _ad_; var size = /*<>*/ - state[13] | 0, elem = /*<>*/ [0, size, [3, width, offset], width]; @@ -27663,62 +27629,62 @@ /*<>*/ return pp_print_tbreak(state, 0, 0) /*<>*/ ; } function pp_set_tab(state, param){ - var _ai_ = /*<>*/ state[14] < state[15] ? 1 : 0; - if(! _ai_) return _ai_; + var _ad_ = /*<>*/ state[14] < state[15] ? 1 : 0; + if(! _ad_) return _ad_; /*<>*/ return enqueue_advance(state, [0, zero, 0, 0]) /*<>*/ ; } function pp_set_max_boxes(state, n){ var - _ah_ = /*<>*/ 1 < n ? 1 : 0, - _ai_ = _ah_ ? (state[15] = n, 0) : _ah_; - return _ai_; + _ac_ = /*<>*/ 1 < n ? 1 : 0, + _ad_ = _ac_ ? (state[15] = n, 0) : _ac_; + return _ad_; /*<>*/ } - function pp_get_max_boxes(_ah_, param){ - /*<>*/ return _ah_[15]; + function pp_get_max_boxes(state, param){ + /*<>*/ return state[15]; /*<>*/ } - function pp_over_max_boxes(_ah_, param){ - /*<>*/ return _ah_[14] === _ah_[15] ? 1 : 0; + function pp_over_max_boxes(state, param){ + /*<>*/ return state[14] === state[15] ? 1 : 0; /*<>*/ } function pp_set_ellipsis_text(state, s){ /*<>*/ state[16] = s; return 0; /*<>*/ } - function pp_get_ellipsis_text(_ah_, param){ - /*<>*/ return _ah_[16]; + function pp_get_ellipsis_text(state, param){ + /*<>*/ return state[16]; /*<>*/ } function pp_limit(n){ /*<>*/ return n < 1000000010 ? n : 1000000009 /*<>*/ ; } function pp_set_max_indent(state, n$0){ - var _ah_ = /*<>*/ 1 < n$0 ? 1 : 0; - if(! _ah_) return _ah_; + var _ac_ = /*<>*/ 1 < n$0 ? 1 : 0; + if(! _ac_) return _ac_; var n$1 = /*<>*/ state[6] - n$0 | 0, - _ag_ = /*<>*/ 1 <= n$1 ? 1 : 0; - if(! _ag_) return _ag_; + _ab_ = /*<>*/ 1 <= n$1 ? 1 : 0; + if(! _ab_) return _ab_; var n = /*<>*/ pp_limit(n$1); /*<>*/ state[7] = n; /*<>*/ state[8] = state[6] - state[7] | 0; /*<>*/ return pp_rinit(state) /*<>*/ ; } - function pp_get_max_indent(_ag_, param){ - /*<>*/ return _ag_[8]; + function pp_get_max_indent(state, param){ + /*<>*/ return state[8]; /*<>*/ } function pp_set_margin(state, n){ - var _af_ = /*<>*/ 1 <= n ? 1 : 0; - if(! _af_) return _af_; + var _aa_ = /*<>*/ 1 <= n ? 1 : 0; + if(! _aa_) return _aa_; var n$0 = /*<>*/ pp_limit(n); /*<>*/ state[6] = n$0; /*<>*/ if(state[8] <= state[6]) var new_max_indent = /*<>*/ state[8]; else var - _ag_ = + _ab_ = /*<>*/ Stdlib_Int[11].call (null, state[6] - state[7] | 0, state[6] / 2 | 0), new_max_indent = /*<>*/ /*<>*/ Stdlib_Int[11].call - (null, _ag_, 1); + (null, _ab_, 1); /*<>*/ return pp_set_max_indent(state, new_max_indent) /*<>*/ ; } var @@ -27737,8 +27703,8 @@ ? 1 : 0 /*<>*/ ; } - function pp_get_margin(_af_, param){ - /*<>*/ return _af_[6]; + function pp_get_margin(state, param){ + /*<>*/ return state[6]; /*<>*/ } function pp_set_full_geometry(max_indent, margin, state){ /*<>*/ pp_set_margin(state, margin); @@ -27753,11 +27719,11 @@ (max_indent, margin, state) /*<>*/ ; var msg = /*<>*/ match[1], - _af_ = + _aa_ = /*<>*/ Stdlib[28].call (null, "Format.pp_set_geometry: ", msg); /*<>*/ throw caml_maybe_attach_backtrace - ([0, Stdlib[6], _af_], 1); + ([0, Stdlib[6], _aa_], 1); /*<>*/ } function pp_safe_set_geometry(state, max_indent, margin){ /*<>*/ return 0 @@ -27772,9 +27738,9 @@ function pp_update_geometry(state, update){ var geometry = /*<>*/ pp_get_geometry(state, 0), - _af_ = /*<>*/ caml_call1(update, geometry); + _aa_ = /*<>*/ caml_call1(update, geometry); /*<>*/ return pp_set_full_geometry - (_af_[1], _af_[2], state); + (_aa_[1], _aa_[2], state); } function pp_set_formatter_out_functions$0(f, f2, g, h, i, j, state){ /*<>*/ state[17] = f; @@ -27785,37 +27751,37 @@ /*<>*/ state[22] = j; return 0; /*<>*/ } - function pp_set_formatter_out_functions(_af_, _ae_){ + function pp_set_formatter_out_functions(_aa_, _$_){ /*<>*/ return pp_set_formatter_out_functions$0 - (_ae_[1], _ae_[2], _ae_[3], _ae_[4], _ae_[5], _ae_[6], _af_) /*<>*/ ; + (_$_[1], _$_[2], _$_[3], _$_[4], _$_[5], _$_[6], _aa_) /*<>*/ ; } - function pp_get_formatter_out_functions(_ae_, param){ + function pp_get_formatter_out_functions(state, param){ /*<>*/ return [0, - _ae_[17], - _ae_[18], - _ae_[19], - _ae_[20], - _ae_[21], - _ae_[22]]; + state[17], + state[18], + state[19], + state[20], + state[21], + state[22]]; /*<>*/ } function pp_set_formatter_output_functi(state, f, g){ /*<>*/ state[17] = f; /*<>*/ state[19] = g; return 0; /*<>*/ } - function pp_get_formatter_output_functi(_ae_, param){ - /*<>*/ return [0, _ae_[17], _ae_[19]]; + function pp_get_formatter_output_functi(state, param){ + /*<>*/ return [0, state[17], state[19]]; /*<>*/ } - function display_newline(_ae_, param){ - /*<>*/ return caml_call3(_ae_, "\n", 0, 1) /*<>*/ ; + function display_newline(state, param){ + /*<>*/ return caml_call3(state[17], "\n", 0, 1) /*<>*/ ; } var blank_line = /*<>*/ Stdlib_String[1].call(null, 80, 32); function display_blanks(state, n$1){ var n = /*<>*/ n$1; for(;;){ - var _ae_ = 0 < n ? 1 : 0; - if(! _ae_) return _ae_; + var _$_ = 0 < n ? 1 : 0; + if(! _$_) return _$_; /*<>*/ if(80 >= n) /*<>*/ return caml_call3(state[17], blank_line, 0, n) /*<>*/ ; /*<>*/ caml_call3(state[17], blank_line, 0, 80); @@ -27824,26 +27790,26 @@ } /*<>*/ } function pp_set_formatter_out_channel(state, oc){ - var _ab_ = /*<>*/ Stdlib[69]; + var _Y_ = /*<>*/ Stdlib[69]; /*<>*/ state[17] = - function(_ac_, _ad_, _ae_){ - /*<>*/ return _ab_(oc, _ac_, _ad_, _ae_); + function(_Z_, ___, _$_){ + /*<>*/ return _Y_(oc, _Z_, ___, _$_); }; /*<>*/ state[19] = function(param){ /*<>*/ return Stdlib[63].call(null, oc) /*<>*/ ; }; /*<>*/ state[20] = - function(_ab_){ - /*<>*/ return display_newline(state[17], _ab_); + function(_Y_){ + /*<>*/ return display_newline(state, _Y_); }; /*<>*/ state[21] = - function(_ab_){ - /*<>*/ return display_blanks(state, _ab_); + function(_Y_){ + /*<>*/ return display_blanks(state, _Y_); }; /*<>*/ state[22] = - function(_ab_){ - /*<>*/ return display_blanks(state, _ab_); + function(_Y_){ + /*<>*/ return display_blanks(state, _Y_); }; /*<>*/ return 0; } @@ -27853,19 +27819,19 @@ /*<>*/ return cst; var s = /*<>*/ param[2], - _ab_ = /*<>*/ Stdlib[28].call(null, s, cst$0); - /*<>*/ return Stdlib[28].call(null, "<", _ab_) /*<>*/ ; + _Y_ = /*<>*/ Stdlib[28].call(null, s, cst$0); + /*<>*/ return Stdlib[28].call(null, "<", _Y_) /*<>*/ ; } function default_pp_mark_close_tag(param){ /*<>*/ if(param[1] !== String_tag) /*<>*/ return cst; var s = /*<>*/ param[2], - _ab_ = /*<>*/ Stdlib[28].call(null, s, cst$0); - /*<>*/ return Stdlib[28].call(null, "<\/", _ab_) /*<>*/ ; + _Y_ = /*<>*/ Stdlib[28].call(null, s, cst$0); + /*<>*/ return Stdlib[28].call(null, "<\/", _Y_) /*<>*/ ; } - function default_pp_print_open_tag(_ab_){ /*<>*/ return 0;} - function default_pp_print_close_tag(_ab_){return 0;} + function default_pp_print_open_tag(_Y_){ /*<>*/ return 0;} + function default_pp_print_close_tag(_Y_){return 0;} function utf_8_scalar_width(s, current, len){ var stop = /*<>*/ current + len | 0, @@ -27884,7 +27850,8 @@ current$0 = current$1; } /*<>*/ } - function ascii_width(_ab_, param, len){ /*<>*/ return len; + function ascii_width(_Y_, param, len){ + /*<>*/ return len; /*<>*/ } var _g_ = /*<>*/ [4, 0, 3]; function pp_make_formatter(f, g, h, i, j){ @@ -27897,17 +27864,17 @@ /*<>*/ Stdlib_Stack[3].call (null, [0, 1, sys_tok], scan_stack); var - ___ = /*<>*/ Stdlib[19], - _$_ = Stdlib_Stack[2].call(null, 0), - _aa_ = /*<>*/ Stdlib_Stack[2].call(null, 0), - _ab_ = /*<>*/ Stdlib_Stack[2].call(null, 0), + _V_ = /*<>*/ Stdlib[19], + _W_ = Stdlib_Stack[2].call(null, 0), + _X_ = /*<>*/ Stdlib_Stack[2].call(null, 0), + _Y_ = /*<>*/ Stdlib_Stack[2].call(null, 0), pp_margin = /*<>*/ 78; /*<>*/ return [0, scan_stack, Stdlib_Stack[2].call(null, 0), - _ab_, - _aa_, - _$_, + _Y_, + _X_, + _W_, pp_margin, 10, 68, @@ -27917,7 +27884,7 @@ 1, 1, 1, - ___, + _V_, ".", f, utf_8_scalar_width, @@ -27943,40 +27910,40 @@ /*<>*/ pp_make_formatter (output, flush, - function(___){ /*<>*/ return 0;}, - function(___){return 0;}, - function(___){return 0;}); + function(_V_){ /*<>*/ return 0;}, + function(_V_){return 0;}, + function(_V_){return 0;}); /*<>*/ ppf[20] = - function(___){ - /*<>*/ return display_newline(ppf[17], ___); + function(_V_){ + /*<>*/ return display_newline(ppf, _V_); }; /*<>*/ ppf[21] = - function(___){ - /*<>*/ return display_blanks(ppf, ___); + function(_V_){ + /*<>*/ return display_blanks(ppf, _V_); }; /*<>*/ ppf[22] = - function(___){ - /*<>*/ return display_blanks(ppf, ___); + function(_V_){ + /*<>*/ return display_blanks(ppf, _V_); }; /*<>*/ return ppf; /*<>*/ } function formatter_of_out_channel(oc){ - var _X_ = /*<>*/ Stdlib[69]; + var _S_ = /*<>*/ Stdlib[69]; /*<>*/ return make_formatter - (function(_Y_, _Z_, ___){ - /*<>*/ return _X_(oc, _Y_, _Z_, ___); + (function(_T_, _U_, _V_){ + /*<>*/ return _S_(oc, _T_, _U_, _V_); }, function(param){ /*<>*/ return Stdlib[63].call(null, oc) /*<>*/ ; }) /*<>*/ ; } function formatter_of_buffer(b){ - var _U_ = /*<>*/ Stdlib_Buffer[18]; + var _P_ = /*<>*/ Stdlib_Buffer[18]; /*<>*/ return make_formatter - (function(_V_, _W_, _X_){ - /*<>*/ return _U_(b, _V_, _W_, _X_); + (function(_Q_, _R_, _S_){ + /*<>*/ return _P_(b, _Q_, _R_, _S_); }, - function(_U_){ /*<>*/ return 0;}) /*<>*/ ; + function(_P_){ /*<>*/ return 0;}) /*<>*/ ; } var pp_buffer_size = /*<>*/ 512; function pp_make_buffer(param){ @@ -28009,9 +27976,9 @@ (Stdlib_Domain[11][3], str_formatter_key, str_formatter); function buffered_out_string(key, str, ofs, len){ var - _U_ = /*<>*/ caml_call1(Stdlib_Domain[11][2], key); + _P_ = /*<>*/ caml_call1(Stdlib_Domain[11][2], key); /*<>*/ return Stdlib_Buffer[18].call - (null, _U_, str, ofs, len) /*<>*/ ; + (null, _P_, str, ofs, len) /*<>*/ ; } function buffered_out_flush(oc, key, param){ var @@ -28045,36 +28012,36 @@ 0, function(param){ var - _R_ = /*<>*/ Stdlib[39], + _M_ = /*<>*/ Stdlib[39], ppf = /*<>*/ pp_make_formatter - (function(_S_, _T_, _U_){ + (function(_N_, _O_, _P_){ /*<>*/ return buffered_out_string - (std_buf_key, _S_, _T_, _U_); + (std_buf_key, _N_, _O_, _P_); }, - function(_S_){ + function(_N_){ /*<>*/ return buffered_out_flush - (_R_, std_buf_key, _S_); + (_M_, std_buf_key, _N_); }, - function(_R_){ /*<>*/ return 0;}, - function(_R_){return 0;}, - function(_R_){return 0;}); + function(_M_){ /*<>*/ return 0;}, + function(_M_){return 0;}, + function(_M_){return 0;}); /*<>*/ ppf[20] = - function(_R_){ - /*<>*/ return display_newline(ppf[17], _R_); + function(_M_){ + /*<>*/ return display_newline(ppf, _M_); }; /*<>*/ ppf[21] = - function(_R_){ - /*<>*/ return display_blanks(ppf, _R_); + function(_M_){ + /*<>*/ return display_blanks(ppf, _M_); }; /*<>*/ ppf[22] = - function(_R_){ - /*<>*/ return display_blanks(ppf, _R_); + function(_M_){ + /*<>*/ return display_blanks(ppf, _M_); }; /*<>*/ Stdlib_Domain[6].call (null, - function(_R_){ - /*<>*/ return pp_print_flush(ppf, _R_); + function(_M_){ + /*<>*/ return pp_print_flush(ppf, _M_); }); /*<>*/ return ppf; /*<>*/ }); @@ -28087,36 +28054,36 @@ 0, function(param){ var - _O_ = /*<>*/ Stdlib[40], + _J_ = /*<>*/ Stdlib[40], ppf = /*<>*/ pp_make_formatter - (function(_P_, _Q_, _R_){ + (function(_K_, _L_, _M_){ /*<>*/ return buffered_out_string - (err_buf_key, _P_, _Q_, _R_); + (err_buf_key, _K_, _L_, _M_); }, - function(_P_){ + function(_K_){ /*<>*/ return buffered_out_flush - (_O_, err_buf_key, _P_); + (_J_, err_buf_key, _K_); }, - function(_O_){ /*<>*/ return 0;}, - function(_O_){return 0;}, - function(_O_){return 0;}); + function(_J_){ /*<>*/ return 0;}, + function(_J_){return 0;}, + function(_J_){return 0;}); /*<>*/ ppf[20] = - function(_O_){ - /*<>*/ return display_newline(ppf[17], _O_); + function(_J_){ + /*<>*/ return display_newline(ppf, _J_); }; /*<>*/ ppf[21] = - function(_O_){ - /*<>*/ return display_blanks(ppf, _O_); + function(_J_){ + /*<>*/ return display_blanks(ppf, _J_); }; /*<>*/ ppf[22] = - function(_O_){ - /*<>*/ return display_blanks(ppf, _O_); + function(_J_){ + /*<>*/ return display_blanks(ppf, _J_); }; /*<>*/ Stdlib_Domain[6].call (null, - function(_O_){ - /*<>*/ return pp_print_flush(ppf, _O_); + function(_J_){ + /*<>*/ return pp_print_flush(ppf, _J_); }); /*<>*/ return ppf; /*<>*/ }); @@ -28163,19 +28130,19 @@ buf = /*<>*/ Stdlib_Buffer[1].call (null, pp_buffer_size), - _L_ = /*<>*/ Stdlib_Buffer[18]; - function output$0(_M_, _N_, _O_){ - /*<>*/ return _L_(buf, _M_, _N_, _O_); + _G_ = /*<>*/ Stdlib_Buffer[18]; + function output$0(_H_, _I_, _J_){ + /*<>*/ return _G_(buf, _H_, _I_, _J_); } function flush$0(param){ var - _L_ = + _G_ = /*<>*/ Stdlib_Buffer[7].call(null, buf); /*<>*/ /*<>*/ caml_call3 (output, /*<>*/ Stdlib_Buffer[2].call(null, buf), 0, - _L_); + _G_); /*<>*/ Stdlib_Buffer[8].call(null, buf); /*<>*/ return caml_call1(flush, 0) /*<>*/ ; } @@ -28184,10 +28151,10 @@ }) /*<>*/ ; } function synchronized_formatter_of_out_(oc){ - var _I_ = /*<>*/ Stdlib[69]; + var _D_ = /*<>*/ Stdlib[69]; /*<>*/ return make_synchronized_formatter - (function(_J_, _K_, _L_){ - /*<>*/ return _I_(oc, _J_, _K_, _L_); + (function(_E_, _F_, _G_){ + /*<>*/ return _D_(oc, _E_, _F_, _G_); }, function(param){ /*<>*/ return Stdlib[63].call(null, oc) /*<>*/ ; @@ -28199,15 +28166,11 @@ /*<>*/ sob[1] = 0; return 0; /*<>*/ } - function get_symbolic_output_buffer$0(_I_){ - /*<>*/ return Stdlib_List[11].call(null, _I_) /*<>*/ ; - } - function get_symbolic_output_buffer(_I_){ - /*<>*/ return get_symbolic_output_buffer$0(_I_[1]) /*<>*/ ; + function get_symbolic_output_buffer(sob){ + /*<>*/ return Stdlib_List[11].call(null, sob[1]) /*<>*/ ; } function flush_symbolic_output_buffer(sob){ - var - items = /*<>*/ get_symbolic_output_buffer$0(sob[1]); + var items = /*<>*/ get_symbolic_output_buffer(sob); /*<>*/ clear_symbolic_output_buffer(sob); /*<>*/ return items; /*<>*/ } @@ -28426,9 +28389,11 @@ v) /*<>*/ ; } function get_margin(v){ - /*<>*/ return caml_call1 - (Stdlib_Domain[11][2], std_formatter_key) - [6] /*<>*/ ; + var + state = + /*<>*/ caml_call1 + (Stdlib_Domain[11][2], std_formatter_key); + /*<>*/ return state[6]; /*<>*/ } function set_max_indent(v){ /*<>*/ return /*<>*/ pp_set_max_indent @@ -28437,9 +28402,11 @@ v) /*<>*/ ; } function get_max_indent(v){ - /*<>*/ return caml_call1 - (Stdlib_Domain[11][2], std_formatter_key) - [8] /*<>*/ ; + var + state = + /*<>*/ caml_call1 + (Stdlib_Domain[11][2], std_formatter_key); + /*<>*/ return state[8]; /*<>*/ } function set_geometry(max_indent, margin){ /*<>*/ return /*<>*/ pp_set_geometry @@ -28474,17 +28441,18 @@ v) /*<>*/ ; } function get_max_boxes(v){ - /*<>*/ return caml_call1 - (Stdlib_Domain[11][2], std_formatter_key) - [15] /*<>*/ ; - /*<>*/ } - function over_max_boxes(v){ var - _I_ = - /*<>*/ caml_call1 + state = + /*<>*/ caml_call1 (Stdlib_Domain[11][2], std_formatter_key); - /*<>*/ return _I_[14] === _I_[15] ? 1 : 0; - /*<>*/ } + /*<>*/ return state[15]; + /*<>*/ } + function over_max_boxes(v){ + /*<>*/ return /*<>*/ pp_over_max_boxes + ( /*<>*/ caml_call1 + (Stdlib_Domain[11][2], std_formatter_key), + v) /*<>*/ ; + } function set_ellipsis_text(v){ /*<>*/ return /*<>*/ pp_set_ellipsis_text ( /*<>*/ caml_call1 @@ -28492,9 +28460,11 @@ v) /*<>*/ ; } function get_ellipsis_text(v){ - /*<>*/ return caml_call1 - (Stdlib_Domain[11][2], std_formatter_key) - [16] /*<>*/ ; + var + state = + /*<>*/ caml_call1 + (Stdlib_Domain[11][2], std_formatter_key); + /*<>*/ return state[16]; /*<>*/ } function set_formatter_out_channel(v){ /*<>*/ return /*<>*/ pp_set_formatter_out_channel @@ -28504,25 +28474,18 @@ } function set_formatter_out_functions(v){ var - _I_ = + _D_ = /*<>*/ caml_call1 (Stdlib_Domain[11][2], std_formatter_key); /*<>*/ return pp_set_formatter_out_functions$0 - (v[1], v[2], v[3], v[4], v[5], v[6], _I_) /*<>*/ ; + (v[1], v[2], v[3], v[4], v[5], v[6], _D_) /*<>*/ ; } function get_formatter_out_functions(v){ - var - _I_ = - /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key); - /*<>*/ return [0, - _I_[17], - _I_[18], - _I_[19], - _I_[20], - _I_[21], - _I_[22]]; - /*<>*/ } + /*<>*/ return /*<>*/ pp_get_formatter_out_functions + ( /*<>*/ caml_call1 + (Stdlib_Domain[11][2], std_formatter_key), + v) /*<>*/ ; + } function set_formatter_output_functions(v, w){ /*<>*/ return /*<>*/ pp_set_formatter_output_functi ( /*<>*/ caml_call1 @@ -28531,27 +28494,23 @@ w) /*<>*/ ; } function get_formatter_output_functions(v){ - var - _I_ = - /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key); - /*<>*/ return [0, _I_[17], _I_[19]]; - /*<>*/ } + /*<>*/ return /*<>*/ pp_get_formatter_output_functi + ( /*<>*/ caml_call1 + (Stdlib_Domain[11][2], std_formatter_key), + v) /*<>*/ ; + } function set_formatter_stag_functions(v){ - var - _I_ = - /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key); - /*<>*/ return pp_set_formatter_stag_function$0 - (v[1], v[2], v[3], v[4], _I_) /*<>*/ ; + /*<>*/ return /*<>*/ pp_set_formatter_stag_function + ( /*<>*/ caml_call1 + (Stdlib_Domain[11][2], std_formatter_key), + v) /*<>*/ ; } function get_formatter_stag_functions(v){ - var - _I_ = - /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key); - /*<>*/ return [0, _I_[25], _I_[26], _I_[27], _I_[28]]; - /*<>*/ } + /*<>*/ return /*<>*/ pp_get_formatter_stag_function + ( /*<>*/ caml_call1 + (Stdlib_Domain[11][2], std_formatter_key), + v) /*<>*/ ; + } function set_print_tags(v){ /*<>*/ return /*<>*/ pp_set_print_tags ( /*<>*/ caml_call1 @@ -28559,9 +28518,11 @@ v) /*<>*/ ; } function get_print_tags(v){ - /*<>*/ return caml_call1 - (Stdlib_Domain[11][2], std_formatter_key) - [23] /*<>*/ ; + var + state = + /*<>*/ caml_call1 + (Stdlib_Domain[11][2], std_formatter_key); + /*<>*/ return state[23]; /*<>*/ } function set_mark_tags(v){ /*<>*/ return /*<>*/ pp_set_mark_tags @@ -28570,9 +28531,11 @@ v) /*<>*/ ; } function get_mark_tags(v){ - /*<>*/ return caml_call1 - (Stdlib_Domain[11][2], std_formatter_key) - [24] /*<>*/ ; + var + state = + /*<>*/ caml_call1 + (Stdlib_Domain[11][2], std_formatter_key); + /*<>*/ return state[24]; /*<>*/ } function set_tags(v){ /*<>*/ return /*<>*/ pp_set_tags @@ -28622,8 +28585,8 @@ /*<>*/ } /*<>*/ for(;;){ if(right[1] === len){ - var _I_ = /*<>*/ left[1] !== len ? 1 : 0; - return _I_ ? /*<>*/ flush(0) : _I_ /*<>*/ ; + var _D_ = /*<>*/ left[1] !== len ? 1 : 0; + return _D_ ? /*<>*/ flush(0) : _D_ /*<>*/ ; } var match = /*<>*/ caml_string_get(s, right[1]); /*<>*/ if(10 === match){ @@ -28819,7 +28782,7 @@ /*<>*/ opt ? opt[1] : function - (_I_, param){ + (_D_, param){ /*<>*/ return 0; /*<>*/ }; /*<>*/ if(! param) @@ -28914,55 +28877,55 @@ var acc$1 = /*<>*/ match[1]; /*<>*/ output_acc(ppf, p$0); var - _I_ = /*<>*/ compute_tag(output_acc, acc$1), + _D_ = /*<>*/ compute_tag(output_acc, acc$1), match$0 = - /*<>*/ CamlinternalFormat[20].call(null, _I_), + /*<>*/ CamlinternalFormat[20].call(null, _D_), bty = /*<>*/ match$0[2], indent = match$0[1]; /*<>*/ return pp_open_box_gen(ppf, indent, bty) /*<>*/ ; case 2: - var _A_ = /*<>*/ acc[1]; - if(typeof _A_ !== "number" && 0 === _A_[0]){ - var _E_ = _A_[2]; - if(typeof _E_ !== "number" && 1 === _E_[0]){ - var s$0 = acc[2], size = _E_[2], p$2 = _A_[1]; + var _v_ = /*<>*/ acc[1]; + if(typeof _v_ !== "number" && 0 === _v_[0]){ + var _z_ = _v_[2]; + if(typeof _z_ !== "number" && 1 === _z_[0]){ + var s$0 = acc[2], size = _z_[2], p$2 = _v_[1]; break a; } } - var s = acc[2], p$1 = _A_; + var s = acc[2], p$1 = _v_; break b; case 3: - var _B_ = acc[1]; - if(typeof _B_ !== "number" && 0 === _B_[0]){ - var _F_ = _B_[2]; - if(typeof _F_ !== "number" && 1 === _F_[0]){ - var c$0 = acc[2], size$0 = _F_[2], p$4 = _B_[1]; + var _w_ = acc[1]; + if(typeof _w_ !== "number" && 0 === _w_[0]){ + var _A_ = _w_[2]; + if(typeof _A_ !== "number" && 1 === _A_[0]){ + var c$0 = acc[2], size$0 = _A_[2], p$4 = _w_[1]; break c; } } - var c = acc[2], p$3 = _B_; + var c = acc[2], p$3 = _w_; break; case 4: - var _C_ = acc[1]; - if(typeof _C_ !== "number" && 0 === _C_[0]){ - var _G_ = _C_[2]; - if(typeof _G_ !== "number" && 1 === _G_[0]){ - var s$0 = acc[2], size = _G_[2], p$2 = _C_[1]; + var _x_ = acc[1]; + if(typeof _x_ !== "number" && 0 === _x_[0]){ + var _B_ = _x_[2]; + if(typeof _B_ !== "number" && 1 === _B_[0]){ + var s$0 = acc[2], size = _B_[2], p$2 = _x_[1]; break a; } } - var s = acc[2], p$1 = _C_; + var s = acc[2], p$1 = _x_; break b; case 5: - var _D_ = acc[1]; - if(typeof _D_ !== "number" && 0 === _D_[0]){ - var _H_ = _D_[2]; - if(typeof _H_ !== "number" && 1 === _H_[0]){ - var c$0 = acc[2], size$0 = _H_[2], p$4 = _D_[1]; + var _y_ = acc[1]; + if(typeof _y_ !== "number" && 0 === _y_[0]){ + var _C_ = _y_[2]; + if(typeof _C_ !== "number" && 1 === _C_[0]){ + var c$0 = acc[2], size$0 = _C_[2], p$4 = _y_[1]; break c; } } - var c = acc[2], p$3 = _D_; + var c = acc[2], p$3 = _y_; break; case 6: var f$0 = acc[2], p$5 = acc[1]; @@ -29020,55 +28983,55 @@ var acc$1 = /*<>*/ match[1]; /*<>*/ strput_acc(ppf, p$0); var - _A_ = /*<>*/ compute_tag(strput_acc, acc$1), + _v_ = /*<>*/ compute_tag(strput_acc, acc$1), match$0 = - /*<>*/ CamlinternalFormat[20].call(null, _A_), + /*<>*/ CamlinternalFormat[20].call(null, _v_), bty = /*<>*/ match$0[2], indent = match$0[1]; /*<>*/ return pp_open_box_gen(ppf, indent, bty) /*<>*/ ; case 2: - var _s_ = /*<>*/ acc[1]; - if(typeof _s_ !== "number" && 0 === _s_[0]){ - var _w_ = _s_[2]; - if(typeof _w_ !== "number" && 1 === _w_[0]){ - var s$0 = acc[2], size = _w_[2], p$2 = _s_[1]; + var _n_ = /*<>*/ acc[1]; + if(typeof _n_ !== "number" && 0 === _n_[0]){ + var _r_ = _n_[2]; + if(typeof _r_ !== "number" && 1 === _r_[0]){ + var s$0 = acc[2], size = _r_[2], p$2 = _n_[1]; break a; } } - var s = acc[2], p$1 = _s_; + var s = acc[2], p$1 = _n_; break b; case 3: - var _t_ = acc[1]; - if(typeof _t_ !== "number" && 0 === _t_[0]){ - var _x_ = _t_[2]; - if(typeof _x_ !== "number" && 1 === _x_[0]){ - var c$0 = acc[2], size$0 = _x_[2], p$4 = _t_[1]; + var _o_ = acc[1]; + if(typeof _o_ !== "number" && 0 === _o_[0]){ + var _s_ = _o_[2]; + if(typeof _s_ !== "number" && 1 === _s_[0]){ + var c$0 = acc[2], size$0 = _s_[2], p$4 = _o_[1]; break c; } } - var c = acc[2], p$3 = _t_; + var c = acc[2], p$3 = _o_; break; case 4: - var _u_ = acc[1]; - if(typeof _u_ !== "number" && 0 === _u_[0]){ - var _y_ = _u_[2]; - if(typeof _y_ !== "number" && 1 === _y_[0]){ - var s$0 = acc[2], size = _y_[2], p$2 = _u_[1]; + var _p_ = acc[1]; + if(typeof _p_ !== "number" && 0 === _p_[0]){ + var _t_ = _p_[2]; + if(typeof _t_ !== "number" && 1 === _t_[0]){ + var s$0 = acc[2], size = _t_[2], p$2 = _p_[1]; break a; } } - var s = acc[2], p$1 = _u_; + var s = acc[2], p$1 = _p_; break b; case 5: - var _v_ = acc[1]; - if(typeof _v_ !== "number" && 0 === _v_[0]){ - var _z_ = _v_[2]; - if(typeof _z_ !== "number" && 1 === _z_[0]){ - var c$0 = acc[2], size$0 = _z_[2], p$4 = _v_[1]; + var _q_ = acc[1]; + if(typeof _q_ !== "number" && 0 === _q_[0]){ + var _u_ = _q_[2]; + if(typeof _u_ !== "number" && 1 === _u_[0]){ + var c$0 = acc[2], size$0 = _u_[2], p$4 = _q_[1]; break c; } } - var c = acc[2], p$3 = _v_; + var c = acc[2], p$3 = _q_; break; case 6: var p$5 = acc[1]; @@ -29109,7 +29072,8 @@ /*<>*/ strput_acc(ppf, p$2); /*<>*/ return pp_print_as_size(ppf, size, s$0) /*<>*/ ; } - function kfprintf$0(fmt, k, ppf){ + function kfprintf(k, ppf, param){ + var fmt = /*<>*/ param[1]; /*<>*/ return CamlinternalFormat[7].call (null, function(acc){ @@ -29119,9 +29083,6 @@ 0, fmt) /*<>*/ ; } - function kfprintf(_q_, _r_, _s_){ - /*<>*/ return kfprintf$0(_s_[1], _q_, _r_) /*<>*/ ; - } function ikfprintf(k, ppf, param){ var fmt = /*<>*/ param[1]; /*<>*/ return CamlinternalFormat[8].call @@ -29130,12 +29091,12 @@ function ifprintf(ppf, param){ var fmt = /*<>*/ param[1]; /*<>*/ return CamlinternalFormat[8].call - (null, function(_q_){ /*<>*/ return 0;}, 0, fmt) /*<>*/ ; + (null, function(_n_){ /*<>*/ return 0;}, 0, fmt) /*<>*/ ; } function fprintf(ppf){ - function _p_(_q_){ /*<>*/ return 0;} - /*<>*/ return function(_q_){ - /*<>*/ return kfprintf$0(_q_[1], _p_, ppf);} /*<>*/ ; + function _m_(_n_){ /*<>*/ return 0;} + /*<>*/ return function(_n_){ + /*<>*/ return kfprintf(_m_, ppf, _n_);} /*<>*/ ; /*<>*/ } function printf(param){ var fmt = /*<>*/ param[1]; @@ -29163,7 +29124,8 @@ 0, fmt) /*<>*/ ; } - function kdprintf$0(fmt, k){ + function kdprintf(k, param){ + var fmt = /*<>*/ param[1]; /*<>*/ return CamlinternalFormat[7].call (null, function(acc){ @@ -29176,18 +29138,16 @@ 0, fmt) /*<>*/ ; } - function kdprintf(_o_, _p_){ - /*<>*/ return kdprintf$0(_p_[1], _o_) /*<>*/ ; - } function dprintf(fmt){ - /*<>*/ return kdprintf$0 - (fmt[1], - function(i){ + /*<>*/ return kdprintf + (function(i){ /*<>*/ return i; - /*<>*/ }) /*<>*/ ; + /*<>*/ }, + fmt) /*<>*/ ; } - function ksprintf$0(fmt, k){ + function ksprintf(k, param){ var + fmt = /*<>*/ param[1], b = /*<>*/ pp_make_buffer(0), ppf = /*<>*/ formatter_of_buffer(b); function k$0(acc){ @@ -29198,14 +29158,12 @@ /*<>*/ return CamlinternalFormat[7].call (null, k$0, 0, fmt) /*<>*/ ; } - function ksprintf(_n_, _o_){ - /*<>*/ return ksprintf$0(_o_[1], _n_) /*<>*/ ; - } function sprintf(fmt){ - /*<>*/ return ksprintf$0(fmt[1], id) /*<>*/ ; + /*<>*/ return ksprintf(id, fmt) /*<>*/ ; } - function kasprintf$0(fmt, k){ + function kasprintf(k, param){ var + fmt = /*<>*/ param[1], b = /*<>*/ pp_make_buffer(0), ppf = /*<>*/ formatter_of_buffer(b); function k$0(acc){ @@ -29216,11 +29174,8 @@ /*<>*/ return CamlinternalFormat[7].call (null, k$0, 0, fmt) /*<>*/ ; } - function kasprintf(_m_, _n_){ - /*<>*/ return kasprintf$0(_n_[1], _m_) /*<>*/ ; - } function asprintf(fmt){ - /*<>*/ return kasprintf$0(fmt[1], id) /*<>*/ ; + /*<>*/ return kasprintf(id, fmt) /*<>*/ ; } function flush_standard_formatters(param){ /*<>*/ /*<>*/ pp_print_flush @@ -29237,35 +29192,43 @@ (null, function(param){ /*<>*/ flush_standard_formatters(0); - var _g_ = /*<>*/ Stdlib[39]; + var + fs = + /*<>*/ pp_get_formatter_out_functions + (std_formatter, 0), + _g_ = /*<>*/ Stdlib[39]; /*<>*/ pp_set_formatter_out_functions$0 (function(_k_, _l_, _m_){ /*<>*/ return buffered_out_string (std_buf_key, _k_, _l_, _m_); }, - std_formatter[18], + fs[2], function(_k_){ /*<>*/ return buffered_out_flush (_g_, std_buf_key, _k_); }, - std_formatter[20], - std_formatter[21], - std_formatter[22], + fs[4], + fs[5], + fs[6], std_formatter); - var _h_ = /*<>*/ Stdlib[40]; + var + fs$0 = + /*<>*/ pp_get_formatter_out_functions + (err_formatter, 0), + _h_ = /*<>*/ Stdlib[40]; /*<>*/ return pp_set_formatter_out_functions$0 (function(_i_, _j_, _k_){ /*<>*/ return buffered_out_string (err_buf_key, _i_, _j_, _k_); }, - err_formatter[18], + fs$0[2], function(_i_){ /*<>*/ return buffered_out_flush (_h_, err_buf_key, _i_); }, - err_formatter[20], - err_formatter[21], - err_formatter[22], + fs$0[4], + fs$0[5], + fs$0[6], err_formatter) /*<>*/ ; }); /*<>*/ runtime.caml_register_global @@ -29571,8 +29534,8 @@ /*<>*/ } /*<>*/ return create(1, next) /*<>*/ ; } - function from_function(_az_){ - /*<>*/ return create(0, _az_); + function from_function(_av_){ + /*<>*/ return create(0, _av_); } function scan_close_at_end(ic){ /*<>*/ Stdlib[93].call(null, ic); @@ -29619,10 +29582,10 @@ (scan_close_at_end, [1, fname, ic], ic) /*<>*/ ; } var _a_ = /*<>*/ Stdlib[79]; - function open_in(_az_){return open_in_file(_a_, _az_);} + function open_in(_av_){return open_in_file(_a_, _av_);} var _b_ = /*<>*/ Stdlib[80]; - function open_in_bin(_az_){ - /*<>*/ return open_in_file(_b_, _az_); + function open_in_bin(_av_){ + /*<>*/ return open_in_file(_b_, _av_); } function from_channel(ic){ /*<>*/ return from_ic(scan_raise_at_end, [0, ic], ic) /*<>*/ ; @@ -29704,15 +29667,15 @@ /*<>*/ for(;;){ var c = /*<>*/ peek_char(ib), - _az_ = /*<>*/ 1 - ib[1]; - if(! _az_) return _az_; - var _ay_ = /*<>*/ c - 9 | 0; + _av_ = /*<>*/ 1 - ib[1]; + if(! _av_) return _av_; + var _au_ = /*<>*/ c - 9 | 0; a: { - if(4 < _ay_ >>> 0){ - if(23 !== _ay_) break a; + if(4 < _au_ >>> 0){ + if(23 !== _au_) break a; } - else if(1 >= _ay_ - 2 >>> 0) break a; + else if(1 >= _au_ - 2 >>> 0) break a; /*<>*/ invalidate_current_char(ib); continue; } @@ -29772,31 +29735,31 @@ /*<>*/ switch(conv){ case 0: var - _av_ = /*<>*/ token_string(ib), + _ar_ = /*<>*/ token_string(ib), tok = /*<>*/ /*<>*/ Stdlib[28].call - (null, "0b", _av_); + (null, "0b", _ar_); break; case 3: var - _aw_ = /*<>*/ token_string(ib), + _as_ = /*<>*/ token_string(ib), tok = /*<>*/ /*<>*/ Stdlib[28].call - (null, "0o", _aw_); + (null, "0o", _as_); break; case 4: var - _ax_ = /*<>*/ token_string(ib), + _at_ = /*<>*/ token_string(ib), tok = /*<>*/ /*<>*/ Stdlib[28].call - (null, "0u", _ax_); + (null, "0u", _at_); break; case 5: var - _ay_ = /*<>*/ token_string(ib), + _au_ = /*<>*/ token_string(ib), tok = /*<>*/ /*<>*/ Stdlib[28].call - (null, "0x", _ay_); + (null, "0x", _au_); break; default: var @@ -29894,13 +29857,13 @@ /*<>*/ return 7 < param - 48 >>> 0 ? 0 : 1 /*<>*/ ; } function is_hexa_digit(param){ - var _av_ = /*<>*/ param - 48 | 0; + var _ar_ = /*<>*/ param - 48 | 0; a: { - if(22 < _av_ >>> 0){ - if(5 < _av_ - 49 >>> 0) break a; + if(22 < _ar_ >>> 0){ + if(5 < _ar_ - 49 >>> 0) break a; } - else if(6 >= _av_ - 10 >>> 0) break a; + else if(6 >= _ar_ - 10 >>> 0) break a; /*<>*/ return 1; } /*<>*/ return 0; @@ -30033,42 +29996,42 @@ } var len = /*<>*/ caml_ml_string_length(str), - _as_ = /*<>*/ len - 1 | 0; - if(_as_ < 0) + _ao_ = /*<>*/ len - 1 | 0; + if(_ao_ < 0) var width$1 = width; else{ var width$0 = width, i = 0; for(;;){ var c = /*<>*/ peek_char(ib), - _au_ = + _aq_ = /*<>*/ /*<>*/ lowercase ( /*<>*/ caml_string_get(str, i)); - /*<>*/ if(lowercase(c) !== _au_) + /*<>*/ if(lowercase(c) !== _aq_) /*<>*/ caml_call1(error, 0); /*<>*/ if(0 === width$0) /*<>*/ caml_call1(error, 0); var - _at_ = /*<>*/ store_char(width$0, ib, c), - _av_ = /*<>*/ i + 1 | 0; - if(_as_ === i){var width$1 = _at_; break;} - width$0 = _at_; - i = _av_; + _ap_ = /*<>*/ store_char(width$0, ib, c), + _ar_ = /*<>*/ i + 1 | 0; + if(_ao_ === i){var width$1 = _ap_; break;} + width$0 = _ap_; + i = _ar_; } } /*<>*/ return width$1; /*<>*/ } function scan_hex_float(width, precision, ib){ var - _ah_ = /*<>*/ 0 === width, - _ai_ = _ah_ || /*<>*/ end_of_input(ib); - /*<>*/ if(_ai_) + _ad_ = /*<>*/ 0 === width, + _ae_ = _ad_ || /*<>*/ end_of_input(ib); + /*<>*/ if(_ae_) /*<>*/ bad_input(cst_not_a_valid_float_in_hexad); var width$0 = /*<>*/ scan_sign(width, ib), - _aj_ = /*<>*/ 0 === width$0, - _ak_ = _aj_ || /*<>*/ end_of_input(ib); - /*<>*/ if(_ak_) + _af_ = /*<>*/ 0 === width$0, + _ag_ = _af_ || /*<>*/ end_of_input(ib); + /*<>*/ if(_ag_) /*<>*/ bad_input(cst_not_a_valid_float_in_hexad); var c = /*<>*/ peek_char(ib); a: @@ -30079,9 +30042,9 @@ if(32 <= switcher) break a; var width$1 = /*<>*/ store_char(width$0, ib, c), - _al_ = /*<>*/ 0 === width$1, - _am_ = _al_ || /*<>*/ end_of_input(ib); - /*<>*/ if(_am_) + _ah_ = /*<>*/ 0 === width$1, + _ai_ = _ah_ || /*<>*/ end_of_input(ib); + /*<>*/ if(_ai_) /*<>*/ bad_input(cst_not_a_valid_float_in_hexad); /*<>*/ return check_case_insensitive_string (width$1, ib, bad_hex_float, "an") /*<>*/ ; @@ -30092,9 +30055,9 @@ if(48 === c){ var width$3 = /*<>*/ store_char(width$0, ib, c), - _ap_ = /*<>*/ 0 === width$3, - _aq_ = _ap_ || /*<>*/ end_of_input(ib); - /*<>*/ if(_aq_) + _al_ = /*<>*/ 0 === width$3, + _am_ = _al_ || /*<>*/ end_of_input(ib); + /*<>*/ if(_am_) /*<>*/ bad_input(cst_not_a_valid_float_in_hexad); var width$4 = @@ -30102,13 +30065,13 @@ (width$3, ib, bad_hex_float, "x"); /*<>*/ if (0 !== width$4 && ! /*<>*/ end_of_input(ib)){ - var _ag_ = /*<>*/ peek_char(ib) - 46 | 0; + var _ac_ = /*<>*/ peek_char(ib) - 46 | 0; b: { - /*<>*/ if(34 < _ag_ >>> 0){ - if(66 === _ag_){var width$5 = width$4; break b;} + /*<>*/ if(34 < _ac_ >>> 0){ + if(66 === _ac_){var width$5 = width$4; break b;} } - else if(32 < _ag_ - 1 >>> 0){var width$5 = width$4; break b;} + else if(32 < _ac_ - 1 >>> 0){var width$5 = width$4; break b;} var width$5 = /*<>*/ /*<>*/ scan_digit_plus @@ -30152,9 +30115,9 @@ /*<>*/ return width$7; var width$8 = /*<>*/ store_char(width$7, ib, c$1), - _ar_ = /*<>*/ 0 === width$8, - _as_ = _ar_ || /*<>*/ end_of_input(ib); - /*<>*/ if(_as_) + _an_ = /*<>*/ 0 === width$8, + _ao_ = _an_ || /*<>*/ end_of_input(ib); + /*<>*/ if(_ao_) /*<>*/ bad_input(cst_not_a_valid_float_in_hexad); /*<>*/ return scan_optionally_signed_decimal (width$8, ib) /*<>*/ ; @@ -30169,9 +30132,9 @@ } var width$2 = /*<>*/ store_char(width$0, ib, c), - _an_ = /*<>*/ 0 === width$2, - _ao_ = _an_ || /*<>*/ end_of_input(ib); - /*<>*/ if(_ao_) + _aj_ = /*<>*/ 0 === width$2, + _ak_ = _aj_ || /*<>*/ end_of_input(ib); + /*<>*/ if(_ak_) /*<>*/ bad_input(cst_not_a_valid_float_in_hexad); /*<>*/ return check_case_insensitive_string (width$2, ib, bad_hex_float, "nfinity") /*<>*/ ; @@ -30183,15 +30146,15 @@ /*<>*/ "no dot or exponent part found in float token"; function scan_caml_float_rest(width, precision, ib){ var - _ad_ = /*<>*/ 0 === width, - _ae_ = _ad_ || /*<>*/ end_of_input(ib); - /*<>*/ if(_ae_) + _$_ = /*<>*/ 0 === width, + _aa_ = _$_ || /*<>*/ end_of_input(ib); + /*<>*/ if(_aa_) /*<>*/ bad_input(cst_no_dot_or_exponent_part_fo); var width$0 = /*<>*/ scan_decimal_digit_star(width, ib), - _af_ = /*<>*/ 0 === width$0, - _ag_ = _af_ || /*<>*/ end_of_input(ib); - /*<>*/ if(_ag_) + _ab_ = /*<>*/ 0 === width$0, + _ac_ = _ab_ || /*<>*/ end_of_input(ib); + /*<>*/ if(_ac_) /*<>*/ bad_input(cst_no_dot_or_exponent_part_fo); var c = /*<>*/ peek_char(ib), @@ -30216,24 +30179,24 @@ } function scan_caml_float(width, precision, ib){ var - _S_ = /*<>*/ 0 === width, - _T_ = _S_ || /*<>*/ end_of_input(ib); - /*<>*/ if(_T_) + _O_ = /*<>*/ 0 === width, + _P_ = _O_ || /*<>*/ end_of_input(ib); + /*<>*/ if(_P_) /*<>*/ bad_input(cst_no_dot_or_exponent_part_fo); var width$0 = /*<>*/ scan_sign(width, ib), - _U_ = /*<>*/ 0 === width$0, - _V_ = _U_ || /*<>*/ end_of_input(ib); - /*<>*/ if(_V_) + _Q_ = /*<>*/ 0 === width$0, + _R_ = _Q_ || /*<>*/ end_of_input(ib); + /*<>*/ if(_R_) /*<>*/ bad_input(cst_no_dot_or_exponent_part_fo); var c = /*<>*/ peek_char(ib); /*<>*/ if(49 <= c){ if(58 > c){ var width$1 = /*<>*/ store_char(width$0, ib, c), - _W_ = /*<>*/ 0 === width$1, - _X_ = _W_ || /*<>*/ end_of_input(ib); - /*<>*/ if(_X_) + _S_ = /*<>*/ 0 === width$1, + _T_ = _S_ || /*<>*/ end_of_input(ib); + /*<>*/ if(_T_) /*<>*/ bad_input(cst_no_dot_or_exponent_part_fo); /*<>*/ return scan_caml_float_rest (width$1, precision, ib) /*<>*/ ; @@ -30242,9 +30205,9 @@ else if(48 <= c){ var width$2 = /*<>*/ store_char(width$0, ib, c), - _Y_ = /*<>*/ 0 === width$2, - _Z_ = _Y_ || /*<>*/ end_of_input(ib); - /*<>*/ if(_Z_) + _U_ = /*<>*/ 0 === width$2, + _V_ = _U_ || /*<>*/ end_of_input(ib); + /*<>*/ if(_V_) /*<>*/ bad_input(cst_no_dot_or_exponent_part_fo); var c$0 = /*<>*/ peek_char(ib); /*<>*/ if(88 !== c$0 && 120 !== c$0) @@ -30252,17 +30215,17 @@ (width$2, precision, ib) /*<>*/ ; var width$3 = /*<>*/ store_char(width$2, ib, c$0), - ___ = /*<>*/ 0 === width$3, - _$_ = ___ || /*<>*/ end_of_input(ib); - /*<>*/ if(_$_) + _W_ = /*<>*/ 0 === width$3, + _X_ = _W_ || /*<>*/ end_of_input(ib); + /*<>*/ if(_X_) /*<>*/ bad_input(cst_no_dot_or_exponent_part_fo); var width$7 = /*<>*/ scan_digit_plus (cst_hexadecimal, is_hexa_digit, width$3, ib), - _aa_ = /*<>*/ 0 === width$7, - _ab_ = _aa_ || /*<>*/ end_of_input(ib); - /*<>*/ if(_ab_) + _Y_ = /*<>*/ 0 === width$7, + _Z_ = _Y_ || /*<>*/ end_of_input(ib); + /*<>*/ if(_Z_) /*<>*/ bad_input(cst_no_dot_or_exponent_part_fo); var c$1 = /*<>*/ peek_char(ib), @@ -30318,9 +30281,9 @@ /*<>*/ return width$5; var width$6 = /*<>*/ store_char(width$5, ib, c$2), - _ac_ = /*<>*/ 0 === width$6, - _ad_ = _ac_ || /*<>*/ end_of_input(ib); - /*<>*/ if(_ad_) + ___ = /*<>*/ 0 === width$6, + _$_ = ___ || /*<>*/ end_of_input(ib); + /*<>*/ if(_$_) /*<>*/ bad_input(cst_not_a_valid_float_in_hexad); /*<>*/ return scan_optionally_signed_decimal (width$6, ib) /*<>*/ ; @@ -30347,13 +30310,13 @@ /*<>*/ width$0 = width$1; } else{ - var _S_ = /*<>*/ c - 9 | 0; + var _O_ = /*<>*/ c - 9 | 0; a: { - if(4 < _S_ >>> 0){ - if(23 !== _S_) break a; + if(4 < _O_ >>> 0){ + if(23 !== _O_) break a; } - else if(1 >= _S_ - 2 >>> 0) break a; + else if(1 >= _O_ - 2 >>> 0) break a; /*<>*/ return width$0; } var width$2 = /*<>*/ store_char(width$0, ib, c); @@ -30423,16 +30386,16 @@ b: { /*<>*/ if(0 <= c && 255 >= c){ - var _R_ = /*<>*/ Stdlib[29].call(null, c); + var _N_ = /*<>*/ Stdlib[29].call(null, c); break b; } var - _R_ = + _N_ = /*<>*/ bad_input ( /*<>*/ caml_call3 (Stdlib_Printf[4].call(null, _k_), c0, c1$0, c2$0)); } - /*<>*/ return store_char(width - 2 | 0, ib, _R_) /*<>*/ ; + /*<>*/ return store_char(width - 2 | 0, ib, _N_) /*<>*/ ; } var switcher = /*<>*/ c0 - 92 | 0; if(28 < switcher >>> 0) break a; @@ -30443,37 +30406,37 @@ /*<>*/ function(param){ var c = /*<>*/ next_char(ib), - _S_ = /*<>*/ c - 48 | 0; + _O_ = /*<>*/ c - 48 | 0; a: { - if(22 < _S_ >>> 0){ - if(5 < _S_ - 49 >>> 0) break a; + if(22 < _O_ >>> 0){ + if(5 < _O_ - 49 >>> 0) break a; } - else if(6 >= _S_ - 10 >>> 0) break a; + else if(6 >= _O_ - 10 >>> 0) break a; /*<>*/ return c; } /*<>*/ return bad_input_escape(c) /*<>*/ ; }, c1 = /*<>*/ get_digit(0), c2 = /*<>*/ get_digit(0), - _S_ = /*<>*/ hexadecimal_value_of_char(c2), + _O_ = /*<>*/ hexadecimal_value_of_char(c2), c$0 = /*<>*/ (16 * hexadecimal_value_of_char(c1) | 0) - + _S_ + + _O_ | 0; b: { /*<>*/ if(0 <= c$0 && 255 >= c$0){ - var _Q_ = /*<>*/ Stdlib[29].call(null, c$0); + var _M_ = /*<>*/ Stdlib[29].call(null, c$0); break b; } var - _Q_ = + _M_ = /*<>*/ bad_input ( /*<>*/ caml_call2 (Stdlib_Printf[4].call(null, _l_), c1, c2)); } - /*<>*/ return store_char(width - 2 | 0, ib, _Q_) /*<>*/ ; + /*<>*/ return store_char(width - 2 | 0, ib, _M_) /*<>*/ ; case 0: case 6: case 18: @@ -30485,20 +30448,20 @@ else if(34 !== c0 && 39 > c0) break a; /*<>*/ if(110 <= c0) if(117 <= c0) - var _P_ = c0; + var _L_ = c0; else switch(c0 - 110 | 0){ case 0: - var _P_ = /*<>*/ 10; break; + var _L_ = /*<>*/ 10; break; case 4: - var _P_ = /*<>*/ 13; break; + var _L_ = /*<>*/ 13; break; case 6: - var _P_ = /*<>*/ 9; break; - default: var _P_ = /*<>*/ c0; + var _L_ = /*<>*/ 9; break; + default: var _L_ = /*<>*/ c0; } else - var _P_ = 98 === c0 ? 8 : c0; - /*<>*/ return store_char(width, ib, _P_) /*<>*/ ; + var _L_ = 98 === c0 ? 8 : c0; + /*<>*/ return store_char(width, ib, _L_) /*<>*/ ; } /*<>*/ return bad_input_escape(c0) /*<>*/ ; } @@ -30516,19 +30479,19 @@ match = /*<>*/ check_next_char(cst_a_String, width$0, ib); /*<>*/ if(10 === match){ - var _O_ = /*<>*/ ignore_char(width$0, ib); + var _K_ = /*<>*/ ignore_char(width$0, ib); /*<>*/ return counter < 50 - ? skip_spaces(counter + 1 | 0, _O_) - : caml_trampoline_return(skip_spaces, [0, _O_]) /*<>*/ ; + ? skip_spaces(counter + 1 | 0, _K_) + : caml_trampoline_return(skip_spaces, [0, _K_]) /*<>*/ ; } /*<>*/ if(13 === match){ var width$2 = /*<>*/ ignore_char(width$0, ib); /*<>*/ if (10 === check_next_char(cst_a_String, width$2, ib)){ - var _P_ = /*<>*/ ignore_char(width$2, ib); + var _L_ = /*<>*/ ignore_char(width$2, ib); /*<>*/ return counter < 50 - ? skip_spaces(counter + 1 | 0, _P_) - : caml_trampoline_return(skip_spaces, [0, _P_]) /*<>*/ ; + ? skip_spaces(counter + 1 | 0, _L_) + : caml_trampoline_return(skip_spaces, [0, _L_]) /*<>*/ ; } var width$4 = /*<>*/ store_char(width$2, ib, 13); /*<>*/ width = width$4; @@ -30570,21 +30533,21 @@ function scan_chars(i$1, stp){ var i = /*<>*/ i$1; for(;;){ - var c = peek_char(ib), _M_ = /*<>*/ 0 < i ? 1 : 0; - if(_M_){ - var _N_ = /*<>*/ 1 - ib[1]; - if(_N_) + var c = peek_char(ib), _I_ = /*<>*/ 0 < i ? 1 : 0; + if(_I_){ + var _J_ = /*<>*/ 1 - ib[1]; + if(_J_) var - _O_ = + _K_ = /*<>*/ CamlinternalFormat[1].call (null, char_set, c), - _L_ = /*<>*/ _O_ ? c !== stp ? 1 : 0 : _O_; + _H_ = /*<>*/ _K_ ? c !== stp ? 1 : 0 : _K_; else - var _L_ = /*<>*/ _N_; + var _H_ = /*<>*/ _J_; } else - var _L_ = /*<>*/ _M_; - if(! _L_) return _L_; + var _H_ = /*<>*/ _I_; + if(! _H_) return _H_; /*<>*/ store_char(Stdlib[19], ib, c); var i$0 = /*<>*/ i - 1 | 0; i = i$0; @@ -30594,8 +30557,8 @@ /*<>*/ return scan_chars(width, -1) /*<>*/ ; var c = /*<>*/ scan_indic[1]; /*<>*/ scan_chars(width, c); - var _L_ = /*<>*/ 1 - ib[1]; - if(! _L_) return _L_; + var _H_ = /*<>*/ 1 - ib[1]; + if(! _H_) return _H_; var ci = /*<>*/ peek_char(ib); /*<>*/ return c === ci ? /*<>*/ invalidate_current_char(ib) @@ -30655,22 +30618,22 @@ var rest$3 = fmt[3], fmtty = fmt[2], - _L_ = + _H_ = /*<>*/ CamlinternalFormat[21].call(null, fmtty), - _K_ = + _G_ = /*<>*/ CamlinternalFormatBasics[2].call - (null, _L_); + (null, _H_); /*<>*/ return counter < 50 ? take_fmtty_format_readers$0 - (counter + 1 | 0, k, _K_, rest$3) + (counter + 1 | 0, k, _G_, rest$3) : caml_trampoline_return - (take_fmtty_format_readers$0, [0, k, _K_, rest$3]) /*<>*/ ; + (take_fmtty_format_readers$0, [0, k, _G_, rest$3]) /*<>*/ ; case 18: - var _J_ = /*<>*/ fmt[1]; - if(0 === _J_[0]){ + var _F_ = /*<>*/ fmt[1]; + if(0 === _F_[0]){ var rest$4 = fmt[2], - fmt$0 = _J_[1][1], + fmt$0 = _F_[1][1], fmt$1 = /*<>*/ CamlinternalFormatBasics[3].call (null, fmt$0, rest$4); @@ -30679,7 +30642,7 @@ else{ var rest$5 = /*<>*/ fmt[2], - fmt$2 = _J_[1][1], + fmt$2 = _F_[1][1], fmt$3 = /*<>*/ CamlinternalFormatBasics[3].call (null, fmt$2, rest$5); @@ -30765,11 +30728,11 @@ rest = /*<>*/ fmtty[3], ty2 = fmtty[2], ty1 = fmtty[1], - _J_ = + _F_ = /*<>*/ CamlinternalFormat[21].call(null, ty1), ty = /*<>*/ CamlinternalFormat[22].call - (null, _J_, ty2), + (null, _F_, ty2), fmtty$2 = /*<>*/ CamlinternalFormatBasics[1].call (null, ty, rest); @@ -30864,39 +30827,39 @@ /*<>*/ switch(fmt[1][2]){ case 5: case 8: - var pad$7 = fmt[2], prec$4 = fmt[3], rest$24 = fmt[4]; + var rest$11 = fmt[4], prec$4 = fmt[3], pad$6 = fmt[2]; /*<>*/ return pad_prec_scanf (ib, - rest$24, + rest$11, readers, - pad$7, + pad$6, prec$4, scan_caml_float, token_float) /*<>*/ ; case 6: case 7: var - pad$8 = /*<>*/ fmt[2], + rest$12 = /*<>*/ fmt[4], prec$5 = fmt[3], - rest$25 = fmt[4]; + pad$7 = fmt[2]; /*<>*/ return pad_prec_scanf (ib, - rest$25, + rest$12, readers, - pad$8, + pad$7, prec$5, scan_hex_float, token_float) /*<>*/ ; default: var - pad$6 = /*<>*/ fmt[2], + rest$10 = /*<>*/ fmt[4], prec$3 = fmt[3], - rest$23 = fmt[4]; + pad$5 = fmt[2]; /*<>*/ return pad_prec_scanf (ib, - rest$23, + rest$10, readers, - pad$6, + pad$5, prec$3, scan_float, token_float) /*<>*/ ; @@ -30904,32 +30867,32 @@ case 9: break h; case 10: - var rest$10 = /*<>*/ fmt[1]; + var rest$14 = /*<>*/ fmt[1]; /*<>*/ if(! end_of_input(ib)) /*<>*/ return bad_input ("end of input not found") /*<>*/ ; - /*<>*/ fmt = rest$10; + /*<>*/ fmt = rest$14; break; case 11: var - rest$11 = /*<>*/ fmt[2], + rest$15 = /*<>*/ fmt[2], str$0 = fmt[1]; /*<>*/ Stdlib_String[30].call (null, - function(_J_){ - /*<>*/ return check_char(ib, _J_); + function(_F_){ + /*<>*/ return check_char(ib, _F_); }, str$0); - /*<>*/ fmt = rest$11; + /*<>*/ fmt = rest$15; break; case 12: - var rest$12 = /*<>*/ fmt[2], chr = fmt[1]; + var rest$16 = /*<>*/ fmt[2], chr = fmt[1]; /*<>*/ check_char(ib, chr); - /*<>*/ fmt = rest$12; + /*<>*/ fmt = rest$16; break; case 13: var - rest$13 = /*<>*/ fmt[3], + rest$17 = /*<>*/ fmt[3], fmtty = fmt[2], pad_opt = fmt[1]; /*<>*/ /*<>*/ scan_caml_string @@ -30937,10 +30900,10 @@ var s = /*<>*/ token_string(ib); /*<>*/ try{ var - _E_ = + _A_ = /*<>*/ CamlinternalFormat[14].call (null, s, fmtty), - fmt$2 = _E_; + fmt$2 = _A_; } catch(exn$0){ var exn = /*<>*/ caml_wrap_exception(exn$0); @@ -30954,7 +30917,7 @@ } /*<>*/ return [0, fmt$2, - make_scanf(ib, rest$13, readers)] /*<>*/ ; + make_scanf(ib, rest$17, readers)] /*<>*/ ; case 14: break i; case 15: @@ -30965,41 +30928,41 @@ (null, 'scanf: bad conversion "%t"') /*<>*/ ; case 17: var - rest$15 = /*<>*/ fmt[2], + rest$19 = /*<>*/ fmt[2], formatting_lit = fmt[1], - _J_ = + _F_ = /*<>*/ CamlinternalFormat[17].call (null, formatting_lit); /*<>*/ Stdlib_String[30].call (null, - function(_J_){ - /*<>*/ return check_char(ib, _J_); + function(_F_){ + /*<>*/ return check_char(ib, _F_); }, - _J_); - /*<>*/ fmt = rest$15; + _F_); + /*<>*/ fmt = rest$19; break; case 18: - var _C_ = /*<>*/ fmt[1]; - if(0 === _C_[0]){ - var rest$16 = fmt[2], fmt$8 = _C_[1][1]; + var _y_ = /*<>*/ fmt[1]; + if(0 === _y_[0]){ + var rest$20 = fmt[2], fmt$8 = _y_[1][1]; /*<>*/ check_char(ib, 64); /*<>*/ check_char(ib, 123); var fmt$9 = /*<>*/ CamlinternalFormatBasics[3].call - (null, fmt$8, rest$16); + (null, fmt$8, rest$20); /*<>*/ fmt = fmt$9; } else{ var - rest$17 = /*<>*/ fmt[2], - fmt$10 = _C_[1][1]; + rest$21 = /*<>*/ fmt[2], + fmt$10 = _y_[1][1]; /*<>*/ check_char(ib, 64); /*<>*/ check_char(ib, 91); var fmt$11 = /*<>*/ CamlinternalFormatBasics[3].call - (null, fmt$10, rest$17); + (null, fmt$10, rest$21); /*<>*/ fmt = fmt$11; } break; @@ -31019,7 +30982,7 @@ break j; case 21: var - rest$19 = /*<>*/ fmt[2], + rest$24 = /*<>*/ fmt[2], counter = fmt[1]; /*<>*/ switch(counter){ case 0: @@ -31030,21 +30993,21 @@ } /*<>*/ return [0, count, - make_scanf(ib, rest$19, readers)] /*<>*/ ; + make_scanf(ib, rest$24, readers)] /*<>*/ ; case 22: var - rest$20 = /*<>*/ fmt[1], + rest$25 = /*<>*/ fmt[1], c$2 = /*<>*/ checked_peek_char(ib); /*<>*/ return [0, c$2, - make_scanf(ib, rest$20, readers)] /*<>*/ ; + make_scanf(ib, rest$25, readers)] /*<>*/ ; case 23: var - rest$21 = /*<>*/ fmt[2], + rest$26 = /*<>*/ fmt[2], ign = fmt[1], fmt$12 = /*<>*/ CamlinternalFormat[6].call - (null, ign, rest$21) + (null, ign, rest$26) [1], match$3 = /*<>*/ make_scanf(ib, fmt$12, readers); @@ -31063,9 +31026,9 @@ match$1 = fmt[3]; if(typeof match$1 !== "number" && 17 === match$1[0]){ var - rest$18 = match$1[2], + rest$23 = match$1[2], fmting_lit$0 = match$1[1], - char_set = fmt[2], + char_set$0 = fmt[2], match$2 = /*<>*/ stopper_of_formatting_lit (fmting_lit$0), @@ -31073,25 +31036,25 @@ stp$0 = match$2[1], width$1 = /*<>*/ width_of_pad_opt(width_opt); /*<>*/ scan_chars_in_char_set - (char_set, [0, stp$0], width$1, ib); + (char_set$0, [0, stp$0], width$1, ib); var s$2 = /*<>*/ token_string(ib); /*<>*/ return [0, s$2, - make_scanf(ib, [11, str$1, rest$18], readers)] /*<>*/ ; + make_scanf(ib, [11, str$1, rest$23], readers)] /*<>*/ ; } var - char_set$0 = /*<>*/ fmt[2], - rest$22 = fmt[3], + rest$22 = /*<>*/ fmt[3], + char_set = fmt[2], width$0 = /*<>*/ width_of_pad_opt(width_opt); /*<>*/ scan_chars_in_char_set - (char_set$0, 0, width$0, ib); + (char_set, 0, width$0, ib); var s$1 = /*<>*/ token_string(ib); /*<>*/ return [0, s$1, make_scanf(ib, rest$22, readers)] /*<>*/ ; } var - rest$14 = /*<>*/ fmt[3], + rest$18 = /*<>*/ fmt[3], fmtty$0 = fmt[2], pad_opt$0 = fmt[1]; /*<>*/ /*<>*/ scan_caml_string @@ -31107,23 +31070,23 @@ /*<>*/ CamlinternalFormat[13].call (null, 0, s$0) [1], - _F_ = + _B_ = /*<>*/ CamlinternalFormat[21].call (null, fmtty$0), - _G_ = + _C_ = /*<>*/ CamlinternalFormatBasics[2].call - (null, _F_), + (null, _B_), fmt$7 = /*<>*/ CamlinternalFormat[12].call - (null, fmt$6, _G_), - _H_ = + (null, fmt$6, _C_), + _D_ = /*<>*/ CamlinternalFormatBasics[2].call (null, fmtty$0), - _I_ = + _E_ = /*<>*/ CamlinternalFormat[12].call - (null, fmt$5, _H_), + (null, fmt$5, _D_), fmt$4 = fmt$7, - fmt$3 = _I_; + fmt$3 = _E_; } catch(exn){ var exn$0 = /*<>*/ caml_wrap_exception(exn); @@ -31131,23 +31094,23 @@ throw caml_maybe_attach_backtrace(exn$0, 0); var msg$0 = exn$0[2], - _D_ = /*<>*/ bad_input(msg$0), - fmt$4 = _D_[2], - fmt$3 = _D_[1]; + _z_ = /*<>*/ bad_input(msg$0), + fmt$4 = _z_[2], + fmt$3 = _z_[1]; } /*<>*/ return [0, [0, fmt$3, s$0], /*<>*/ make_scanf (ib, /*<>*/ CamlinternalFormatBasics[3].call - (null, fmt$4, rest$14), + (null, fmt$4, rest$18), readers)] /*<>*/ ; } var - rest$9 = /*<>*/ fmt[2], - pad$5 = fmt[1], + rest$13 = /*<>*/ fmt[2], + pad$8 = fmt[1], scan$8 = - /*<>*/ function(_J_, param, ib){ + /*<>*/ function(_F_, param, ib){ var c = /*<>*/ checked_peek_char(ib), m = @@ -31162,10 +31125,10 @@ /*<>*/ return scan_string(0, m, ib) /*<>*/ ; }; /*<>*/ return pad_prec_scanf - (ib, rest$9, readers, pad$5, 0, scan$8, token_bool) /*<>*/ ; + (ib, rest$13, readers, pad$8, 0, scan$8, token_bool) /*<>*/ ; } var - rest$8 = /*<>*/ fmt[4], + rest$9 = /*<>*/ fmt[4], prec$2 = fmt[3], pad$4 = fmt[2], iconv$2 = fmt[1], @@ -31180,7 +31143,7 @@ }; /*<>*/ return pad_prec_scanf (ib, - rest$8, + rest$9, readers, pad$4, prec$2, @@ -31191,7 +31154,7 @@ }) /*<>*/ ; } var - rest$7 = /*<>*/ fmt[4], + rest$8 = /*<>*/ fmt[4], prec$1 = fmt[3], pad$3 = fmt[2], iconv$1 = fmt[1], @@ -31206,7 +31169,7 @@ }; /*<>*/ return pad_prec_scanf (ib, - rest$7, + rest$8, readers, pad$3, prec$1, @@ -31217,7 +31180,7 @@ }) /*<>*/ ; } var - rest$6 = /*<>*/ fmt[4], + rest$7 = /*<>*/ fmt[4], prec$0 = fmt[3], pad$2 = fmt[2], iconv$0 = fmt[1], @@ -31232,7 +31195,7 @@ }; /*<>*/ return pad_prec_scanf (ib, - rest$6, + rest$7, readers, pad$2, prec$0, @@ -31243,7 +31206,7 @@ }) /*<>*/ ; } var - rest$5 = /*<>*/ fmt[4], + rest$6 = /*<>*/ fmt[4], prec = fmt[3], pad$1 = fmt[2], iconv = fmt[1], @@ -31257,7 +31220,7 @@ }; /*<>*/ return pad_prec_scanf (ib, - rest$5, + rest$6, readers, pad$1, prec, @@ -31268,21 +31231,21 @@ }) /*<>*/ ; } var - rest$4 = /*<>*/ fmt[2], + rest$5 = /*<>*/ fmt[2], pad$0 = fmt[1], scan$3 = /*<>*/ function(width, param, ib){ /*<>*/ return scan_caml_string(width, ib) /*<>*/ ; }; /*<>*/ return pad_prec_scanf - (ib, rest$4, readers, pad$0, 0, scan$3, token_string) /*<>*/ ; + (ib, rest$5, readers, pad$0, 0, scan$3, token_string) /*<>*/ ; } var pad = /*<>*/ fmt[1], match = fmt[2]; if(typeof match !== "number") switch(match[0]){ case 17: var - rest$1 = match[2], + rest$2 = match[2], fmting_lit = match[1], match$0 = /*<>*/ stopper_of_formatting_lit(fmting_lit), @@ -31294,18 +31257,18 @@ }; /*<>*/ return pad_prec_scanf (ib, - [11, str, rest$1], + [11, str, rest$2], readers, pad, 0, scan$0, token_string) /*<>*/ ; case 18: - var _B_ = /*<>*/ match[1]; - if(0 === _B_[0]){ + var _x_ = /*<>*/ match[1]; + if(0 === _x_[0]){ var - rest$2 = match[2], - fmt$0 = _B_[1][1], + rest$3 = match[2], + fmt$0 = _x_[1][1], scan$1 = /*<>*/ function(width, param, ib){ /*<>*/ return scan_string(_p_, width, ib) /*<>*/ ; @@ -31313,7 +31276,7 @@ /*<>*/ return /*<>*/ pad_prec_scanf (ib, /*<>*/ CamlinternalFormatBasics[3].call - (null, fmt$0, rest$2), + (null, fmt$0, rest$3), readers, pad, 0, @@ -31321,8 +31284,8 @@ token_string) /*<>*/ ; } var - rest$3 = /*<>*/ match[2], - fmt$1 = _B_[1][1], + rest$4 = /*<>*/ match[2], + fmt$1 = _x_[1][1], scan$2 = /*<>*/ function(width, param, ib){ /*<>*/ return scan_string(_q_, width, ib) /*<>*/ ; @@ -31330,7 +31293,7 @@ /*<>*/ return /*<>*/ pad_prec_scanf (ib, /*<>*/ CamlinternalFormatBasics[3].call - (null, fmt$1, rest$3), + (null, fmt$1, rest$4), readers, pad, 0, @@ -31338,13 +31301,13 @@ token_string) /*<>*/ ; } var - rest$26 = /*<>*/ fmt[2], + rest$1 = /*<>*/ fmt[2], scan = /*<>*/ function(width, param, ib){ /*<>*/ return scan_string(0, width, ib) /*<>*/ ; }; /*<>*/ return pad_prec_scanf - (ib, rest$26, readers, pad, 0, scan, token_string) /*<>*/ ; + (ib, rest$1, readers, pad, 0, scan, token_string) /*<>*/ ; } var rest$0 = /*<>*/ fmt[1]; function find_stop(width){ @@ -31408,7 +31371,8 @@ /*<>*/ return [0, x$1, make_scanf(ib, fmt, readers)] /*<>*/ ; /*<>*/ } var cst = /*<>*/ '"'; - function kscanf_gen(fmt, str, ib, ef, af){ + function kscanf_gen(ib, ef, af, param){ + var str = /*<>*/ param[2], fmt = param[1]; function k(readers, f$1){ /*<>*/ Stdlib_Buffer[9].call(null, ib[8]); /*<>*/ try{ @@ -31424,12 +31388,12 @@ if(exc[1] !== Stdlib[6]) throw caml_maybe_attach_backtrace(exc, 0); var msg = exc[2], - _y_ = /*<>*/ Stdlib_String[25].call(null, str), - _z_ = Stdlib[28].call(null, _y_, cst), - _A_ = - /*<>*/ Stdlib[28].call(null, ' in format "', _z_), - _B_ = /*<>*/ Stdlib[28].call(null, msg, _A_); - /*<>*/ return Stdlib[1].call(null, _B_) /*<>*/ ; + _u_ = /*<>*/ Stdlib_String[25].call(null, str), + _v_ = Stdlib[28].call(null, _u_, cst), + _w_ = + /*<>*/ Stdlib[28].call(null, ' in format "', _v_), + _x_ = /*<>*/ Stdlib[28].call(null, msg, _w_); + /*<>*/ return Stdlib[1].call(null, _x_) /*<>*/ ; } /*<>*/ return caml_call2(ef, ib, exc) /*<>*/ ; } @@ -31446,57 +31410,49 @@ /*<>*/ } /*<>*/ return take_format_readers(k, fmt) /*<>*/ ; } - function kscanf$0(_x_, _y_, ib, ef){ + function kscanf(ib, ef, fmt){ /*<>*/ return kscanf_gen - (_x_, - _y_, - ib, + (ib, ef, function(x){ /*<>*/ return x; - /*<>*/ }) /*<>*/ ; - } - function kscanf(_w_, _x_, _v_){ - /*<>*/ return kscanf$0(_v_[1], _v_[2], _w_, _x_) /*<>*/ ; + /*<>*/ }, + fmt) /*<>*/ ; } - function kscanf_opt(_u_, _v_, ib){ + function kscanf_opt(ib, fmt){ /*<>*/ return kscanf_gen - (_u_, - _v_, - ib, - function(_v_, param){ + (ib, + function(_u_, param){ /*<>*/ return 0; /*<>*/ }, function(x){ /*<>*/ return [0, x]; - /*<>*/ }) /*<>*/ ; + /*<>*/ }, + fmt) /*<>*/ ; } function bscanf(ib, fmt){ - /*<>*/ return kscanf$0 - (fmt[1], fmt[2], ib, scanf_bad_input) /*<>*/ ; + /*<>*/ return kscanf(ib, scanf_bad_input, fmt) /*<>*/ ; } function bscanf_opt(ib, fmt){ - /*<>*/ return kscanf_opt(fmt[1], fmt[2], ib) /*<>*/ ; + /*<>*/ return kscanf_opt(ib, fmt) /*<>*/ ; } function ksscanf(s, ef, fmt){ - var _u_ = /*<>*/ from_string(s); - /*<>*/ return kscanf$0(fmt[1], fmt[2], _u_, ef) /*<>*/ ; + /*<>*/ return /*<>*/ kscanf + ( /*<>*/ from_string(s), ef, fmt) /*<>*/ ; } function sscanf(s, fmt){ - var _u_ = /*<>*/ from_string(s); - /*<>*/ return kscanf$0 - (fmt[1], fmt[2], _u_, scanf_bad_input) /*<>*/ ; + /*<>*/ return /*<>*/ kscanf + ( /*<>*/ from_string(s), scanf_bad_input, fmt) /*<>*/ ; } function sscanf_opt(s, fmt){ - var _u_ = /*<>*/ from_string(s); - /*<>*/ return kscanf_opt(fmt[1], fmt[2], _u_) /*<>*/ ; + /*<>*/ return /*<>*/ kscanf_opt + ( /*<>*/ from_string(s), fmt) /*<>*/ ; } function scanf(fmt){ - /*<>*/ return kscanf$0 - (fmt[1], fmt[2], stdin, scanf_bad_input) /*<>*/ ; + /*<>*/ return kscanf(stdin, scanf_bad_input, fmt) /*<>*/ ; } function scanf_opt(fmt){ - /*<>*/ return kscanf_opt(fmt[1], fmt[2], stdin) /*<>*/ ; + /*<>*/ return kscanf_opt(stdin, fmt) /*<>*/ ; } function bscanf_format(ib, format, f){ /*<>*/ scan_caml_string(Stdlib[19], ib); @@ -31648,24 +31604,24 @@ } function public_method_label(s){ var - _C_ = + _A_ = /*<>*/ runtime.caml_ml_string_length(s) - 1 | 0, - _B_ = /*<>*/ 0; - /*<>*/ if(_C_ < 0) - var accu$1 = _B_; + _z_ = /*<>*/ 0; + /*<>*/ if(_A_ < 0) + var accu$1 = _z_; else{ - var accu$0 = _B_, i = 0; + var accu$0 = _z_, i = 0; for(;;){ var - _D_ = + _B_ = /*<>*/ (223 * accu$0 | 0) + runtime.caml_string_get(s, i) | 0, - _E_ = /*<>*/ i + 1 | 0; - if(_C_ === i){var accu$1 = _D_; break;} - accu$0 = _D_; - i = _E_; + _C_ = /*<>*/ i + 1 | 0; + if(_A_ === i){var accu$1 = _B_; break;} + accu$0 = _B_; + i = _C_; } } var @@ -31702,30 +31658,30 @@ ((len * 2 | 0) + 2 | 0, dummy_met); /*<>*/ caml_check_bound(methods, 0)[1] = len; var - _y_ = /*<>*/ Stdlib_Sys[10], - _z_ = + _w_ = /*<>*/ Stdlib_Sys[10], + _x_ = ( /*<>*/ runtime.caml_mul - ( /*<>*/ fit_size(len), _y_) + ( /*<>*/ fit_size(len), _w_) / 8 | 0) - 1 | 0; - /*<>*/ caml_check_bound(methods, 1)[2] = _z_; - var _w_ = /*<>*/ len - 1 | 0; - if(_w_ >= 0){ + /*<>*/ caml_check_bound(methods, 1)[2] = _x_; + var _u_ = /*<>*/ len - 1 | 0; + if(_u_ >= 0){ var i = 0; for(;;){ var - _x_ = /*<>*/ (i * 2 | 0) + 3 | 0, - _A_ = + _v_ = /*<>*/ (i * 2 | 0) + 3 | 0, + _y_ = /*<>*/ caml_check_bound(pub_labels, i) [i + 1]; - /*<>*/ caml_check_bound(methods, _x_) - [_x_ + 1] - = _A_; - var _B_ = /*<>*/ i + 1 | 0; - if(_w_ === i) break; - i = _B_; + /*<>*/ caml_check_bound(methods, _v_) + [_v_ + 1] + = _y_; + var _z_ = /*<>*/ i + 1 | 0; + if(_u_ === i) break; + i = _z_; } } /*<>*/ return [0, @@ -31741,19 +31697,19 @@ function resize(array, new_size){ var old_size = /*<>*/ array[2].length - 1, - _v_ = /*<>*/ old_size < new_size ? 1 : 0; - if(_v_){ + _t_ = /*<>*/ old_size < new_size ? 1 : 0; + if(_t_){ var new_buck = /*<>*/ caml_array_make(new_size, dummy_met); /*<>*/ Stdlib_Array[9].call (null, array[2], 0, new_buck, 0, old_size); /*<>*/ array[2] = new_buck; - var _w_ = 0; + var _u_ = 0; } else - var _w_ = /*<>*/ _v_; - return _w_; + var _u_ = /*<>*/ _t_; + return _u_; /*<>*/ } var method_count = @@ -31768,9 +31724,9 @@ function get_method_label(table, name){ /*<>*/ try{ var - _v_ = + _t_ = /*<>*/ caml_call2(Meths[17], name, table[3]); - return _v_; + return _t_; } catch(exn$0){ var exn = /*<>*/ caml_wrap_exception(exn$0); @@ -31786,9 +31742,9 @@ function get_method_labels(table, names){ /*<>*/ return Stdlib_Array[16].call (null, - function(_v_){ + function(_t_){ /*<>*/ return get_method_label - (table, _v_); + (table, _t_); }, names) /*<>*/ ; } @@ -31808,10 +31764,10 @@ function get_method(table, label){ /*<>*/ try{ var - _v_ = + _t_ = /*<>*/ Stdlib_List[54].call (null, label, table[6]); - return _v_; + return _t_; } catch(exn$0){ var exn = /*<>*/ caml_wrap_exception(exn$0); @@ -31837,17 +31793,17 @@ virt_meth_labs = /*<>*/ Stdlib_List[21].call (null, - function(_v_){ + function(_t_){ /*<>*/ return get_method_label - (table, _v_); + (table, _t_); }, virt_meths$0), concr_meth_labs = /*<>*/ Stdlib_List[21].call (null, - function(_v_){ + function(_t_){ /*<>*/ return get_method_label - (table, _v_); + (table, _t_); }, concr_meths$0); /*<>*/ table[5] = @@ -31874,21 +31830,21 @@ function(met, label){ /*<>*/ by_name[1] = caml_call3(Meths[2], met, label, by_name[1]); - var _u_ = /*<>*/ by_label[1]; + var _s_ = /*<>*/ by_label[1]; try{ var - _v_ = + _t_ = /*<>*/ caml_call2 (Labs[17], label, table[4]), - _t_ = _v_; + _r_ = _t_; } catch(exn$0){ var exn = /*<>*/ caml_wrap_exception(exn$0); if(exn !== Stdlib[8]) throw caml_maybe_attach_backtrace(exn, 0); - var _t_ = /*<>*/ 1; + var _r_ = /*<>*/ 1; } /*<>*/ by_label[1] = - caml_call3(Labs[2], label, _t_, _u_); + caml_call3(Labs[2], label, _r_, _s_); /*<>*/ return 0; }, concr_meths$0, @@ -31937,10 +31893,10 @@ (null, function(s, v){ var - _t_ = + _r_ = /*<>*/ caml_call2(Vars[17], v, table[7]); /*<>*/ return caml_call3 - (Vars[2], v, _t_, s) /*<>*/ ; + (Vars[2], v, _r_, s) /*<>*/ ; }, saved_vars, vars); @@ -31963,9 +31919,9 @@ function new_variable(table, name){ /*<>*/ try{ var - _t_ = + _r_ = /*<>*/ caml_call2(Vars[17], name, table[7]); - return _t_; + return _r_; } catch(exn$0){ var exn = /*<>*/ caml_wrap_exception(exn$0); @@ -31991,36 +31947,36 @@ res = /*<>*/ caml_array_make (nmeths + nvals | 0, 0), - _n_ = /*<>*/ nmeths - 1 | 0; - if(_n_ >= 0){ + _l_ = /*<>*/ nmeths - 1 | 0; + if(_l_ >= 0){ var i$0 = 0; for(;;){ var - _s_ = + _q_ = /*<>*/ /*<>*/ get_method_label (table, /*<>*/ caml_check_bound(meths$0, i$0) [i$0 + 1]); - /*<>*/ caml_check_bound(res, i$0)[i$0 + 1] = _s_; - var _t_ = /*<>*/ i$0 + 1 | 0; - if(_n_ === i$0) break; - i$0 = _t_; + /*<>*/ caml_check_bound(res, i$0)[i$0 + 1] = _q_; + var _r_ = /*<>*/ i$0 + 1 | 0; + if(_l_ === i$0) break; + i$0 = _r_; } } - var _o_ = /*<>*/ nvals - 1 | 0; - if(_o_ >= 0){ + var _m_ = /*<>*/ nvals - 1 | 0; + if(_m_ >= 0){ var i = 0; for(;;){ var - _p_ = /*<>*/ i + nmeths | 0, - _q_ = + _n_ = /*<>*/ i + nmeths | 0, + _o_ = /*<>*/ /*<>*/ new_variable (table, /*<>*/ caml_check_bound(vals, i)[i + 1]); - /*<>*/ caml_check_bound(res, _p_)[_p_ + 1] = _q_; - var _r_ = /*<>*/ i + 1 | 0; - if(_o_ === i) break; - i = _r_; + /*<>*/ caml_check_bound(res, _n_)[_n_ + 1] = _o_; + var _p_ = /*<>*/ i + 1 | 0; + if(_m_ === i) break; + i = _p_; } } /*<>*/ return res; @@ -32032,9 +31988,9 @@ function get_variable(table, name){ /*<>*/ try{ var - _n_ = + _l_ = /*<>*/ caml_call2(Vars[17], name, table[7]); - return _n_; + return _l_; } catch(exn$0){ var exn = /*<>*/ caml_wrap_exception(exn$0); @@ -32047,9 +32003,9 @@ function get_variables(table, names){ /*<>*/ return Stdlib_Array[16].call (null, - function(_n_){ + function(_l_){ /*<>*/ return get_variable - (table, _n_); + (table, _l_); }, names) /*<>*/ ; } @@ -32083,7 +32039,7 @@ (null, inst_var_count, table[1] - 1 | 0); /*<>*/ table[8] = Stdlib_List[11].call(null, table[8]); - var _n_ = /*<>*/ Stdlib_Sys[10]; + var _l_ = /*<>*/ Stdlib_Sys[10]; return /*<>*/ resize (table, 3 @@ -32094,7 +32050,7 @@ [2] * 16 | 0, - _n_) + _l_) | 0) /*<>*/ ; } function inherits(cla, vals, virt_meths, concr_meths, param, top){ @@ -32108,8 +32064,8 @@ : /*<>*/ caml_call1(super$, cla); /*<>*/ widen(cla); var - _k_ = /*<>*/ to_array(concr_meths), - _l_ = + _i_ = /*<>*/ to_array(concr_meths), + _j_ = /*<>*/ [0, Stdlib_Array[16].call (null, @@ -32118,21 +32074,21 @@ (cla, /*<>*/ get_method_label(cla, nm)) /*<>*/ ; }, - _k_), + _i_), 0], - _m_ = /*<>*/ to_array(vals), - _n_ = + _k_ = /*<>*/ to_array(vals), + _l_ = /*<>*/ [0, [0, init], [0, Stdlib_Array[16].call (null, - function(_n_){ - /*<>*/ return get_variable(cla, _n_); + function(_l_){ + /*<>*/ return get_variable(cla, _l_); }, - _m_), - _l_]]; - /*<>*/ return Stdlib_Array[5].call(null, _n_) /*<>*/ ; + _k_), + _j_]]; + /*<>*/ return Stdlib_Array[5].call(null, _l_) /*<>*/ ; } function make_class(pub_meths, class_init){ var @@ -32162,16 +32118,14 @@ /*<>*/ } /*<>*/ return [0, undef, undef, 0]; /*<>*/ } - function create_object$0(_j_, _k_){ + function create_object(table){ var obj = - /*<>*/ caml_obj_block(Stdlib_Obj[10], _j_); - /*<>*/ obj[1] = _k_; + /*<>*/ caml_obj_block + (Stdlib_Obj[10], table[1]); + /*<>*/ obj[1] = table[2]; /*<>*/ return caml_set_oo_id(obj) /*<>*/ ; } - function create_object(_j_){ - /*<>*/ return create_object$0(_j_[1], _j_[2]) /*<>*/ ; - } function create_object_opt(obj_0, table){ /*<>*/ if(obj_0) /*<>*/ return obj_0; @@ -32191,12 +32145,11 @@ /*<>*/ param = l; } /*<>*/ } - function run_initializers$0(inits, obj){ - var _j_ = /*<>*/ 0 !== inits ? 1 : 0; - return _j_ ? /*<>*/ iter_f(obj, inits) : _j_ /*<>*/ ; - } - function run_initializers(_i_, _j_){ - /*<>*/ return run_initializers$0(_j_[8], _i_) /*<>*/ ; + function run_initializers(obj, table){ + var + inits = /*<>*/ table[8], + _i_ = /*<>*/ 0 !== inits ? 1 : 0; + return _i_ ? /*<>*/ iter_f(obj, inits) : _i_ /*<>*/ ; } function run_initializers_opt(obj_0, obj, table){ /*<>*/ if(obj_0) @@ -32209,10 +32162,8 @@ function create_object_and_run_initiali(obj_0, table){ /*<>*/ if(obj_0) /*<>*/ return obj_0; - var - obj = - /*<>*/ create_object$0(table[1], table[2]); - /*<>*/ run_initializers$0(table[8], obj); + var obj = /*<>*/ create_object(table); + /*<>*/ run_initializers(obj, table); /*<>*/ return obj; /*<>*/ } var @@ -32820,21 +32771,21 @@ Stdlib_Obj = global_data.Stdlib__Obj, CamlinternalOO = global_data.CamlinternalOO; function copy_from_array(a, dummy){ - var _ag_ = /*<>*/ Stdlib_Obj[17]; - if(caml_obj_tag(a) !== _ag_) + var _af_ = /*<>*/ Stdlib_Obj[17]; + if(caml_obj_tag(a) !== _af_) /*<>*/ return Stdlib_Array[7].call(null, a) /*<>*/ ; var n = /*<>*/ a.length - 1, arr = /*<>*/ caml_array_make(n, dummy), - _af_ = /*<>*/ n - 1 | 0; - if(_af_ >= 0){ + _ae_ = /*<>*/ n - 1 | 0; + if(_ae_ >= 0){ var i = 0; for(;;){ var v = /*<>*/ a[i + 1]; /*<>*/ arr[i + 1] = v; - var _ah_ = /*<>*/ i + 1 | 0; - if(_af_ === i) break; - i = _ah_; + var _ag_ = /*<>*/ i + 1 | 0; + if(_ae_ === i) break; + i = _ag_; } } /*<>*/ return arr; @@ -32862,10 +32813,10 @@ _c_ = CamlinternalOO[3].call(null, _b_, "x"); CamlinternalOO[17].call(null, _b_); _a_[1] = - function(_af_){ - var _ae_ = /*<>*/ CamlinternalOO[24].call(null, 0, _b_); - _ae_[_c_ + 1] = _af_[2]; - return _ae_; + function(_ae_){ + var _ad_ = /*<>*/ CamlinternalOO[24].call(null, 0, _b_); + _ad_[_c_ + 1] = _ae_[2]; + return _ad_; }; } var @@ -32983,15 +32934,17 @@ 0, [11, " to ", [4, 0, 0, 0, [11, " occurred during iteration", 0]]]]]]], "Dynarray.%s: a length change from %d to %d occurred during iteration"]; - function check_same_length(length_a, f, expected){ - var _ae_ = /*<>*/ expected !== length_a ? 1 : 0; - return _ae_ + function check_same_length(f, param, expected){ + var + length_a = /*<>*/ param[1], + _ad_ = /*<>*/ expected !== length_a ? 1 : 0; + return _ad_ ? /*<>*/ caml_call3 (Stdlib_Printf[10].call(null, Stdlib[1], _m_), f, expected, length_a) - : _ae_ /*<>*/ ; + : _ad_ /*<>*/ ; } var _l_ = @@ -33003,14 +32956,14 @@ function check_valid_length(length, arr){ var capacity = /*<>*/ arr.length - 1, - _ae_ = /*<>*/ capacity < length ? 1 : 0; - return _ae_ + _ad_ = /*<>*/ capacity < length ? 1 : 0; + return _ad_ ? /*<>*/ caml_call3 (Stdlib_Printf[10].call(null, Stdlib[1], _l_), invalid_state_description, length, capacity) - : _ae_ /*<>*/ ; + : _ad_ /*<>*/ ; } function unsafe_get(arr, dummy, i, length){ var v = /*<>*/ arr[i + 1]; @@ -33024,8 +32977,8 @@ function make(n, x){ /*<>*/ if(n < 0) /*<>*/ negative_length_requested("make", n); - var _ae_ = /*<>*/ Stdlib_Obj[16]; - if(caml_obj_tag(x) !== _ae_) + var _ad_ = /*<>*/ Stdlib_Obj[16]; + if(caml_obj_tag(x) !== _ad_) var arr$0 = /*<>*/ /*<>*/ caml_array_make @@ -33042,31 +32995,29 @@ /*<>*/ negative_length_requested("init", n); var arr = /*<>*/ caml_array_make(n, dummy), - _ad_ = /*<>*/ n - 1 | 0; - if(_ad_ >= 0){ + _ac_ = /*<>*/ n - 1 | 0; + if(_ac_ >= 0){ var i = 0; for(;;){ var v = /*<>*/ caml_call1(f, i); /*<>*/ arr[i + 1] = v; - var _ae_ = /*<>*/ i + 1 | 0; - if(_ad_ === i) break; - i = _ae_; + var _ad_ = /*<>*/ i + 1 | 0; + if(_ac_ === i) break; + i = _ad_; } } /*<>*/ return [0, n, arr, dummy]; /*<>*/ } - function get$0(length, _ad_, dummy, i){ - var v = /*<>*/ caml_check_bound(_ad_, i)[i + 1]; - /*<>*/ return v === dummy - ? i - < length - ? /*<>*/ missing_element(i, length) - : /*<>*/ index_out_of_bounds - ("get", i, length) - : v /*<>*/ ; - } - function get(_ac_, _ad_){ - /*<>*/ return get$0(_ac_[1], _ac_[2], _ac_[3], _ad_) /*<>*/ ; + function get(param, i){ + var + v = /*<>*/ caml_check_bound(param[2], i)[i + 1], + dummy = /*<>*/ param[3]; + /*<>*/ if(v !== dummy) + /*<>*/ return v; + var length = /*<>*/ param[1]; + /*<>*/ return i < length + ? /*<>*/ missing_element(i, length) + : /*<>*/ index_out_of_bounds("get", i, length) /*<>*/ ; } function set(param, i, x){ var length = /*<>*/ param[1], arr = param[2]; @@ -33079,8 +33030,8 @@ = x, 0) /*<>*/ ; } - function length(_ac_){ - /*<>*/ return _ac_[1]; + function length(param){ + /*<>*/ return param[1]; /*<>*/ } function is_empty(param){ /*<>*/ return 0 === param[1] ? 1 : 0; @@ -33324,8 +33275,8 @@ src_arr = /*<>*/ src[2], dst_arr = /*<>*/ dst[2], cst_blit = /*<>*/ "blit"; - /*<>*/ check_same_length(src[1], cst_blit, src_length); - /*<>*/ check_same_length(dst[1], cst_blit, dst_length); + /*<>*/ check_same_length(cst_blit, src, src_length); + /*<>*/ check_same_length(cst_blit, dst, dst_length); /*<>*/ if(dst_length < (dst_pos + blit_length | 0)) /*<>*/ dst[1] = dst_pos + blit_length | 0; var dst_dummy = /*<>*/ dst[3], src_dummy = src[3]; @@ -33415,9 +33366,7 @@ [11, ") in target dynarray of length ", [4, 0, 0, 0, 0]]]]]], "Dynarray.blit: invalid target region (%d..%d) in target dynarray of length %d"]; function blit(src, src_pos, dst, dst_pos, len){ - var - src_length = /*<>*/ src[1], - dst_length = /*<>*/ dst[1]; + var src_length = /*<>*/ src[1], dst_length = dst[1]; /*<>*/ if(len < 0) /*<>*/ caml_call1 (Stdlib_Printf[10].call(null, Stdlib[1], _s_), len); @@ -33491,16 +33440,16 @@ : ( /*<>*/ blit_assume_room (b, 0, length_b, param, length_a, length_a, length_b), /*<>*/ check_same_length - (b[1], cst_append, length_b), + (cst_append, b, length_b), 1) /*<>*/ ; } function append(a, b){ - var length_b = /*<>*/ b[1]; + var length_b = /*<>*/ b[1]; /*<>*/ if(append_if_room(a, b, length_b)) /*<>*/ return 0; /*<>*/ for(;;){ /*<>*/ ensure_extra_capacity(a, length_b); - /*<>*/ check_same_length(b[1], cst_append, length_b); + /*<>*/ check_same_length(cst_append, b, length_b); var _K_ = /*<>*/ 1 - append_if_room(a, b, length_b); /*<>*/ if(! _K_) return _K_; } @@ -33519,7 +33468,7 @@ i = _K_; } } - /*<>*/ return check_same_length(a[1], f, length) /*<>*/ ; + /*<>*/ return check_same_length(f, a, length) /*<>*/ ; } function iter$0(k, a){ /*<>*/ return iter("iter", k, a) /*<>*/ ; @@ -33538,7 +33487,7 @@ i = _J_; } } - /*<>*/ return check_same_length(a[1], "iteri", length) /*<>*/ ; + /*<>*/ return check_same_length("iteri", a, length) /*<>*/ ; } function map(f, a){ var length = /*<>*/ a[1], arr_in = a[2], dummy = a[3]; @@ -33560,7 +33509,7 @@ i = _I_; } } - /*<>*/ check_same_length(a[1], "map", length); + /*<>*/ check_same_length("map", a, length); /*<>*/ return [0, length, arr_out, dummy]; /*<>*/ } function mapi(f, a){ @@ -33584,7 +33533,7 @@ i = _H_; } } - /*<>*/ check_same_length(a[1], "mapi", length); + /*<>*/ check_same_length("mapi", a, length); /*<>*/ return [0, length, arr_out, dummy]; /*<>*/ } function fold_left(f, acc, a){ @@ -33605,7 +33554,7 @@ i = _G_; } } - /*<>*/ check_same_length(a[1], "fold_left", length); + /*<>*/ check_same_length("fold_left", a, length); /*<>*/ return r$0; /*<>*/ } function fold_right(f, a, acc){ @@ -33626,7 +33575,7 @@ i = _E_; } } - /*<>*/ check_same_length(a[1], "fold_right", length); + /*<>*/ check_same_length("fold_right", a, length); /*<>*/ return r$0; /*<>*/ } function exists(p, a){ @@ -33648,7 +33597,7 @@ } var res = _C_; } - /*<>*/ check_same_length(a[1], "exists", length); + /*<>*/ check_same_length("exists", a, length); /*<>*/ return res; } /*<>*/ } @@ -33671,7 +33620,7 @@ } var res = _C_; } - /*<>*/ check_same_length(a[1], "for_all", length); + /*<>*/ check_same_length("for_all", a, length); /*<>*/ return res; } /*<>*/ } @@ -33708,10 +33657,8 @@ } var res = _B_; } - /*<>*/ check_same_length - (a1[1], cst_exists2, length1); - /*<>*/ check_same_length - (a2[1], cst_exists2, length2); + /*<>*/ check_same_length(cst_exists2, a1, length1); + /*<>*/ check_same_length(cst_exists2, a2, length2); /*<>*/ return res; } /*<>*/ } @@ -33748,10 +33695,8 @@ } var res = _A_; } - /*<>*/ check_same_length - (a1[1], cst_for_all2, length1); - /*<>*/ check_same_length - (a2[1], cst_for_all2, length2); + /*<>*/ check_same_length(cst_for_all2, a1, length1); + /*<>*/ check_same_length(cst_for_all2, a2, length2); /*<>*/ return res; } /*<>*/ } @@ -33801,7 +33746,7 @@ } var res = /*<>*/ 1; } - /*<>*/ check_same_length(a[1], "mem", length); + /*<>*/ check_same_length("mem", a, length); /*<>*/ return res; } /*<>*/ } @@ -33820,7 +33765,7 @@ } var res = /*<>*/ 1; } - /*<>*/ check_same_length(a[1], "memq", length); + /*<>*/ check_same_length("memq", a, length); /*<>*/ return res; } /*<>*/ } @@ -33840,7 +33785,7 @@ } var res = /*<>*/ [0, x]; } - /*<>*/ check_same_length(a[1], "find_opt", length); + /*<>*/ check_same_length("find_opt", a, length); /*<>*/ return res; } /*<>*/ } @@ -33860,7 +33805,7 @@ } var res = /*<>*/ [0, i]; } - /*<>*/ check_same_length(a[1], "find_index", length); + /*<>*/ check_same_length("find_index", a, length); /*<>*/ return res; } /*<>*/ } @@ -33883,7 +33828,7 @@ } var res = /*<>*/ r; } - /*<>*/ check_same_length(a[1], "find_map", length); + /*<>*/ check_same_length("find_map", a, length); /*<>*/ return res; } /*<>*/ } @@ -33908,7 +33853,7 @@ } var res = /*<>*/ r; } - /*<>*/ check_same_length(a[1], "find_mapi", length); + /*<>*/ check_same_length("find_mapi", a, length); /*<>*/ return res; } /*<>*/ } @@ -33944,8 +33889,8 @@ var r = _z_; } var cst_equal = /*<>*/ "equal"; - /*<>*/ check_same_length(a1[1], cst_equal, length); - /*<>*/ check_same_length(a2[1], cst_equal, length); + /*<>*/ check_same_length(cst_equal, a1, length); + /*<>*/ check_same_length(cst_equal, a2, length); /*<>*/ return r; } /*<>*/ } @@ -33981,8 +33926,8 @@ var r = /*<>*/ c; } var cst_compare = /*<>*/ "compare"; - /*<>*/ check_same_length(a1[1], cst_compare, length); - /*<>*/ check_same_length(a2[1], cst_compare, length); + /*<>*/ check_same_length(cst_compare, a1, length); + /*<>*/ check_same_length(cst_compare, a2, length); /*<>*/ return r; } /*<>*/ } @@ -34003,7 +33948,7 @@ function(i){ /*<>*/ return unsafe_get(arr, dummy, i, length) /*<>*/ ; }); - /*<>*/ check_same_length(a[1], "to_array", length); + /*<>*/ check_same_length("to_array", a, length); /*<>*/ return res; /*<>*/ } function of_list(li){ @@ -34037,7 +33982,7 @@ i = _z_; } } - /*<>*/ check_same_length(a[1], "to_list", length); + /*<>*/ check_same_length("to_list", a, length); /*<>*/ return l$0; /*<>*/ } function of_seq(seq){ @@ -34050,7 +33995,7 @@ /*<>*/ check_valid_length(length, arr); function aux(i){ /*<>*/ return function(param){ - /*<>*/ check_same_length(a[1], "to_seq", length); + /*<>*/ check_same_length("to_seq", a, length); /*<>*/ if(length <= i) /*<>*/ return 0; var v = /*<>*/ unsafe_get(arr, dummy, i, length); @@ -34063,7 +34008,7 @@ /*<>*/ return function(param){ /*<>*/ if(a[1] <= i) /*<>*/ return 0; - var v = /*<>*/ get$0(a[1], a[2], a[3], i); + var v = /*<>*/ get(a, i); /*<>*/ return [0, v, aux(i + 1 | 0)] /*<>*/ ; /*<>*/ } /*<>*/ ; /*<>*/ } /*<>*/ return aux(0) /*<>*/ ; @@ -34073,8 +34018,7 @@ /*<>*/ check_valid_length(length, arr); function aux(i){ /*<>*/ return function(param){ - /*<>*/ check_same_length - (a[1], "to_seq_rev", length); + /*<>*/ check_same_length("to_seq_rev", a, length); /*<>*/ if(0 > i) /*<>*/ return 0; var v = /*<>*/ unsafe_get(arr, dummy, i, length); @@ -34089,7 +34033,7 @@ /*<>*/ return 0; /*<>*/ if(a[1] <= i) /*<>*/ return aux(a[1] - 1 | 0)(0) /*<>*/ ; - var v = /*<>*/ get$0(a[1], a[2], a[3], i); + var v = /*<>*/ get(a, i); /*<>*/ return [0, v, aux(i - 1 | 0)] /*<>*/ ; /*<>*/ } /*<>*/ ; /*<>*/ } /*<>*/ return aux(a[1] - 1 | 0) /*<>*/ ; @@ -34458,9 +34402,9 @@ var Stdlib_Pqueue = [0, - function(_b_){ + function(E){ var - compare = _b_[1], + compare = E[1], include = MakeMinPoly([0, compare]), create = include[1], length = include[2], @@ -34673,8 +34617,8 @@ _w_ = Stdlib_Array[7].call(null, h[2]); /*<>*/ return [0, h[1], _w_, _v_, _u_]; /*<>*/ } - function key_index(_u_, hkey){ - /*<>*/ return hkey & (_u_.length - 2 | 0); + function key_index(h, hkey){ + /*<>*/ return hkey & (h[2].length - 2 | 0); /*<>*/ } function clean(h){ function do_bucket(param$0){ @@ -34731,7 +34675,7 @@ data = param[2], hkey = param[1]; /*<>*/ insert_bucket(rest); - var nidx = /*<>*/ key_index(h[2], hkey); + var nidx = /*<>*/ key_index(h, hkey); /*<>*/ ndata[nidx + 1] = [0, hkey, data, caml_check_bound(ndata, nidx)[nidx + 1]]; /*<>*/ }, @@ -34755,7 +34699,7 @@ function add(h, key, info){ var hkey = /*<>*/ caml_call2(H[2], h[3], key), - i = /*<>*/ key_index(h[2], hkey), + i = /*<>*/ key_index(h, hkey), container = /*<>*/ caml_call2(H[1], key, info), bucket = /*<>*/ [0, @@ -34798,7 +34742,7 @@ } /*<>*/ } var - i = /*<>*/ key_index(h[2], hkey), + i = /*<>*/ key_index(h, hkey), _p_ = /*<>*/ /*<>*/ remove_bucket ( /*<>*/ caml_check_bound(h[2], i)[i + 1]); @@ -34808,7 +34752,7 @@ function find(h, key){ var hkey = /*<>*/ caml_call2(H[2], h[3], key), - _p_ = /*<>*/ key_index(h[2], hkey), + _p_ = /*<>*/ key_index(h, hkey), param = /*<>*/ /*<>*/ caml_check_bound (h[2], _p_) @@ -34841,7 +34785,7 @@ function find_opt(h, key){ var hkey = /*<>*/ caml_call2(H[2], h[3], key), - _p_ = /*<>*/ key_index(h[2], hkey), + _p_ = /*<>*/ key_index(h, hkey), param = /*<>*/ /*<>*/ caml_check_bound (h[2], _p_) @@ -34895,7 +34839,7 @@ } } /*<>*/ } - var _p_ = /*<>*/ key_index(h[2], hkey); + var _p_ = /*<>*/ key_index(h, hkey); /*<>*/ return /*<>*/ find_in_bucket ( /*<>*/ caml_check_bound(h[2], _p_) [_p_ + 1]) /*<>*/ ; @@ -34903,7 +34847,7 @@ function replace(h, key, info){ var hkey = /*<>*/ caml_call2(H[2], h[3], key), - i = /*<>*/ key_index(h[2], hkey), + i = /*<>*/ key_index(h, hkey), l = /*<>*/ caml_check_bound(h[2], i)[i + 1]; /*<>*/ try{ var param = l; @@ -34944,7 +34888,7 @@ function mem(h, key){ var hkey = /*<>*/ caml_call2(H[2], h[3], key), - _o_ = /*<>*/ key_index(h[2], hkey), + _o_ = /*<>*/ key_index(h, hkey), param = /*<>*/ /*<>*/ caml_check_bound (h[2], _o_) @@ -37491,7 +37435,7 @@ //# unitInfo: Provides: Stdlib__MoreLabels //# unitInfo: Requires: Stdlib__Hashtbl, Stdlib__Map, Stdlib__Set -//# shape: Stdlib__MoreLabels:[[F(2),F(1),F(1),F(1),F(3),F(2),F(2),F(2),F(2),F(2),F(3),F(2),F(2),F(3),F(1)*,F(1),F(1)*,F(2),F(1),F(1)*,F(1)*->F(1),F(1)*->F(1),F(2),F(2),F(1),F(1)*,F(1)*,F(1)*,F(2)*,F(3)*,F(4)*],[F(1)*],[F(1)*]] +//# shape: Stdlib__MoreLabels:[[F(2),F(1),F(1),F(1),F(3),F(2),F(2),F(2),F(2),F(2),F(3),F(2),F(2),F(3),F(1)*,F(1),F(1)*,F(2),F(1),F(1)*->F(1),F(1)*->F(1),F(1)*->F(1),F(2),F(2),F(1),F(1)*,F(1)*,F(1)*,F(2)*,F(3)*,F(4)*],[F(1)*],[F(1)*]] (function (globalThis){ "use strict"; From ef2f6c674980c5e5e5b2678a28a8dda4640abda4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Vouillon?= Date: Thu, 5 Mar 2026 13:08:57 +0100 Subject: [PATCH 9/9] fixup! Add List.find_index --- compiler/lib/stdlib.ml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/compiler/lib/stdlib.ml b/compiler/lib/stdlib.ml index 560aa64771..bb48792a87 100644 --- a/compiler/lib/stdlib.ml +++ b/compiler/lib/stdlib.ml @@ -201,10 +201,10 @@ module List = struct let append l1 l2 = count_append l1 l2 0 [@@if ocaml_version < (5, 1, 0)] - let find_index p = + let find_index ~f = let rec aux i = function | [] -> None - | a :: l -> if p a then Some i else aux (i + 1) l + | a :: l -> if f a then Some i else aux (i + 1) l in aux 0 [@@if ocaml_version < (5, 1, 0)]