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