[svn] r6332: nemerle/trunk/ncc: CompilationOptions.n STATELESS-TODO completion/CodeCompletionEngine.n gene...

malekith svnadmin at nemerle.org
Wed May 24 21:16:35 CEST 2006


Log:
Yet more static killing.

Author: malekith
Date: Wed May 24 21:16:34 2006
New Revision: 6332

Modified:
   nemerle/trunk/ncc/CompilationOptions.n
   nemerle/trunk/ncc/STATELESS-TODO
   nemerle/trunk/ncc/completion/CodeCompletionEngine.n
   nemerle/trunk/ncc/generation/Typer3.n
   nemerle/trunk/ncc/hierarchy/TypeBuilder.n
   nemerle/trunk/ncc/misc/Stats.n
   nemerle/trunk/ncc/parsing/Utility.n
   nemerle/trunk/ncc/passes.n
   nemerle/trunk/ncc/typing/TyVar.n

Modified: nemerle/trunk/ncc/CompilationOptions.n
==============================================================================
--- nemerle/trunk/ncc/CompilationOptions.n	(original)
+++ nemerle/trunk/ncc/CompilationOptions.n	Wed May 24 21:16:34 2006
@@ -59,6 +59,7 @@
     // do not unload external libraries in consecutive compilations
     public mutable PersistentLibraries : bool; 
     public mutable MainClass : string;
+    public mutable DoPrintStats : bool;
 
     public mutable LinkedResources : list [string];
     public mutable EmbeddedResources : list [string];
@@ -119,6 +120,7 @@
       PersistentLibraries = false;
       DumpDecisionTree = false;
       IndentationSyntax = false;
+      DoPrintStats = false;
       LinkedResources = [];
       EmbeddedResources = [];
       ReferencedLibraries = [];
@@ -594,7 +596,7 @@
                                }),
 
         Getopt.CliOption.Flag (name = "-stats", aliases = [], help = "NOHELP",
-                               handler = fun () { Stats.DoPrintStats = true; }),
+                               handler = fun () { this.DoPrintStats = true; }),
 
         Getopt.CliOption.String (name = "-main", 
                                  aliases = [], 

Modified: nemerle/trunk/ncc/STATELESS-TODO
==============================================================================
--- nemerle/trunk/ncc/STATELESS-TODO	(original)
+++ nemerle/trunk/ncc/STATELESS-TODO	Wed May 24 21:16:34 2006
@@ -1,7 +1,5 @@
 Modules:
 - MacroClasses.implicit_ctx_name
-- Stats
-- Util.current_id
 - Message
 - Location_stack
 - MacroColorizer
@@ -16,5 +14,3 @@
 - TypesManagers.global_nr
 - Location...
 - LexerFile.store_comments
-- TyVar...
-

Modified: nemerle/trunk/ncc/completion/CodeCompletionEngine.n
==============================================================================
--- nemerle/trunk/ncc/completion/CodeCompletionEngine.n	(original)
+++ nemerle/trunk/ncc/completion/CodeCompletionEngine.n	Wed May 24 21:16:34 2006
@@ -236,7 +236,6 @@
               this.LibrariesManager = LibraryReferenceManager (this, Options.LibraryPaths);     
             this.NameTree.namespace_tree.Clear ();
 
-            Util.Init ();
             this.Solver = Solver (this);
       
             Options.Clear();
@@ -266,7 +265,6 @@
               this.NameTree.Init ();
             when (!Options.PersistentLibraries || this.LibrariesManager == null)
               this.LibrariesManager = LibraryReferenceManager (this, Options.LibraryPaths);     
-            Util.Init ();
 
             this.Solver = Solver (this);
       

Modified: nemerle/trunk/ncc/generation/Typer3.n
==============================================================================
--- nemerle/trunk/ncc/generation/Typer3.n	(original)
+++ nemerle/trunk/ncc/generation/Typer3.n	Wed May 24 21:16:34 2006
@@ -878,7 +878,7 @@
       //Message.Debug ($"closure for $(current_local_fun.name) $(current_local_fun.closure_vars)");
       if (current_local_fun.closure_vars.IsEmpty) []
       else {
-        Stats.FunctionClosures++;
+        Manager.Stats.FunctionClosures++;
         
         def (new_tp, subst) = CopyFunTyparms (add_class_tyvars = true);
 
@@ -1241,7 +1241,7 @@
 
     EmitFunctionalValue (fn : Fun_header, children : Queue [Typer3]) : TExpr
     {
-      Stats.FirstClassFunctions++;
+      Manager.Stats.FirstClassFunctions++;
       def closures = fn.used_closures;
 
       Util.cassert (fn.typarms.IsEmpty, $"should be handled in T2, $(fn.name)");

Modified: nemerle/trunk/ncc/hierarchy/TypeBuilder.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/TypeBuilder.n	(original)
+++ nemerle/trunk/ncc/hierarchy/TypeBuilder.n	Wed May 24 21:16:34 2006
@@ -102,7 +102,7 @@
 
     this.TyManager = manager;
 
-    Stats.AllTypeBuilders++;
+    Manager.Stats.AllTypeBuilders++;
     
     this.pt_tydecl = td;
     this.pt_name = td.ParsedName;

Modified: nemerle/trunk/ncc/misc/Stats.n
==============================================================================
--- nemerle/trunk/ncc/misc/Stats.n	(original)
+++ nemerle/trunk/ncc/misc/Stats.n	Wed May 24 21:16:34 2006
@@ -1,9 +1,9 @@
 
 namespace Nemerle.Compiler 
 {
-  module Stats 
+  [ManagerAccess (ManagerClass.Instance)]
+  class StatsClass
   {
-    public mutable DoPrintStats = false;
     public mutable PrintTemps = false;
 
     public mutable AllTypeBuilders : int;
@@ -42,7 +42,7 @@
         }
         IO.print ("------------- END STATS ---------------\n");
       }
-      when (DoPrintStats)
+      when (Manager.Options.DoPrintStats)
         dump ();
     }
   }

Modified: nemerle/trunk/ncc/parsing/Utility.n
==============================================================================
--- nemerle/trunk/ncc/parsing/Utility.n	(original)
+++ nemerle/trunk/ncc/parsing/Utility.n	Wed May 24 21:16:34 2006
@@ -54,18 +54,10 @@
 
   public module Util 
   {
-    mutable current_id : int;
-
-    public Init () : void
-    {
-      current_id = 0;
-
-    }
-
     public next_id () : int
     {
-      current_id = current_id + 1;
-      current_id
+      ManagerClass.Instance.Util_Id++;
+      ManagerClass.Instance.Util_Id
     }
 
     public ice['a] (msg : string) : 'a { throw ICE (msg) }

Modified: nemerle/trunk/ncc/passes.n
==============================================================================
--- nemerle/trunk/ncc/passes.n	(original)
+++ nemerle/trunk/ncc/passes.n	Wed May 24 21:16:34 2006
@@ -38,6 +38,7 @@
     public SystemTypeCache : SystemTypeClass;
     public InternalType : InternalTypeClass;
     internal AttributeCompiler : AttributeCompilerClass;
+    internal Stats : StatsClass;
 
     internal mutable Solver : Solver;
     public mutable Hierarchy : TypesManager;
@@ -63,6 +64,24 @@
     internal mutable Typer_checked_macro : NamespaceTree.Node;
     internal mutable Typer_unchecked_macro : NamespaceTree.Node;
     internal mutable Typer_yield_macro : NamespaceTree.Node;
+    internal mutable TyVar_reuse_queue : TyVar;
+    internal mutable TyVar_Id : int;
+    internal mutable Util_Id : int;
+
+
+    // won't be needed when we use this object only once
+    KillStatics () : void
+    {
+      Typer_checked_macro = null;
+      Typer_unchecked_macro = null;
+      Typer_yield_macro = null;
+      Typer_BetterTypeCache.Clear ();
+      StaticTyVarId = 0;
+      Typer_DT_Id = 0;
+      TyVar_Id = 0;
+      TyVar_reuse_queue = null;
+      Util_Id = 0;
+    }
     #endregion
 
     /// initialize pipelines with default values
@@ -75,6 +94,7 @@
       InternalType = InternalTypeClass (this);
       SystemTypeCache = SystemTypeClass (this);
       AttributeCompiler = AttributeCompilerClass (this);
+      Stats = StatsClass ();
     }
     
     
@@ -156,6 +176,7 @@
     }
     
     internal InitCompiler () : void {
+      KillStatics ();
       Stats.Reset ();
       Message.Init ();
       MacroColorizer.Clear ();
@@ -168,7 +189,6 @@
         MacrosRegistry = MacroRegistry (this);
       when (shouldCreate (LibrariesManager))
         LibrariesManager = LibraryReferenceManager (this, Options.LibraryPaths);     
-      Util.Init ();
       Options.Validate ();
       this.Solver = Solver (this);
       if (Options.XmlDocOutputFileName != null)

Modified: nemerle/trunk/ncc/typing/TyVar.n
==============================================================================
--- nemerle/trunk/ncc/typing/TyVar.n	(original)
+++ nemerle/trunk/ncc/typing/TyVar.n	Wed May 24 21:16:34 2006
@@ -931,8 +931,8 @@
           }
           def store = next;
           CopyFrom (next);
-          store.next = reuse_queue;
-          reuse_queue = store;
+          store.next = Manager.TyVar_reuse_queue;
+          Manager.TyVar_reuse_queue = store;
           loop (Manager.Solver.serial_stack_top)
         } else if (Manager.Solver.serial_stack [i] == serial) {}
         else loop (i - 1)
@@ -953,16 +953,14 @@
     }
 
 
-    static mutable reuse_queue : TyVar;
-
-
     static CopyTyVar (tv : TyVar) : TyVar
     {
-      if (reuse_queue == null)
+      def Manager = ManagerClass.Instance;
+      if (Manager.TyVar_reuse_queue == null)
         TyVar (tv)
       else {
-        def res = reuse_queue;
-        reuse_queue = reuse_queue.next;
+        def res = Manager.TyVar_reuse_queue;
+        Manager.TyVar_reuse_queue = Manager.TyVar_reuse_queue.next;
         res.flags = Flags.None;
         res.CopyFrom (tv);
         res
@@ -1041,13 +1039,11 @@
 
 
     #region Constructors (only internal)
-    static mutable current_id : int;
-
     internal this (man : ManagerClass)
     {
       Manager = man;
-      id = current_id;
-      ++current_id;
+      id = Manager.TyVar_Id;
+      ++Manager.TyVar_Id;
       serial = Manager.Solver.top_serial;
       flags = Flags.IsFresh;
     }
@@ -1057,11 +1053,6 @@
       Manager = other.Manager;
       CopyFrom (other);
     }
-
-    static this ()
-    {
-      ManagerClass.Instance.OnInit += fun () { reuse_queue = null; }
-    }
     #endregion
 
 



More information about the svn mailing list