Please review the patch. BTW, in HtmlTextWriter.cs we changed internal structs (e.g. RenderStyle) to be the classes and not structs - this in order to resolve heavy performance problem in our implementation of initialization of arrays of structs. May be the better idea is to change also original mono code - since in this case we can avoid additional "splitting" of code between standard and J2EE configuration. I think impact of this won't be too high - from perspective of memory consumption and performance. Thanks, Ilya. |
Index: ChangeLog =================================================================== --- ChangeLog (revision 45568) +++ ChangeLog (working copy) @@ -1,3 +1,13 @@ +2005-06-08 Ilya Kharmatsky <ilyak-at-mainsoft.com> + + * HtmlTextWriter.cs: Internal structs such as TagStackEntry, + TagInforamation, RenderStyle etc. changed in J2EE configuration + to be classes (due to heavy performance impact). All code changes + are related to this issue. + * ObjectStateFormatter.cs: Added TARGET_JVM directives, which + allow to skip Assembly related work in J2EE configuration (due to + limitations of Assembly API in Grasshopper). + 2005-06-06 Lluis Sanchez Gual <[EMAIL PROTECTED]> * Control.cs: Added new DataBind() overload for 2.0. The old Index: ObjectStateFormatter.cs =================================================================== --- ObjectStateFormatter.cs (revision 45568) +++ ObjectStateFormatter.cs (working copy) @@ -721,9 +721,10 @@ } else { w.Write (PrimaryId); w.Write (((Type) o).FullName); - +#if !TARGET_J2EE // We should cache the name of the assembly w.Write (((Type) o).Assembly.FullName); +#endif } } @@ -731,9 +732,13 @@ { if (token == PrimaryId) { string type = r.ReadString (); +#if !TARGET_J2EE string assembly = r.ReadString (); Type t = Assembly.Load (assembly).GetType (type); +#else + Type t = Type.GetType(type); +#endif ctx.CacheItem (t); return t; } else { Index: HtmlTextWriter.cs =================================================================== --- HtmlTextWriter.cs (revision 45568) +++ HtmlTextWriter.cs (working copy) @@ -306,6 +306,9 @@ _attrList = rAttrArr; } RenderAttribute rAttr; +#if TARGET_J2EE + rAttr = new RenderAttribute(); +#endif rAttr.name = name; rAttr.value = value; rAttr.key = key; @@ -328,6 +331,9 @@ _styleList = rAttrArr; } RenderStyle rAttr; +#if TARGET_J2EE + rAttr = new RenderStyle(); +#endif rAttr.name = name; rAttr.value = value; rAttr.key = key; @@ -512,6 +518,9 @@ System.Array.Copy(_endTags, temp, (int) _endTags.Length); _endTags = temp; } +#if TARGET_J2EE + _endTags[_endTagCount] = new TagStackEntry(); +#endif _endTags[_endTagCount].tagKey = _tagKey; _endTags[_endTagCount].endTagText = endTag; _endTagCount++; @@ -1059,7 +1068,11 @@ } //HtmlTextWriter +#if TARGET_J2EE +class AttributeInformation { +#else struct AttributeInformation { +#endif public bool encode; public string name; @@ -1069,20 +1082,32 @@ } } +#if TARGET_J2EE +class RenderAttribute { +#else struct RenderAttribute { +#endif public bool encode; public HtmlTextWriterAttribute key; public string name; public string value; } +#if TARGET_J2EE +class RenderStyle { +#else struct RenderStyle { +#endif public HtmlTextWriterStyle key; public string name; public string value; } +#if TARGET_J2EE +class TagInformation { +#else struct TagInformation { +#endif public string closingTag; public string name; public TagType tagType; @@ -1094,7 +1119,11 @@ } } +#if TARGET_J2EE +class TagStackEntry { +#else struct TagStackEntry { +#endif public string endTagText; public HtmlTextWriterTag tagKey; }
_______________________________________________ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list