Fast path for BMP. +1
I don't find ensureCapacityInternal() ???
shorter:
public AbstractStringBuilder appendCodePoint(int codePoint) {
int count = this.count;
if (Character.isBMPCodePoint(codePoint)) {
ensureCapacityInternal(count + 1);
value[count++] = (char) codePoint;
} else if (Character.isValidCodePoint(codePoint)) {
ensureCapacityInternal(count + 2);
count += Character.toSurrogates(codePoint, value, count);
} else
throw new IllegalArgumentException();
return this;
}
-Ulf
Am 20.03.2010 06:01, schrieb Martin Buchholz:
Here's another little improvement that should use isBMPCodePoint:
diff --git a/src/share/classes/java/lang/AbstractStringBuilder.java
b/src/share/classes/java/lang/AbstractStringBuilder.java
--- a/src/share/classes/java/lang/AbstractStringBuilder.java
+++ b/src/share/classes/java/lang/AbstractStringBuilder.java
@@ -719,20 +719,17 @@
* {...@code codePoint} isn't a valid Unicode code point
*/
public AbstractStringBuilder appendCodePoint(int codePoint) {
- if (!Character.isValidCodePoint(codePoint)) {
+ if (Character.isBMPCodePoint(codePoint)) {
+ ensureCapacityInternal(count + 1);
+ value[count] = (char) codePoint;
+ count += 1;
+ } else if (Character.isValidCodePoint(codePoint)) {
+ ensureCapacityInternal(count + 2);
+ Character.toSurrogates(codePoint, value, count);
+ count += 2;
+ } else {
throw new IllegalArgumentException();
}
- int n = 1;
- if (codePoint>= Character.MIN_SUPPLEMENTARY_CODE_POINT) {
- n++;
- }
- ensureCapacityInternal(count + n);
- if (n == 1) {
- value[count++] = (char) codePoint;
- } else {
- Character.toSurrogates(codePoint, value, count);
- count += n;
- }
return this;
}
Martin