Code review request for 6897550 BigInteger constructor should use local cached String length

Christopher Hegarty -Sun Microsystems Ireland Christopher.Hegarty at Sun.COM
Tue Nov 3 22:48:05 UTC 2009


Thanks Joe, looks good.

-Chris.

Joseph D. Darcy wrote:
> Hello.
> 
> Please review this simple change to replace several calls to 
> val.length() with an already cached copy of val.length(); patch below.
> 
> 6897550 BigInteger constructor should use local cached String length
> http://cr.openjdk.java.net/~darcy/6897550.0/
> 
> -Joe
> 
> --- old/src/share/classes/java/math/BigInteger.java    2009-11-03 
> 13:57:31.000000000 -0800
> +++ new/src/share/classes/java/math/BigInteger.java    2009-11-03 
> 13:57:31.000000000 -0800
> @@ -292,7 +292,7 @@
> 
>         if (radix < Character.MIN_RADIX || radix > Character.MAX_RADIX)
>             throw new NumberFormatException("Radix out of range");
> -        if (val.length() == 0)
> +        if (len == 0)
>             throw new NumberFormatException("Zero length BigInteger");
> 
>         // Check for at most one leading sign
> @@ -303,7 +303,7 @@
>             // No leading sign character or at most one leading sign 
> character
>             if (index1 == 0 || index2 == 0) {
>                 cursor = 1;
> -                if (val.length() == 1)
> +                if (len == 1)
>                     throw new NumberFormatException("Zero length 
> BigInteger");
>             }
>             if (index1 == 0)
> @@ -342,7 +342,7 @@
>         // Process remaining digit groups
>         int superRadix = intRadix[radix];
>         int groupVal = 0;
> -        while (cursor < val.length()) {
> +        while (cursor < len) {
>             group = val.substring(cursor, cursor += digitsPerInt[radix]);
>             groupVal = Integer.parseInt(group, radix);
>             if (groupVal < 0)
> 



More information about the core-libs-dev mailing list