- From: Yves Lafon via cvs-syncmail <cvsmail@w3.org>
- Date: Thu, 20 Mar 2008 14:51:48 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2002/css-validator/org/w3c/css/parser
In directory hutz:/tmp/cvs-serv26712
Modified Files:
CssSelectors.java
Log Message:
added support to freeze the structure and generate more optimizations (no more list traversal for consistency checks)
Index: CssSelectors.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/parser/CssSelectors.java,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -d -r1.22 -r1.23
--- CssSelectors.java 20 Mar 2008 12:15:05 -0000 1.22
+++ CssSelectors.java 20 Mar 2008 14:51:46 -0000 1.23
@@ -82,6 +82,7 @@
private boolean Init;
private String cachedRepresentation = null;
+ private boolean isFinal = false;
/**
* Create a new CssSelectors with no previous selector.
@@ -369,12 +370,40 @@
if (cachedRepresentation == null) {
return false;
}
+ if (isFinal) {
+ return true;
+ }
if (next != null) {
return super.isToStringCached() && next.isToStringCached();
}
return super.isToStringCached();
}
+ /*
+ we are doing this in two steps, as it is possible to have some
+ calls to toString() and do modifications, then at some point
+ everything is frozen (like when StyleSheet.findConflict is called)
+ marking as final (ie: no more modifications) triggers more
+ optimizations. Things could be better optimized if we were sure
+ that no calls to toString were done before everything is frozen
+ */
+
+ /*
+ * Mark as final, ie: no more modification to the structure.
+ */
+ public void markAsFinal() {
+ // if something has been changed, reset to force recomputing
+ if (!isFinal) {
+ if (!isToStringCached()) {
+ cachedRepresentation = null;
+ if (next != null) {
+ next.markAsFinal();
+ }
+ }
+ isFinal = true;
+ }
+ }
+
/**
* Get a hashCode.
*/
Received on Thursday, 20 March 2008 14:52:24 UTC