From d41dfd6cc95692f13ca6dde18e9717679c00595d Mon Sep 17 00:00:00 2001 From: tromey Date: Fri, 30 Apr 1999 09:31:00 +0000 Subject: * java/lang/StringBuffer.java (ensureCapacity): Don't resize vector when shared. * java/util/Locale.java (Locale(String,String)): Implement in terms of 3-argument version; variant now defaults to empty string. (toString): Assume variant is not null. (equals): Assume all strings are not null. (Locale): Throw NullPointerException if any argument is null. * java/util/ResourceBundle.java (getBundle): Don't try the base name; now implicit in partialGetBundle call. (trySomeGetBundle): Search for parent bundles and call setParent as required. (partialGetBundle): Added `langStop' argument. Use `Locale.toString' to compute bundleName. (resource_cache): New static field. (partialGetBundle): Cache the returned resource bundle. Now synchronized. * gnu/gcj/text/LocaleData_en.java (contents): [collatorRule] Added missing `<'. * mauve-libgcj: Enable Collator and RuleBasedCollator. * java/text/natCollator.cc (decomposeCharacter): `base' now `const'. * Makefile.in: Rebuilt. * Makefile.am (ordinary_java_source_files): Added CollationElementIterator, CollationKey, Collator, RuleBasedCollator. (nat_source_files): Added natCollator.cc. * java/text/RuleBasedCollator.java (ceiNext): No longer static. (compare): Pass `this' to CollationElementIterator constructor. (getCollationElementIterator): Likewise. (ceiNext): Fix off-by-one error when finding initial substring. (next): Correctly mask off bits when computing return value. Fixed return values when one string is shorter than the other. * java/text/CollationElementIterator.java (collator): New field. (CollationElementIterator): Added collator argument. (next): Call ceiNext on collator object. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@26707 138bc75d-0d04-0410-961f-82ee72b054a4 --- libjava/java/lang/StringBuffer.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'libjava/java/lang') diff --git a/libjava/java/lang/StringBuffer.java b/libjava/java/lang/StringBuffer.java index 4127d54787f..70f78fbf8e5 100644 --- a/libjava/java/lang/StringBuffer.java +++ b/libjava/java/lang/StringBuffer.java @@ -98,7 +98,13 @@ public final class StringBuffer implements Serializable { if (shared || minimumCapacity > value.length) { - minimumCapacity = Math.max(minimumCapacity, value.length*2+2); + // We don't want to make a larger vector when `shared' is + // set. If we do, then setLength becomes very inefficient + // when repeatedly reusing a StringBuffer in a loop. + int max = (minimumCapacity > value.length + ? value.length*2+2 + : value.length); + minimumCapacity = Math.max(minimumCapacity, max); char[] nb = new char[minimumCapacity]; System.arraycopy(value, 0, nb, 0, count); value = nb; -- cgit v1.2.3