aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorletouzey2013-08-20 08:22:39 +0000
committerletouzey2013-08-20 08:22:39 +0000
commit6f53ffee4a1c85ac07e82c65d31de0d2a367566b (patch)
tree2cb3509fd2ddc52c0be43d6c3b6cd117880bfb36
parentff9c15a415f45f0edd173010e99d826e3b1504d4 (diff)
Attempt to restore hash-consing of opaque terms
Without this, the stdlib vo files are +30% larger git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@16707 85f007b7-540e-0410-9357-904b9bb8a0f7
-rw-r--r--kernel/declareops.ml7
1 files changed, 3 insertions, 4 deletions
diff --git a/kernel/declareops.ml b/kernel/declareops.ml
index ac3aad15e7..76d9876c49 100644
--- a/kernel/declareops.ml
+++ b/kernel/declareops.ml
@@ -89,10 +89,9 @@ let hcons_const_def = function
let constr = force l_constr in
Def (from_val (Term.hcons_constr constr))
| OpaqueDef lc ->
- if Future.is_val lc then
- let constr = force_opaque (Future.force lc) in
- OpaqueDef (Future.from_val (opaque_from_val (Term.hcons_constr constr)))
- else OpaqueDef lc
+ OpaqueDef
+ (Future.chain ~pure:true lc
+ (fun lc -> opaque_from_val (Term.hcons_constr (force_opaque lc))))
let hcons_const_body cb =
{ cb with