Long valueOf instead of new Long
Pavel Rappo
pavel.rappo at oracle.com
Fri Jun 27 15:03:48 UTC 2014
I've just created a webrev with all the changes we've discussed so far. Plus some more I've spotted while looking into the code. Please note, this webrev is not incremental. It grabs all the changes between the original patch and the latest discussed:
http://cr.openjdk.java.net/~prappo/8048267/webrev.02
Andrej, you can verify that all your changes are included as well as Paul's. As a workaround for this particular review thread you can download changeset files from consecutive webrevs and just diff them:
http://cr.openjdk.java.net/~prappo/8048267/webrev.$(i)/jdk.changeset
http://cr.openjdk.java.net/~prappo/8048267/webrev.$(i+1)/jdk.changeset
In addition to these I also found some more. It turns out such simple changes can lead to infinite recursion calls. Compare these:
(line 622):
http://cr.openjdk.java.net/~prappo/8048267/webrev.01/src/share/classes/com/sun/tools/hat/internal/parser/HprofReader.java.sdiff.html
http://cr.openjdk.java.net/~prappo/8048267/webrev.02/src/share/classes/com/sun/tools/hat/internal/parser/HprofReader.java.sdiff.html
(lines 384, 508):
http://cr.openjdk.java.net/~prappo/8048267/webrev.01/src/share/classes/java/awt/image/renderable/ParameterBlock.java.sdiff.html
http://cr.openjdk.java.net/~prappo/8048267/webrev.02/src/share/classes/java/awt/image/renderable/ParameterBlock.java.sdiff.html
Also, I removed one useless creation of a Long object here:
(line 191):
http://cr.openjdk.java.net/~prappo/8048267/webrev.01/src/share/classes/sun/security/krb5/internal/KerberosTime.java.sdiff.html
http://cr.openjdk.java.net/~prappo/8048267/webrev.02/src/share/classes/sun/security/krb5/internal/KerberosTime.java.sdiff.html
I wonder if we should leave a cast to int here:
(line 383):
http://cr.openjdk.java.net/~prappo/8048267/webrev.01/src/share/classes/sun/management/snmp/jvminstr/JvmMemoryImpl.java.sdiff.html
http://cr.openjdk.java.net/~prappo/8048267/webrev.02/src/share/classes/sun/management/snmp/jvminstr/JvmMemoryImpl.java.sdiff.html
Well it's probably nothing to worry about, but strictly speaking this changes the behaviour. Before the change, long was truncated to fit int. And now it's not.
P.S. Andrej, it looks like you don't have an 'Author' status. Well, that's a pity. We could mention you in the 'Reviewed-by' line. Your contributions are really good.
-Pavel
On 27 Jun 2014, at 11:52, Pavel Rappo <pavel.rappo at oracle.com> wrote:
> Hi Andrej,
>
> They are not identical. Maybe it's just hard to spot it as it's not an incremental webrev. Have a look at
>
> (line 583):
>
> http://cr.openjdk.java.net/~prappo/8048267/webrev.00/src/share/classes/javax/management/modelmbean/RequiredModelMBean.java.sdiff.html
> http://cr.openjdk.java.net/~prappo/8048267/webrev.01/src/share/classes/javax/management/modelmbean/RequiredModelMBean.java.sdiff.html
>
> (line 90):
>
> http://cr.openjdk.java.net/~prappo/8048267/webrev.00/src/share/classes/com/sun/security/auth/UnixNumericUserPrincipal.java.sdiff.html
> http://cr.openjdk.java.net/~prappo/8048267/webrev.01/src/share/classes/com/sun/security/auth/UnixNumericUserPrincipal.java.sdiff.html
>
> Though I've missed one you suggested in RequiredModelMBean.java:547
> Anyway, I'll try to incorporate everything you've spotted so far.
>
> Thanks,
> -Pavel
>
> On 27 Jun 2014, at 11:36, Andrej Golovnin <andrej.golovnin at gmail.com> wrote:
>
>> Hi Pavel,
>>
>> the both web revs looks identical to me. Here is what I have found so far in the webrev.01:
>>
>> in src/share/classes/com/sun/security/auth/SolarisNumericGroupPrincipal.java:
>>
>> @@ -108,11 +108,11 @@
>> * @param primaryGroup true if the specified GID represents the
>> * primary group to which this user belongs.
>> *
>> */
>> public SolarisNumericGroupPrincipal(long name, boolean primaryGroup) {
>> - this.name = (new Long(name)).toString();
>> + this.name = Long.valueOf(name).toString();
>> this.primaryGroup = primaryGroup;
>> }
>>
>> It is better to use Long.toString(long):
>>
>> + this.name = Long.toString(name);
>>
>> This also applies to:
>>
>> src/share/classes/com/sun/security/auth/SolarisNumericUserPrincipal.java
>> src/share/classes/com/sun/security/auth/UnixNumericGroupPrincipal.java
>> src/share/classes/com/sun/security/auth/UnixNumericUserPrincipal.java
>>
>>
>> @@ -94,11 +94,11 @@
>> *
>> * @param name the user identification number (UID) for this user
>> * represented as a long.
>> */
>> public SolarisNumericUserPrincipal(long name) {
>> - this.name = (new Long(name)).toString();
>> + this.name = Long.valueOf(name).toString();
>> }
>>
>>
>> In src/share/classes/javax/management/modelmbean/RequiredModelMBean.java:
>>
>> @@ -542,11 +542,11 @@
>> RequiredModelMBean.class.getName(),
>> mth,"currencyTimeLimit: " + expTime);
>> }
>>
>> // convert seconds to milliseconds for time comparison
>> - currencyPeriod = ((new Long(expTime)).longValue()) * 1000;
>> + currencyPeriod = ((Long.valueOf(expTime)).longValue()) * 1000;
>>
>> Please use Long.parseLong(String), e.g.:
>>
>> + currencyPeriod = Long.parseLong(expTime) * 1000;
>>
>> And here please use Long.parseLong8String) too:
>>
>> @@ -578,11 +578,11 @@
>> }
>>
>> if (tStamp == null)
>> tStamp = "0";
>>
>> - long lastTime = (new Long(tStamp)).longValue();
>> + long lastTime = (Long.valueOf(tStamp)).longValue();
>>
>> e.g.:
>>
>> + long lastTime = Long.parseLong(tStamp);
>>
>>
>> In src/share/classes/sun/security/jgss/wrapper/GSSNameElement.java
>>
>> @@ -201,11 +201,11 @@
>> return false;
>> }
>> }
>>
>> public int hashCode() {
>> - return new Long(pName).hashCode();
>> + return Long.valueOf(pName).hashCode();
>> }
>>
>> The method Long.hashCode(long) (added in JDK 8) should be used to calculate the hash for a long value, e.g.:
>>
>> + return Long.hashCode(pName);
>>
>> Best regards,
>> Andrej Golovnin
>>
>>
>>
>>
>> On Fri, Jun 27, 2014 at 12:00 PM, Pavel Rappo <pavel.rappo at oracle.com> wrote:
>> I created an issue to track the progress and also made 2 webrevs. One for the original patch and one for the changes that have been suggested earlier in this thread by Paul and Andrej. Here we go:
>>
>> https://bugs.openjdk.java.net/browse/JDK-8048267
>>
>> http://cr.openjdk.java.net/~prappo/8048267/webrev.00
>> http://cr.openjdk.java.net/~prappo/8048267/webrev.01
>>
>> -Pavel
>>
>> On 26 Jun 2014, at 10:58, Chris Hegarty <chris.hegarty at oracle.com> wrote:
>>
>>> Otavio,
>>>
>>> I skimmed over the patches and they look ok to me. I think they would be suitable for inclusion in jdk9/dev.
>>>
>>> -Chris.
>>>
>>> P.S. I do not currently have time to sponsor this, but I cc’ed Pavel who may be able to help get his in.
>>>
>>> On 14 Jun 2014, at 14:46, Otávio Gonçalves de Santana <otaviojava at java.net> wrote:
>>>
>>>> Reason: The Long class has cache and using it, will save memory and will
>>>> faster than using create new instance of Long.
>>>>
>>>> webrev:
>>>> https://dl.dropboxusercontent.com/u/16109193/open_jdk/long_value_of.zip
>>>>
>>>> similar: https://bugs.openjdk.java.net/browse/JDK-8044461
>>>> --
>>>> Otávio Gonçalves de Santana
>>>>
>>>> blog: http://otaviosantana.blogspot.com.br/
>>>> twitter: http://twitter.com/otaviojava
>>>> site: http://www.otaviojava.com.br
>>>> (11) 98255-3513
>>>> <sun_tools.diff><sun_security.diff><sun_nio.diff><sun_management.diff><sun_jvmstat.diff><javax_swing.diff><javax-management.diff><java_text.diff><java_awt_image.diff><internal_org_objectweb.diff><com_sun_tools.diff><com_sun_security.diff><com_sun_jmx_snmp.diff><com_sun_jdni_ldap.diff><com_sun_imageio.diff>
>>>
>>
>>
>
More information about the core-libs-dev
mailing list