aboutsummaryrefslogtreecommitdiff
path: root/kernel/nativelambda.ml
diff options
context:
space:
mode:
authorMaxime Dénès2014-04-09 15:36:10 -0400
committerMaxime Dénès2014-04-09 15:36:10 -0400
commit286ab375eb8a56de0becd7600ca249c91667e1c7 (patch)
treea71a8fb8dc4b6fd86b95caf40936e1b8ea38c0b3 /kernel/nativelambda.ml
parentd6f0694465ba46e07d895124e6ecb676e23ee8e8 (diff)
Fix exponential behavior in native compiler with retroknowledge.
Diffstat (limited to 'kernel/nativelambda.ml')
-rw-r--r--kernel/nativelambda.ml6
1 files changed, 4 insertions, 2 deletions
diff --git a/kernel/nativelambda.ml b/kernel/nativelambda.ml
index acf1154660..8ea28ddff1 100644
--- a/kernel/nativelambda.ml
+++ b/kernel/nativelambda.ml
@@ -647,9 +647,11 @@ and lambda_of_app env sigma f args =
let cb = lookup_constant kn !global_env in
(try
let prefix = get_const_prefix !global_env kn in
+ (* We delay the compilation of arguments to avoid an exponential behavior *)
+ let f = Retroknowledge.get_native_compiling_info
+ (!global_env).retroknowledge (mkConst kn) prefix in
let args = lambda_of_args env sigma 0 args in
- Retroknowledge.get_native_compiling_info
- (!global_env).retroknowledge (mkConst kn) prefix args
+ f args
with Not_found ->
begin match cb.const_body with
| Def csubst ->