diff options
| author | Guillaume Melquiond | 2021-02-12 18:11:52 +0100 |
|---|---|---|
| committer | Guillaume Melquiond | 2021-02-23 16:02:05 +0100 |
| commit | f89f0eb4717b64f10bdd0a0edc9e93b949bcb33d (patch) | |
| tree | 305c16a4266ac19f206d4091dbb1925b2bca1a36 /kernel/vmbytegen.mli | |
| parent | a2938972537389b9813794147412f51494f48dd1 (diff) | |
Normalize evars during bytecode compilation (fix #13841).
Otherwise, the interpreter sees already unified evars as accumulators
rather than actual constants, thus preventing the computations from
progressing.
This was caused by 6b61b63bb8626827708024cbea1312a703a54124, which removed
evar normalization. The effect went unnoticed because the computed term is
still convertible to the reduced term, except that it is the lazy
machinery that ends up reducing it, rather than the bytecode one.
So, performances became abysmal, seemingly at random.
Diffstat (limited to 'kernel/vmbytegen.mli')
| -rw-r--r-- | kernel/vmbytegen.mli | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/kernel/vmbytegen.mli b/kernel/vmbytegen.mli index aef7ac3d6b..c724cad5ec 100644 --- a/kernel/vmbytegen.mli +++ b/kernel/vmbytegen.mli @@ -15,8 +15,10 @@ open Declarations open Environ (** Should only be used for monomorphic terms *) -val compile : fail_on_error:bool -> - ?universes:int -> env -> constr -> (bytecodes * bytecodes * fv) option +val compile : + fail_on_error:bool -> ?universes:int -> + env -> (existential -> constr option) -> constr -> + (bytecodes * bytecodes * fv) option (** init, fun, fv *) val compile_constant_body : fail_on_error:bool -> |
