hg: lambda/lambda/jdk: - ensure null values are retained

Paul Sandoz paul.sandoz at oracle.com
Wed Dec 5 01:44:46 PST 2012


On Dec 4, 2012, at 3:12 PM, Remi Forax <forax at univ-mlv.fr> wrote:

> On 12/04/2012 03:00 PM, Peter Levart wrote:
>> Hi Remi, Paul,
>> 
>> What about vice-versa:
> 
> Hi Peter,
> good idea !

+1

Paul.

> we still need a if (t==null) in accept() and not use Objects.equals 
> because we want the VM to profile the null in accept() and not in 
> Objects.equals().
> 
> Rémi
> 
>> 
>> Like this:
>> 
>>        private static final Object NONE = new Object();
>>        ...
>> 
>>        return new Sink.ChainedReference<T>(sink) {
>>            private Object lastSeen;
>> 
>>            @Override
>>            public void begin(long size) {
>>                lastSeen = NONE;            // not needed if end() is 
>> called in a finally ?
>>                downstream.begin(-1);
>>            }
>> 
>>            @Override
>>            public void end() {
>>                lastSeen = NONE;
>>                downstream.end();
>>            }
>> 
>>            @Override
>>            public void accept(T t) {
>>                if (!Objects.equals(t, lastSeen)) {
>>                    lastSeen = t;
>>                    downstream.accept(t);
>>                }
>>            }
>>        };



More information about the lambda-dev mailing list