aboutsummaryrefslogtreecommitdiff
path: root/kernel/declareops.mli
diff options
context:
space:
mode:
authorPierre-Marie Pédrot2015-11-13 14:41:14 +0100
committerPierre-Marie Pédrot2016-03-10 12:31:03 +0100
commitf1a8b27ffe0df4f207b0cfaac067c8201d07ae16 (patch)
treea1413973782bb922d179cfffdbe42c85841b2270 /kernel/declareops.mli
parent2788c86e6a3c089aa7450a7768f8444470e35901 (diff)
Hashconsing modules.
Modules inserted into the environment were not hashconsed, leading to an important redundancy, especially in module signatures that are always fully expanded. This patch divides by two the size and memory consumption of module-heavy files by hashconsing modules before putting them in the environment. Note that this is not a real hashconsing, in the sense that we only hashcons the inner terms contained in the modules, that are only mapped over. Compilation time should globally decrease, even though some files definining a lot of modules may see their compilation time increase. Some remaining overhead may persist, as for instance module inclusion is not hashconsed.
Diffstat (limited to 'kernel/declareops.mli')
-rw-r--r--kernel/declareops.mli1
1 files changed, 1 insertions, 0 deletions
diff --git a/kernel/declareops.mli b/kernel/declareops.mli
index 86ba29b8b7..ad2b5d0a6c 100644
--- a/kernel/declareops.mli
+++ b/kernel/declareops.mli
@@ -77,3 +77,4 @@ val inductive_context : mutual_inductive_body -> universe_context
val hcons_const_body : constant_body -> constant_body
val hcons_mind : mutual_inductive_body -> mutual_inductive_body
+val hcons_module_body : module_body -> module_body