aboutsummaryrefslogtreecommitdiffhomepage
path: root/kernel/vars.ml
diff options
context:
space:
mode:
authorGravatar Pierre-Marie Pédrot <pierre-marie.pedrot@inria.fr>2014-02-20 15:38:17 +0100
committerGravatar Pierre-Marie Pédrot <pierre-marie.pedrot@inria.fr>2014-02-20 15:38:17 +0100
commit3568e0b7b8728b1eb4aa1b036717933a490e8287 (patch)
tree091b6f68439edb41963647050378739fa1c0c89e /kernel/vars.ml
parentc08b210e5929efdc16a7fee56037e5f14b81e8b2 (diff)
Optimization in kernel/vars.ml: directly allocate a fixed-size block in the
subst1 case.
Diffstat (limited to 'kernel/vars.ml')
-rw-r--r--kernel/vars.ml23
1 files changed, 13 insertions, 10 deletions
diff --git a/kernel/vars.ml b/kernel/vars.ml
index ca1d31c0b..cb22a2e2f 100644
--- a/kernel/vars.ml
+++ b/kernel/vars.ml
@@ -152,16 +152,19 @@ let make_subst = function
subst
let substnl laml n c = substn_many (make_subst laml) n c
-let substl laml c = substnl laml 0 c
-let subst1 lam c = substl [lam] c
-
-let substnl_decl laml k r = map_rel_declaration (substnl laml k) r
-let substl_decl laml r = substnl_decl laml 0 r
-let subst1_decl lam r = substl_decl [lam] r
-
-let substnl_named_decl laml k d = map_named_declaration (substnl laml k) d
-let substl_named_decl laml d = substnl_named_decl laml 0 d
-let subst1_named_decl lam d = substl_named_decl [lam] d
+let substl laml c = substn_many (make_subst laml) 0 c
+let subst1 lam c = substn_many [|make_substituend lam|] 0 c
+
+let substnl_decl laml k r = map_rel_declaration (fun c -> substnl laml k c) r
+let substl_decl laml r = map_rel_declaration (fun c -> substnl laml 0 c) r
+let subst1_decl lam r = map_rel_declaration (fun c -> subst1 lam c) r
+
+let substnl_named_decl laml k d =
+ map_named_declaration (fun c -> substnl laml k c) d
+let substl_named_decl laml d =
+ map_named_declaration (fun c -> substnl laml 0 c) d
+let subst1_named_decl lam d =
+ map_named_declaration (fun c -> subst1 lam c) d
(* (thin_val sigma) removes identity substitutions from sigma *)