aboutsummaryrefslogtreecommitdiffhomepage
path: root/kernel
diff options
context:
space:
mode:
authorGravatar Maxime Dénès <mail@maximedenes.fr>2018-06-04 16:15:27 +0200
committerGravatar Maxime Dénès <mail@maximedenes.fr>2018-06-04 16:15:27 +0200
commitf9e94fdcf74af274cb85be594ccfd353a63b048a (patch)
tree4e878e24bae03a166d6b5c2f7f8a1c6f671983ef /kernel
parent0a829c6ac232b0ea786716709b0d01c707548089 (diff)
parent5e310fc0456bc5123ab5aef255d61dde6ee8f4d7 (diff)
Merge PR #7418: Actually take advantage of the normalization status of kernel closures.
Diffstat (limited to 'kernel')
-rw-r--r--kernel/cClosure.ml7
1 files changed, 6 insertions, 1 deletions
diff --git a/kernel/cClosure.ml b/kernel/cClosure.ml
index 4da5f0f38..1d8861cbc 100644
--- a/kernel/cClosure.ml
+++ b/kernel/cClosure.ml
@@ -1051,7 +1051,12 @@ let norm_val info tab v =
let inject c = mk_clos (subs_id 0) c
-let whd_stack infos tab m stk =
+let whd_stack infos tab m stk = match m.norm with
+| Whnf | Norm ->
+ (** No need to perform [kni] nor to unlock updates because
+ every head subterm of [m] is [Whnf] or [Norm] *)
+ knh infos m stk
+| Red | Cstr ->
let k = kni infos tab m stk in
let () = if !share then ignore (fapp_stack k) in (* to unlock Zupdates! *)
k