diff options
author | gareuselesinge <gareuselesinge@85f007b7-540e-0410-9357-904b9bb8a0f7> | 2013-05-06 13:40:58 +0000 |
---|---|---|
committer | gareuselesinge <gareuselesinge@85f007b7-540e-0410-9357-904b9bb8a0f7> | 2013-05-06 13:40:58 +0000 |
commit | 9fa14555270fa8f2368a7f4df1510bd2937d25ec (patch) | |
tree | 5ca417f25ef2f0c2425820494f0a097b12f82b50 /library/states.ml | |
parent | 683afb998ceb8302f3d9ec1d69cfe1ee86816c13 (diff) |
States: frozen states can hold closures
States.freeze takes ~marshallable:bool, so that (only) when we want to
marshal data to disk/network we can ask the freeze functions of the
summary to force lazy values. The flag is propagated to Lib and Summary.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@16478 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'library/states.ml')
-rw-r--r-- | library/states.ml | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/library/states.ml b/library/states.ml index 8b8193981..1fd3fa2e5 100644 --- a/library/states.ml +++ b/library/states.ml @@ -10,8 +10,8 @@ open System type state = Lib.frozen * Summary.frozen -let freeze () = - (Lib.freeze(), Summary.freeze_summaries()) +let freeze ~marshallable = + (Lib.freeze ~marshallable, Summary.freeze_summaries ~marshallable) let unfreeze (fl,fs) = Lib.unfreeze fl; @@ -23,7 +23,7 @@ let (extern_state,intern_state) = extern_intern Coq_config.state_magic_number in (fun s -> let s = ensure_suffix s in - raw_extern s (freeze())), + raw_extern s (freeze ~marshallable:true)), (fun s -> let s = ensure_suffix s in let paths = Loadpath.get_paths () in @@ -33,7 +33,7 @@ let (extern_state,intern_state) = (* Rollback. *) let with_heavy_rollback f h x = - let st = freeze () in + let st = freeze ~marshallable:false in try f x with reraise -> @@ -44,8 +44,10 @@ let without_rollback f h x = with reraise -> raise (h reraise) let with_state_protection f x = - let st = freeze () in + let st = freeze ~marshallable:false in try let a = f x in unfreeze st; a with reraise -> (unfreeze st; raise reraise) + + |