From 2c968766b5bb57041694782ae2ffcda82ea5fe38 Mon Sep 17 00:00:00 2001 From: letouzey Date: Thu, 22 Sep 2011 19:08:47 +0000 Subject: Hash-consing: attempt to stop hash-consing separately constr in declare.ml Now that Yann has provided a better hashing mechanism for constr, it might be interesting to (re-?)activate a global hash-consing of constr. Earlier, specific hash-cons tables were created at each call to hcons_constant_declaration. According to Hugo, this was meant to avoid blow-up in at least contrib Pocklington. This contrib seems to behave nicely now with global hashconsing (thanks Yann ;-). We'll see tomorrow what impact this has on other contribs. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14487 85f007b7-540e-0410-9357-904b9bb8a0f7 --- kernel/names.ml | 2 +- kernel/names.mli | 2 +- kernel/term.ml | 2 +- kernel/univ.ml | 6 +----- 4 files changed, 4 insertions(+), 8 deletions(-) (limited to 'kernel') diff --git a/kernel/names.ml b/kernel/names.ml index c85389434f..d926779430 100644 --- a/kernel/names.ml +++ b/kernel/names.ml @@ -389,7 +389,7 @@ module Hcn = Hashcons.Make( let hash x = Hashtbl.hash (fst x) end) -let hcons_names () = +let hcons_names = let hstring = Hashcons.simple_hcons Hashcons.Hstring.f () in let hident = hstring in let hname = Hashcons.simple_hcons Hname.f hident in diff --git a/kernel/names.mli b/kernel/names.mli index 8a2e892ef2..38fcebafa5 100644 --- a/kernel/names.mli +++ b/kernel/names.mli @@ -197,7 +197,7 @@ val eq_egr : evaluable_global_reference -> evaluable_global_reference -> bool (** Hash-consing *) -val hcons_names : unit -> +val hcons_names : (constant -> constant) * (mutual_inductive -> mutual_inductive) * (dir_path -> dir_path) * (name -> name) * (identifier -> identifier) diff --git a/kernel/term.ml b/kernel/term.ml index 3281154202..4c6c8e3388 100644 --- a/kernel/term.ml +++ b/kernel/term.ml @@ -1407,7 +1407,7 @@ let hcons_constr (hcon,hkn,hdir,hname,hident) = let htcci = Hashcons.simple_hcons Htype.f (hcci,hsortscci) in (hcci,htcci) -let (hcons1_constr, hcons1_types) = hcons_constr (hcons_names()) +let (hcons1_constr, hcons1_types) = hcons_constr hcons_names (*******) diff --git a/kernel/univ.ml b/kernel/univ.ml index c68021a209..ba14771aab 100644 --- a/kernel/univ.ml +++ b/kernel/univ.ml @@ -859,11 +859,7 @@ module Huniv = end) let hcons1_univlevel = - (* Beware: it is important to run the next line at launch-time - since it creates internal hash-tables. - We could/should probably share the other calls to [hcons_names] - in Term and Declare *) - let _,_,hdir,_,_ = Names.hcons_names() in + let _,_,hdir,_,_ = Names.hcons_names in Hashcons.simple_hcons Hunivlevel.f hdir let hcons1_univ = Hashcons.simple_hcons Huniv.f hcons1_univlevel -- cgit v1.2.3