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



Reply via email to