a patch for new default methods in Map + more

Vitaly Davidovich vitalyd at gmail.com
Fri Jan 4 14:59:58 PST 2013


I was referring to the hardware branch predictor, which (in our case of
never seeing a null) will always predict correctly and not impede the
execution pipeline.  Even if code is generated for handling a null value
but then jumped over, the icache should prevent noticeable penalty.

Sent from my phone
On Jan 4, 2013 5:12 PM, "Remi Forax" <forax at univ-mlv.fr> wrote:

> On 01/04/2013 08:32 PM, Vitaly Davidovich wrote:
>
>>
>> Also, null check is really cheap - 1 cycle with a perfectly predicted
>> branch, I doubt it will make any noticeable diff even if it stays.
>>
>>
> because the profile is bloated, the information about the branch that
> should be taken is not accurate, the basic block for the value equals to
> null has be generated, so you may end up with a jump which is not more free
>
>  Sent from my phone
>>
>>
> Rémi
>
>  On Jan 4, 2013 2:30 PM, "Vitaly Davidovich" <vitalyd at gmail.com <mailto:
>> vitalyd at gmail.com>> wrote:
>>
>>     Once compiler kicks in and inlines (I'm assuming it will)
>>     Objects.equals, shouldn't the profile information get propagated
>>     into the caller? Avoiding small util methods just to preserve
>>     profile info would imply that the compiler is suboptimal, no?
>>
>>     Sent from my phone
>>
>>     On Jan 4, 2013 2:11 PM, "Remi Forax" <forax at univ-mlv.fr
>>     <mailto:forax at univ-mlv.fr>> wrote:
>>
>>         On 01/04/2013 07:09 PM, Doug Lea wrote:
>>         > On 01/04/13 12:11, Peter Levart wrote:
>>         >> Hi,
>>         >>
>>         >> I propose a patch for some new default methods in j.u.Map
>>         and some more:
>>         >>
>>         >>
>>         http://dl.dropbox.com/u/**101777488/jdk8-lambda/Map/**
>> webrev.02/index.html<http://dl.dropbox.com/u/101777488/jdk8-lambda/Map/webrev.02/index.html>
>>         >>
>>         > Thanks for redoing these as a webrev!
>>
>>         Peter, you should not add Objects.equals() here, you can use
>>         it if you
>>         know that a key will be null,
>>         but not if you don't know. You have to write the null check in the
>>         method and let the VM do the profiling.
>>         With that, users that never use a HashMap with null key may
>>         not pay the
>>         extra cost of the null check.
>>         If you use Objects.equals, because it will be also used in a
>>         method with
>>         a value that is null, the VM will always do the check.
>>
>>         Rémi
>>
>>
>>
>


More information about the lambda-dev mailing list