de-pessimization

From-SVN: r78447
This commit is contained in:
Anthony Green 2004-02-25 19:52:58 +00:00 committed by Anthony Green
parent 7b79fe713d
commit b29610b3cf
2 changed files with 27 additions and 4 deletions

View File

@ -1,3 +1,9 @@
2004-02-24 Anthony Green <green@redhat.com>
* java/lang/StringBuffer.java: No need to NULL out remainder of
buffer since ensureCapacity_unsynchronized will have done this for
us.
2004-02-20 Michael Koch <konqueror@gmx.de>
* gnu/java/net/protocol/jar/Handler.java

View File

@ -1,5 +1,6 @@
/* StringBuffer.java -- Growable strings
Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of GNU Classpath.
@ -205,10 +206,26 @@ public final class StringBuffer implements Serializable, CharSequence
if (newLength < 0)
throw new StringIndexOutOfBoundsException(newLength);
int valueLength = value.length;
/* Always call ensureCapacity_unsynchronized in order to preserve
copy-on-write semantics. */
ensureCapacity_unsynchronized(newLength);
while (count < newLength)
value[count++] = '\0';
count = newLength;
if (newLength < valueLength)
{
/* If the StringBuffer's value just grew, then we know that
value is newly allocated and the region between count and
newLength is filled with '\0'. */
count = newLength;
}
else
{
/* The StringBuffer's value doesn't need to grow. However,
we should clear out any cruft that may exist. */
while (count < newLength)
value[count++] = '\0';
}
}
/**