aboutsummaryrefslogtreecommitdiffhomepage
path: root/library/global.ml
diff options
context:
space:
mode:
authorGravatar gareuselesinge <gareuselesinge@85f007b7-540e-0410-9357-904b9bb8a0f7>2013-08-08 18:52:47 +0000
committerGravatar gareuselesinge <gareuselesinge@85f007b7-540e-0410-9357-904b9bb8a0f7>2013-08-08 18:52:47 +0000
commit80aba8d52c650ef8e4ada694c20bf12c15849694 (patch)
tree74a6bba0cf4661a2b1319c7b94e6a4f165becadc /library/global.ml
parentb9d45d500d6cb12494bd6cb41bbe29a9bbb9ffd3 (diff)
enhance marshallable option for freeze (minor TODO in safe_typing)
It can be: `Yes Full data, in a state that can be marshalled `No Full data, good for Undo only `Shallow Partial data, marshallable, good for slave processes git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@16682 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'library/global.ml')
-rw-r--r--library/global.ml9
1 files changed, 7 insertions, 2 deletions
diff --git a/library/global.ml b/library/global.ml
index a0528a624..22b69e4f2 100644
--- a/library/global.ml
+++ b/library/global.ml
@@ -27,10 +27,15 @@ let global_env = ref empty_environment
let join_safe_environment () =
global_env := Safe_typing.join_safe_environment !global_env
+let prune_safe_environment env = Safe_typing.prune_safe_environment env
+(* XXX TODO pass args so that these functions can stop at the current
+ * file boundaries *)
let () =
Summary.declare_summary "Global environment"
- { Summary.freeze_function = (fun b ->
- if b then join_safe_environment (); !global_env);
+ { Summary.freeze_function = (function
+ | `Yes -> join_safe_environment (); !global_env
+ | `No -> !global_env
+ | `Shallow -> prune_safe_environment !global_env);
unfreeze_function = (fun fr -> global_env := fr);
init_function = (fun () -> global_env := empty_environment) }