X-Git-Url: http://git.nguyen.vg/gitweb/?p=tatoo.git;a=blobdiff_plain;f=src%2Fauto%2Feval.ml;h=cc9ed71074436f9d9acf4f20ed538f8c9d6f77dd;hp=5c346d00b44f19e88806c42d311c1148ebaa4fd4;hb=9b3611f8b650edf4183169a9c2c4317e13be536d;hpb=738218592e41da4ceb46f4dba41f292a60ba1f7b diff --git a/src/auto/eval.ml b/src/auto/eval.ml index 5c346d0..cc9ed71 100644 --- a/src/auto/eval.ml +++ b/src/auto/eval.ml @@ -14,7 +14,7 @@ (***********************************************************************) (* - Time-stamp: + Time-stamp: *) INCLUDE "utils.ml" @@ -27,12 +27,10 @@ module Make (T : Tree.Sig.S) : end = struct - type cache = (int, StateSet.t) Hashtbl.t - let get c t n = - try Hashtbl.find c (T.preorder t n) - with Not_found -> StateSet.empty + type cache = StateSet.t Cache.N1.t + let get c t n = Cache.N1.find c (T.preorder t n) - let set c t n v = Hashtbl.replace c (T.preorder t n) v + let set c t n v = Cache.N1.add c (T.preorder t n) v module Info = struct type t = { is_left : bool; @@ -95,7 +93,7 @@ module Make (T : Tree.Sig.S) : (acct, StateSet.add q accs) else (Ata.TransList.cons trs acct, accs) - ) ltrs (Ata.TransList.nil, ss) + ) ltrs (Ata.TransList.nil, ss) in Cache.N6.add cache i j k l m n res; res else @@ -176,7 +174,7 @@ module Make (T : Tree.Sig.S) : loop node [] let eval auto tree node = - let cache = Hashtbl.create 511 in + let cache = Cache.N1.create (T.size tree) StateSet.empty in let redo = ref true in let iter = ref 0 in while !redo do