Joe,

These look ok to me


-lance

Joseph D. Darcy wrote:
Hello.

Please review these simple cleanup fixes in the wrapper classes:

6480728: Byte.valueOf(byte) returns a cached value but Byte.valueOf(String) 6655735: Integer.toString() and String.valueOf(int) contain slow delegations

The fix for the first bug is for the valueOf(String) and decode methods in Byte and Short to return objects after going through the cache. This behavior is already present in Integer and Long.

The second fix changes method calls in various wrapper classes and in String to go to the Foo -> String method most directly implementing the desired conversion

Patch is below; webrev at
http://cr.openjdk.java.net/~darcy/6480728.0/

-Joe

--- old/src/share/classes/java/lang/Byte.java 2009-10-07 12:18:04.000000000 -0700 +++ new/src/share/classes/java/lang/Byte.java 2009-10-07 12:18:03.000000000 -0700
@@ -201,7 +201,7 @@
     */
    public static Byte valueOf(String s, int radix)
        throws NumberFormatException {
-        return new Byte(parseByte(s, radix));
+        return valueOf(parseByte(s, radix));
    }

    /**
@@ -277,7 +277,7 @@
        if (i < MIN_VALUE || i > MAX_VALUE)
            throw new NumberFormatException(
                    "Value " + i + " out of range from input " + nm);
-        return (byte)i;
+        return valueOf((byte)i);
    }

    /**
@@ -374,7 +374,7 @@
     *          base&nbsp;10.
     */
    public String toString() {
-        return String.valueOf((int)value);
+        return Integer.toString((int)value);
    }

    /**
--- old/src/share/classes/java/lang/Double.java 2009-10-07 12:18:04.000000000 -0700 +++ new/src/share/classes/java/lang/Double.java 2009-10-07 12:18:04.000000000 -0700
@@ -629,7 +629,7 @@
     * @see java.lang.Double#toString(double)
     */
    public String toString() {
-        return String.valueOf(value);
+        return toString(value);
    }

    /**
--- old/src/share/classes/java/lang/Float.java 2009-10-07 12:18:05.000000000 -0700 +++ new/src/share/classes/java/lang/Float.java 2009-10-07 12:18:05.000000000 -0700
@@ -551,7 +551,7 @@
     * @see java.lang.Float#toString(float)
     */
    public String toString() {
-        return String.valueOf(value);
+        return Float.toString(value);
    }

    /**
--- old/src/share/classes/java/lang/Integer.java 2009-10-07 12:18:06.000000000 -0700 +++ new/src/share/classes/java/lang/Integer.java 2009-10-07 12:18:06.000000000 -0700
@@ -746,7 +746,7 @@
     *          base&nbsp;10.
     */
    public String toString() {
-        return String.valueOf(value);
+        return toString(value);
    }

    /**
--- old/src/share/classes/java/lang/Long.java 2009-10-07 12:18:07.000000000 -0700 +++ new/src/share/classes/java/lang/Long.java 2009-10-07 12:18:07.000000000 -0700
@@ -761,7 +761,7 @@
     *          base&nbsp;10.
     */
    public String toString() {
-        return String.valueOf(value);
+        return toString(value);
    }

    /**
--- old/src/share/classes/java/lang/Short.java 2009-10-07 12:18:08.000000000 -0700 +++ new/src/share/classes/java/lang/Short.java 2009-10-07 12:18:07.000000000 -0700
@@ -170,7 +170,7 @@
     */
    public static Short valueOf(String s, int radix)
        throws NumberFormatException {
-        return new Short(parseShort(s, radix));
+        return valueOf(parseShort(s, radix));
    }

    /**
@@ -282,7 +282,7 @@
        if (i < MIN_VALUE || i > MAX_VALUE)
            throw new NumberFormatException(
                    "Value " + i + " out of range from input " + nm);
-        return (short)i;
+        return valueOf((short)i);
    }

    /**
@@ -379,7 +379,7 @@
     *          base&nbsp;10.
     */
    public String toString() {
-        return String.valueOf((int)value);
+        return Integer.toString((int)value);
    }

    /**
--- old/src/share/classes/java/lang/String.java 2009-10-07 12:18:08.000000000 -0700 +++ new/src/share/classes/java/lang/String.java 2009-10-07 12:18:08.000000000 -0700
@@ -2995,7 +2995,7 @@
     * @see     java.lang.Integer#toString(int, int)
     */
    public static String valueOf(int i) {
-        return Integer.toString(i, 10);
+        return Integer.toString(i);
    }

    /**
@@ -3009,7 +3009,7 @@
     * @see     java.lang.Long#toString(long)
     */
    public static String valueOf(long l) {
-        return Long.toString(l, 10);
+        return Long.toString(l);
    }

    /**

Reply via email to