Author: atsushi
Date: 2006-01-16 12:17:15 -0500 (Mon, 16 Jan 2006)
New Revision: 55643

Modified:
   trunk/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng.Derivative/ChangeLog
   
trunk/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng.Derivative/RdpPatterns.cs
   trunk/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng.Derivative/Util.cs
   trunk/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng/ChangeLog
   
trunk/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng/RelaxngValidatingReader.cs
Log:
2006-01-16  Atsushi Enomoto <[EMAIL PROTECTED]>

        * RelaxngValidatingReader.cs : just keep previous TextDeriv() result
          for each pattern; they are mostly not reused. It makes validator
          about 30% faster in certain validation and reduces memory use.

        * RdpPatterns.cs : RdpOneOrMore.EmptyTextDeriv() should be "override".
          RdpList.EmptyTextDeriv() (which was also virtual incorrectly) was 
          removed since the code was in wrong assumption.
        * Util.cs : debug string now contains data and dataExcept info.



Modified: trunk/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng/ChangeLog
===================================================================
--- trunk/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng/ChangeLog   
2006-01-16 17:02:52 UTC (rev 55642)
+++ trunk/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng/ChangeLog   
2006-01-16 17:17:15 UTC (rev 55643)
@@ -1,3 +1,9 @@
+2006-01-16  Atsushi Enomoto <[EMAIL PROTECTED]>
+
+       * RelaxngValidatingReader.cs : just keep previous TextDeriv() result
+         for each pattern; they are mostly not reused. It makes validator
+         about 30% faster in certain validation and reduces memory use.
+
 2006-01-13  Atsushi Enomoto <[EMAIL PROTECTED]>
 
        * RelaxngValidatingReader.cs : actually using Hashtable of Hashtable

Modified: 
trunk/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng/RelaxngValidatingReader.cs
===================================================================
--- 
trunk/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng/RelaxngValidatingReader.cs
  2006-01-16 17:02:52 UTC (rev 55642)
+++ 
trunk/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng/RelaxngValidatingReader.cs
  2006-01-16 17:17:15 UTC (rev 55643)
@@ -549,6 +549,7 @@
                Hashtable mixedText = new Hashtable ();
                Hashtable emptyText = new Hashtable ();
                Hashtable text = new Hashtable ();
+               Hashtable text_value = new Hashtable ();
                Hashtable qnames = new Hashtable ();
 
                enum DerivativeType {
@@ -669,17 +670,11 @@
                        if (p.IsContextDependent)
                                return p.TextDeriv (value, context);
 
-                       Hashtable h = text [p] as Hashtable;
-                       if (h == null) {
-                               h = new Hashtable ();
-                               text [p] = h;
-                       }
-
-                       RdpPattern m = h [value] as RdpPattern;
-                       if (m != null)
-                               return m;
-                       m = p.TextDeriv (value, context, this);
-                       h [value] = m;
+                       if (text_value [p] == value)
+                               return text [p] as RdpPattern;
+                       RdpPattern m = p.TextDeriv (value, context, this);
+                       text_value [p] = value;
+                       text [p] = m;
                        return m;
                }
 

Modified: 
trunk/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng.Derivative/ChangeLog
===================================================================
--- 
trunk/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng.Derivative/ChangeLog    
    2006-01-16 17:02:52 UTC (rev 55642)
+++ 
trunk/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng.Derivative/ChangeLog    
    2006-01-16 17:17:15 UTC (rev 55643)
@@ -1,3 +1,10 @@
+2006-01-16  Atsushi Enomoto <[EMAIL PROTECTED]>
+
+       * RdpPatterns.cs : RdpOneOrMore.EmptyTextDeriv() should be "override".
+         RdpList.EmptyTextDeriv() (which was also virtual incorrectly) was 
+         removed since the code was in wrong assumption.
+       * Util.cs : debug string now contains data and dataExcept info.
+
 2006-01-15  Atsushi Enomoto <[EMAIL PROTECTED]>
 
        * RdpPatterns.cs : lazy evaluate Group branches. If left hand is

Modified: 
trunk/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng.Derivative/RdpPatterns.cs
===================================================================
--- 
trunk/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng.Derivative/RdpPatterns.cs
   2006-01-16 17:02:52 UTC (rev 55642)
+++ 
trunk/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng.Derivative/RdpPatterns.cs
   2006-01-16 17:17:15 UTC (rev 55643)
@@ -1481,7 +1481,7 @@
                                p : p.Group (this.Choice (RdpEmpty.Instance));
                }
 
-               internal virtual RdpPattern EmptyTextDeriv (MemoizationStore 
memo)
+               internal override RdpPattern EmptyTextDeriv (MemoizationStore 
memo)
                {
                        RdpPattern p = memo.EmptyTextDeriv (Child);
                        return p.PatternType == RelaxngPatternType.NotAllowed ?
@@ -1639,11 +1639,6 @@
                                return RdpNotAllowed.Instance;
                }
 
-               internal virtual RdpPattern EmptyTextDeriv (MemoizationStore 
memo)
-               {
-                       return RdpEmpty.Instance;
-               }
-
                internal override void CheckConstraints (bool attribute, bool 
oneOrMore, bool oneOrMoreGroup, bool oneOrMoreInterleave, bool list, bool 
dataExcept)
                {
                        if (list)

Modified: 
trunk/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng.Derivative/Util.cs
===================================================================
--- trunk/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng.Derivative/Util.cs  
2006-01-16 17:02:52 UTC (rev 55642)
+++ trunk/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng.Derivative/Util.cs  
2006-01-16 17:17:15 UTC (rev 55643)
@@ -91,6 +91,22 @@
                                intl = DebugRdpPattern (b.LValue, 
visitedPattern) +
                                        DebugRdpPattern (b.RValue, 
visitedPattern);
 
+                       RdpData data = p as RdpData;
+                       if (data != null)
+                               intl = String.Format ("name={0},ns={1},type={2} 
{3}",
+                                       data.Datatype.LocalName,
+                                       data.Datatype.NamespaceURI,
+                                       data.Datatype.GetType (),
+                                       data is RdpDataExcept ? DebugRdpPattern 
(((RdpDataExcept) data).Except, visitedPattern) : String.Empty);
+
+                       RdpValue value = p as RdpValue;
+                       if (value != null)
+                               intl = String.Format 
("name={0},ns={1},value={2} type={3}",
+                                       value.Datatype.LocalName,
+                                       value.Datatype.NamespaceURI,
+                                       value.Value,
+                                       value.Datatype.GetType ());
+
                        RdpElement el = p as RdpElement;
                        if (el != null)
                                intl = DebugNameClass (el.NameClass) +

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to