aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorppedrot2013-10-29 22:03:15 +0000
committerppedrot2013-10-29 22:03:15 +0000
commita35d9b2c4b374b9e5cbc6f302e4d3aac32dd0d78 (patch)
tree3fac24fd8f2b19be34073b0abf83880bb5a55d36
parentcfaae467fb84f8f7f63445b2efca23e8535e9a30 (diff)
Optimization in unification: when checking that the head of a term is an
evar or a meta, don't reconstruct the whole term. This hopefully saves a lot of useless allocations and computing time. I may have slightly changed the heuristic though, as only evars in front of applications where recognized as such, whereas now this pass through cases and fixpoints. I am walking on thin ice, but the test-suite was OK... git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@16956 85f007b7-540e-0410-9357-904b9bb8a0f7
-rw-r--r--pretyping/unification.ml2
1 files changed, 1 insertions, 1 deletions
diff --git a/pretyping/unification.ml b/pretyping/unification.ml
index ff89553a21..9c21446da4 100644
--- a/pretyping/unification.ml
+++ b/pretyping/unification.ml
@@ -970,7 +970,7 @@ let w_unify_meta_types env ?(flags=default_unify_flags) evd =
types of metavars are unifiable with the types of their instances *)
let head_app sigma m =
- fst (decompose_appvect (whd_nored sigma m))
+ fst (whd_nored_state sigma (m, empty_stack))
let check_types env flags (sigma,_,_ as subst) m n =
if isEvar_or_Meta (head_app sigma m) then