aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre-Marie Pédrot2016-05-12 18:10:34 +0200
committerPierre-Marie Pédrot2016-05-12 19:00:54 +0200
commit123504209e35b98ac14956ec6950cb7cd8b0089b (patch)
treeae2e3b31a7fa0dcded2862d18a486bee0c984d40
parentc5de2c3a2aa96c468e7583577141a93e359a9baf (diff)
Small optimization in evar resolution.
Instead of rebuilding a whole set of evars just to make a typeclass filter, we use the source evarmap.
-rw-r--r--pretyping/pretyping.ml5
1 files changed, 2 insertions, 3 deletions
diff --git a/pretyping/pretyping.ml b/pretyping/pretyping.ml
index b33084a423..d6f8f0de5f 100644
--- a/pretyping/pretyping.ml
+++ b/pretyping/pretyping.ml
@@ -184,8 +184,7 @@ type inference_flags = {
}
let frozen_holes (sigma, sigma') =
- let fold evk _ accu = Evar.Set.add evk accu in
- Evd.fold_undefined fold sigma Evar.Set.empty
+ (); fun ev -> Evar.Map.mem ev (Evd.undefined_map sigma)
let pending_holes (sigma, sigma') =
let fold evk _ accu =
@@ -194,7 +193,7 @@ let pending_holes (sigma, sigma') =
Evd.fold_undefined fold sigma' Evar.Set.empty
let apply_typeclasses env evdref frozen fail_evar =
- let filter_frozen evk = Evar.Set.mem evk frozen in
+ let filter_frozen = frozen in
evdref := Typeclasses.resolve_typeclasses
~filter:(if Flags.is_program_mode ()
then (fun evk evi -> Typeclasses.no_goals_or_obligations evk evi && not (filter_frozen evk))