r27039 - trunk/freenet/src/freenet/support

[email protected] Sun, 19 Apr 2009 11:50:04 +0000
Newsgroups gmane.network.freenet.cvs
Message-ID <[email protected]>
Author: xor
Date: 2009-04-19 11:50:03 +0000 (Sun, 19 Apr 2009)
New Revision: 27039

Modified:
   trunk/freenet/src/freenet/support/SimpleFieldSet.java
Log:
SFS optimization: When putting a value with overwrite == true, do not get() the old one as we are overwriting it anyway.

Modified: trunk/freenet/src/freenet/support/SimpleFieldSet.java
===================================================================
--- trunk/freenet/src/freenet/support/SimpleFieldSet.java	2009-04-19 10:50:50 UTC (rev 27038)
+++ trunk/freenet/src/freenet/support/SimpleFieldSet.java	2009-04-19 11:50:03 UTC (rev 27039)
@@ -295,15 +295,18 @@
 		int idx;
 		if(value == null) return true; // valid no-op
 		if(value.indexOf('\n') != -1) throw new IllegalArgumentException("A simplefieldSet can't accept newlines !");
-		if((idx = key.indexOf(MULTI_LEVEL_CHAR)) == -1) {
-			String x = values.get(key);
+		if((idx = key.indexOf(MULTI_LEVEL_CHAR)) == -1) {		
+			if(!shortLived) key = key.intern();
 			
-			if(!shortLived) key = key.intern();
-			if(x == null || overwrite) {
+			if(overwrite) {
 				values.put(key, value);
 			} else {
+				if(values.get(key) == null) {
+					values.put(key, value);
+				} else {
 				if(!allowMultiple) return false;
 				values.put(key, (values.get(key))+ MULTI_VALUE_CHAR +value);
+				}
 			}
 		} else {
 			String before = key.substring(0, idx);