minor performance tuning: more compact persistent data;
authorwenzelm
Tue, 11 Apr 2023 11:16:33 +0200
changeset 77819 d2645d3ad9e9
parent 77818 d1ad58e5fc95
child 77820 15edec78869c
minor performance tuning: more compact persistent data;
src/Pure/General/name_space.ML
src/Pure/thm_deps.ML
--- a/src/Pure/General/name_space.ML	Tue Apr 11 10:46:43 2023 +0200
+++ b/src/Pure/General/name_space.ML	Tue Apr 11 11:16:33 2023 +0200
@@ -11,7 +11,7 @@
 sig
   type entry =
    {concealed: bool,
-    group: serial option,
+    group: serial,
     theory_long_name: string,
     pos: Position.T,
     serial: serial}
@@ -108,7 +108,7 @@
 
 type entry =
  {concealed: bool,
-  group: serial option,
+  group: serial,
   theory_long_name: string,
   pos: Position.T,
   serial: serial};
@@ -329,7 +329,7 @@
  {scopes: Binding.scope list,
   restricted: (bool * Binding.scope) option,
   concealed: bool,
-  group: serial option,
+  group: serial,
   theory_long_name: string,
   path: (string * bool) list};
 
@@ -379,11 +379,11 @@
   map_naming (fn (scopes, restricted, concealed, group, _, path) =>
     (scopes, restricted, concealed, group, theory_long_name, path));
 
-fun get_group (Naming {group, ...}) = group;
+fun get_group (Naming {group, ...}) = if group = 0 then NONE else SOME group;
 
 fun set_group group =
   map_naming (fn (scopes, restricted, concealed, _, theory_long_name, path) =>
-    (scopes, restricted, concealed, group, theory_long_name, path));
+    (scopes, restricted, concealed, the_default 0 group, theory_long_name, path));
 
 fun new_group naming = set_group (SOME (serial ())) naming;
 val reset_group = set_group NONE;
@@ -405,7 +405,7 @@
 fun qualified_path mandatory binding = map_path (fn path =>
   path @ Binding.path_of (Binding.qualify_name mandatory binding ""));
 
-val global_naming = make_naming ([], NONE, false, NONE, "", []);
+val global_naming = make_naming ([], NONE, false, 0, "", []);
 val local_naming = global_naming |> add_path Long_Name.localN;
 
 
--- a/src/Pure/thm_deps.ML	Tue Apr 11 10:46:43 2023 +0200
+++ b/src/Pure/thm_deps.ML	Tue Apr 11 11:16:33 2023 +0200
@@ -121,23 +121,17 @@
     (*groups containing at least one used theorem*)
     val used_groups =
       Inttab.build (new_thms |> fold (fn (a, (_, _, group)) =>
-        if is_unused a then I
-        else
-          (case group of
-            NONE => I
-          | SOME grp => Inttab.update (grp, ()))));
+        if is_unused a orelse group = 0 then I
+        else Inttab.update (group, ())));
 
     val (thms', _) = fold (fn (a, (th, concealed, group)) => fn q as (thms, seen_groups) =>
       if not concealed andalso
         (* FIXME replace by robust treatment of thm groups *)
         Thm.legacy_get_kind th = Thm.theoremK andalso is_unused a
       then
-        (case group of
-           NONE => ((a, th) :: thms, seen_groups)
-         | SOME grp =>
-             if Inttab.defined used_groups grp orelse
-               Inttab.defined seen_groups grp then q
-             else ((a, th) :: thms, Inttab.update (grp, ()) seen_groups))
+        (if group = 0 then ((a, th) :: thms, seen_groups)
+         else if Inttab.defined used_groups group orelse Inttab.defined seen_groups group then q
+         else ((a, th) :: thms, Inttab.update (group, ()) seen_groups))
       else q) new_thms ([], Inttab.empty);
   in rev thms' end;