diff options
| author | Emilio Jesus Gallego Arias | 2017-05-28 00:35:57 +0200 |
|---|---|---|
| committer | Emilio Jesus Gallego Arias | 2017-10-17 02:19:11 +0200 |
| commit | 280be11cb4706e039cf4e9f68a5ae38b0aef9340 (patch) | |
| tree | e1e1a1a8465076e0fe6e95566f14d7ea0f960813 /vernac/command.ml | |
| parent | 19bbc3fd946555aa1fa1fc23d805a4eb3d13bc45 (diff) | |
[stm] Remove state-handling from Futures.
We make Vernacentries.interp functional wrt state, and thus remove
state-handling from `Future`. Now, a future needs a closure if it
wants to preserve state.
Consequently, `Vernacentries.interp` takes a state, and returns the
new one.
We don't explicitly thread the state in the STM yet, instead, we
recover the state that was used before and pass it explicitly to
`interp`.
I have tested the commit with the files in interactive, but we aware
that some new bugs may appear or old ones be made more apparent.
However, I am confident that this step will improve our understanding
of bugs.
In some cases, we perform a bit more summary wrapping/unwrapping. This
will go away in future commits; informal timings for a full make:
- master:
real 2m11,027s
user 8m30,904s
sys 1m0,000s
- no_futures:
real 2m8,474s
user 8m34,380s
sys 0m59,156s
Diffstat (limited to 'vernac/command.ml')
| -rw-r--r-- | vernac/command.ml | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/vernac/command.ml b/vernac/command.ml index a1a87d54e0..f095a5d6cf 100644 --- a/vernac/command.ml +++ b/vernac/command.ml @@ -79,7 +79,7 @@ let red_constant_entry n ce sigma = function let (_, c) = redfun env sigma c in EConstr.Unsafe.to_constr c in - { ce with const_entry_body = Future.chain ~pure:true proof_out + { ce with const_entry_body = Future.chain proof_out (fun ((body,ctx),eff) -> (under_binders env sigma redfun n body,ctx),eff) } let warn_implicits_in_term = |
