Code review request for 6897550 BigInteger constructor should use local cached String length
Joseph D. Darcy
Joe.Darcy at Sun.COM
Tue Nov 3 23:01:27 UTC 2009
Andrew John Hughes wrote:
> 2009/11/3 Joseph D. Darcy <Joe.Darcy at sun.com>:
>
>> 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)
>>
>>
>>
>
> Looks good to me. This is all in one method, and len doesn't change
> its value (maybe make it final?)
>
Correct on the nature of len; will add final before I push.
Thanks,
-Joe
More information about the core-libs-dev
mailing list