[svn] r6331: nemerle/trunk/ncc: STATELESS-TODO passes.n typing/StaticTyVar.n typing/Typer-DelayedTyping.n ...

malekith svnadmin at nemerle.org
Wed May 24 20:49:08 CEST 2006


Log:
A few static deaths.

Author: malekith
Date: Wed May 24 20:49:04 2006
New Revision: 6331

Modified:
   nemerle/trunk/ncc/STATELESS-TODO
   nemerle/trunk/ncc/passes.n
   nemerle/trunk/ncc/typing/StaticTyVar.n
   nemerle/trunk/ncc/typing/Typer-DelayedTyping.n
   nemerle/trunk/ncc/typing/Typer-OverloadSelection.n
   nemerle/trunk/ncc/typing/Typer.n

Modified: nemerle/trunk/ncc/STATELESS-TODO
==============================================================================
--- nemerle/trunk/ncc/STATELESS-TODO	(original)
+++ nemerle/trunk/ncc/STATELESS-TODO	Wed May 24 20:49:04 2006
@@ -16,9 +16,5 @@
 - TypesManagers.global_nr
 - Location...
 - LexerFile.store_comments
-- StaticTyVar.current_id
 - TyVar...
-- Typer.DelayedTyping.current_id
-- Typer.OverloadSelection.better_type_cache
-- Typer.*_macro
 

Modified: nemerle/trunk/ncc/passes.n
==============================================================================
--- nemerle/trunk/ncc/passes.n	(original)
+++ nemerle/trunk/ncc/passes.n	Wed May 24 20:49:04 2006
@@ -56,6 +56,15 @@
     
     mutable pb_killed : bool;
 
+    #region ,,static'' data from other modules
+    internal mutable StaticTyVarId : int;
+    internal mutable Typer_DT_Id : int;
+    internal Typer_BetterTypeCache : Hashtable [TypeInfo * TypeInfo, bool] = Hashtable ();
+    internal mutable Typer_checked_macro : NamespaceTree.Node;
+    internal mutable Typer_unchecked_macro : NamespaceTree.Node;
+    internal mutable Typer_yield_macro : NamespaceTree.Node;
+    #endregion
+
     /// initialize pipelines with default values
     public this (options : CompilationOptions)
     {

Modified: nemerle/trunk/ncc/typing/StaticTyVar.n
==============================================================================
--- nemerle/trunk/ncc/typing/StaticTyVar.n	(original)
+++ nemerle/trunk/ncc/typing/StaticTyVar.n	Wed May 24 20:49:04 2006
@@ -98,18 +98,18 @@
     {
       Manager = man;
       this.name = name;
-      id = current_id;
-      ++current_id;
+      id = Manager.StaticTyVarId;
+      ++Manager.StaticTyVarId;
     }
 
     private this (other : StaticTyVar)
     {
       this.name = other.name;
       this.special = other.special;
-      this.id = current_id;
       this.Manager = other.Manager;
       
-      ++current_id;
+      id = Manager.StaticTyVarId;
+      ++Manager.StaticTyVarId;
     }
       
     public this (man : ManagerClass, name : string, gtype : System.Type) {
@@ -260,7 +260,5 @@
 
     internal mutable current_type : TypeInfo = null;
     internal mutable current_method : IMethod = null;
-
-    static mutable current_id : int;    
   }
 }

Modified: nemerle/trunk/ncc/typing/Typer-DelayedTyping.n
==============================================================================
--- nemerle/trunk/ncc/typing/Typer-DelayedTyping.n	(original)
+++ nemerle/trunk/ncc/typing/Typer-DelayedTyping.n	Wed May 24 20:49:04 2006
@@ -81,7 +81,6 @@
       local_context : LocalContext;
       expected : TyVar;
       mutable generic_specifier : list [TyVar];
-      static mutable current_id : int;
 
       [Record]
       public variant Kind
@@ -188,8 +187,8 @@
       {
         typer = t;
         local_context = t.local_context;
-        current_id++;
-        id = current_id;
+        Manager.Typer_DT_Id++;
+        id = Manager.Typer_DT_Id;
         expected = e;
         SetKind (k)
       }

Modified: nemerle/trunk/ncc/typing/Typer-OverloadSelection.n
==============================================================================
--- nemerle/trunk/ncc/typing/Typer-OverloadSelection.n	(original)
+++ nemerle/trunk/ncc/typing/Typer-OverloadSelection.n	Wed May 24 20:49:04 2006
@@ -51,7 +51,6 @@
     }
 
 
-    static better_type_cache : Hashtable [TypeInfo * TypeInfo, bool] = Hashtable ();
     IsBetterType (t1 : TyVar, t2 : TyVar) : bool
     {
       def real_check (t1, t2) {
@@ -102,6 +101,7 @@
         real_check (t1, t2)
       } else {
         def ids = (tc1, tc2);
+        def better_type_cache = Manager.Typer_BetterTypeCache;
         unless (better_type_cache.Contains (ids))
           better_type_cache [ids] = 
             real_check (t1, t2) ||

Modified: nemerle/trunk/ncc/typing/Typer.n
==============================================================================
--- nemerle/trunk/ncc/typing/Typer.n	(original)
+++ nemerle/trunk/ncc/typing/Typer.n	Wed May 24 20:49:04 2006
@@ -2619,15 +2619,6 @@
 
       List.Iter (binary, binary_operators.Add);
       List.Iter (unary, unary_operators.Add);
-
-      ManagerClass.Instance.OnInit += Clear;
-    }
-
-    static Clear () : void
-    {
-      better_type_cache.Clear ();
-      checked_macro = null;
-      unchecked_macro = null;
     }
 
     static IsOperator (name : string) : bool
@@ -3056,11 +3047,6 @@
 
 
     #region Special macros
-    static mutable checked_macro : NamespaceTree.Node;
-    static mutable unchecked_macro : NamespaceTree.Node;
-    static mutable yield_macro : NamespaceTree.Node;
-    
-
     TypeBlock (name : PT.Name, body : PT.PExpr, expected : TyVar) : TExpr
     {
       PushLocals ();
@@ -3096,24 +3082,24 @@
 
     InterceptSpecialMacros (expr : PT.PExpr, expected : TyVar) : TExpr
     {
-      when (checked_macro == null) {
-        checked_macro = Manager.NameTree.ExactPath (["Nemerle", "Core", "checked"]);
-        unchecked_macro = Manager.NameTree.ExactPath (["Nemerle", "Core", "unchecked"]);
-        yield_macro = Manager.NameTree.ExactPath (["Nemerle", "Core", "yield"]);
+      when (Manager.Typer_checked_macro == null) {
+        Manager.Typer_checked_macro = Manager.NameTree.ExactPath (["Nemerle", "Core", "checked"]);
+        Manager.Typer_unchecked_macro = Manager.NameTree.ExactPath (["Nemerle", "Core", "unchecked"]);
+        Manager.Typer_yield_macro = Manager.NameTree.ExactPath (["Nemerle", "Core", "yield"]);
       }
       
       match (expr) {
         | PT.PExpr.MacroCall (_, ns, [PT.SyntaxElement.Expression (expr)]) =>
-          if (ns.Equals (checked_macro) ||
-              ns.Equals (unchecked_macro)) {
+          if (ns.Equals (Manager.Typer_checked_macro) ||
+              ns.Equals (Manager.Typer_unchecked_macro)) {
             PushLocals ();
             try {
-              local_context = local_context.WithChecked (ns.Equals (checked_macro));
+              local_context = local_context.WithChecked (ns.Equals (Manager.Typer_checked_macro));
               TypeExpr (expr, expected);
             } finally {
               PopLocals ();
             }
-          } else if (ns.Equals (yield_macro)) {
+          } else if (ns.Equals (Manager.Typer_yield_macro)) {
             when (! inside_yielding_function) {
               _ = GetYieldType ();
               log (TYPING, "throwing STY");



More information about the svn mailing list