X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=src%2Fl2JIT.ml;h=90be37ff671634c7efccf16168edf9b1804bbbf6;hb=d7c0e0d3ae22f01c69f0352a25db3eaaab02406f;hp=7a73d1233ef0cca466a6104cedd21c87fb1a11d8;hpb=dc9e9ba2f50ce881c3a77743663829d661363d51;p=SXSI%2Fxpathcomp.git diff --git a/src/l2JIT.ml b/src/l2JIT.ml index 7a73d12..90be37f 100644 --- a/src/l2JIT.ml +++ b/src/l2JIT.ml @@ -86,21 +86,22 @@ let jump_stat_summary fmt = type opcode = - | CACHE of unit - | RETURN of unit + | CACHE + | RETURN | LEFT of Translist.t * jump | RIGHT of Translist.t * jump | BOTH of Translist.t * jump * jump type t = opcode Cache.Lvl2.t -let dummy = CACHE() + +let dummy = CACHE let print_opcode fmt o = match o with - | CACHE _ -> fprintf fmt "CACHE()" - | RETURN _ -> fprintf fmt "RETURN ()" + | CACHE -> fprintf fmt "CACHE" + | RETURN -> fprintf fmt "RETURN" | LEFT (tl, j) -> fprintf fmt "LEFT(\n[%a], %a)" Translist.print tl print_jump j | RIGHT (tl, j) -> fprintf fmt "RIGHT(\n[%a], %a)" Translist.print tl print_jump j | BOTH (tl, j1, j2) -> fprintf fmt "BOTH(\n[%a], %a, %a)" Translist.print tl print_jump j1 print_jump j2 - +(* let print_cache fmt d = let c = Cache.Lvl2.to_array d in Array.iteri begin fun tag a -> @@ -114,9 +115,9 @@ let print_cache fmt d = fprintf fmt "---------------------------\n%!" end end c - -let create () = Cache.Lvl2.create 1024 dummy - +*) +let create () = Cache.Lvl2.create 4096 dummy +(* let stats fmt c = let d = Cache.Lvl2.to_array c in let len = Array.fold_left (fun acc a -> Array.length a + acc) 0 d in @@ -133,10 +134,11 @@ let stats fmt c = len lvl1 lvl2 (Ocaml.size_kb d); fprintf fmt "%s" "L2JIT Content:\n"; print_cache fmt c +*) -let find t tag set = Cache.Lvl2.find t tag (Uid.to_int set.StateSet.Node.id) +let find t tag set = Cache.Lvl2.find t (Uid.to_int set.StateSet.Node.id) tag -let add t tag set v = Cache.Lvl2.add t tag (Uid.to_int set.StateSet.Node.id) v +let add t tag set v = Cache.Lvl2.add t (Uid.to_int set.StateSet.Node.id) tag v let collect_trans tag ((a_t, a_s1, a_s2) as acc) (labels, tr) = if TagSet.mem tag labels @@ -224,7 +226,7 @@ let compile cache2 auto tree tag states = let op = let empty_s1 = StateSet.is_empty states1 in let empty_s2 = StateSet.is_empty states2 in - if empty_s1 && empty_s2 then RETURN () + if empty_s1 && empty_s2 then RETURN else if empty_s1 then RIGHT (tr_list, compute_jump auto tree tag states2 DIR_RIGHT) @@ -247,7 +249,7 @@ let compile cache2 auto tree tag states = op let get_transitions = function - | CACHE _ | RETURN _ -> failwith "get_transitions" + | CACHE | RETURN -> failwith "get_transitions" | LEFT (tr, _) | RIGHT (tr, _) | BOTH (tr, _, _) -> tr