New bigger bytecode for small lambda in b79

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Mon Mar 11 07:36:28 PDT 2013


On 11/03/13 14:20, Eric Caspole wrote:
> Hi Maurizio,
> Is there a bug number for this issue?
Hi Eric, sorry for not following up with an update.
Bug number is 8009170. It has already been fixed in JDK 8 - the fix will 
trickle down to the lambda repository in a week or so.

Maurizio
>
> If need be, and I can do it as a non-Oracle person, just send me a 
> link to the bug db.
> Thanks,
> Eric
>
>
> On 02/27/2013 02:08 PM, Maurizio Cimadamore wrote:
>> I don't think this is lambda specific - probably related to this:
>>
>> http://hg.openjdk.java.net/jdk8/tl/langtools/rev/017e8bdd440f
>>
>> Will dig further.
>> Thanks for the report.
>>
>> Maurizio
>>
>> On 27/02/13 18:57, Eric Caspole wrote:
>>> Hi Lambda people,
>>> I am not sure if this is lambda specific or not, but this is what we
>>> found. For a small test case like this:
>>>
>>>       java.util.stream.Streams.intRange(FROM, SIZ,
>>> STEP).parallel().forEach(p -> {ary[p]+= inc;});
>>>
>>> The bytecode of the lambda is different this week. It all works but we
>>> were wondering why it is so much bigger. This new bytecode also happens
>>> in the lambda-8-b79-linux-x64-25_feb_2013.tar.gz snapshot.
>>>
>>> Regards,
>>> Eric
>>>
>>>
>>> Old bytecode of lambda from last week:
>>>
>>>     private void lambda$0(int, int);
>>>       flags: ACC_PRIVATE, ACC_SYNTHETIC
>>>       Code:
>>>         stack=4, locals=3, args_size=3
>>>            0: aload_0
>>>            1: getfield      #3                  // Field ary:[I
>>>            4: iload_2
>>>            5: dup2
>>>            6: iaload
>>>            7: iload_1
>>>            8: iadd
>>>            9: iastore
>>>           10: return
>>>         LineNumberTable:
>>>           line 57: 0
>>>
>>>
>>> New bytecode generated since about Friday:
>>>
>>>     private void lambda$0(int, int);
>>>       flags: ACC_PRIVATE, ACC_SYNTHETIC
>>>       Code:
>>>         stack=4, locals=4, args_size=3
>>>            0: aload_0
>>>            1: getfield      #3                  // Field ary:[I
>>>            4: astore_3
>>>            5: aload_3
>>>            6: iload_2
>>>            7: aload_3
>>>            8: iload_2
>>>            9: iaload
>>>           10: iload_1
>>>           11: iadd
>>>           12: dup_x2
>>>           13: iastore
>>>           14: pop
>>>           15: return
>>>         LineNumberTable:
>>>           line 57: 0
>>>
>>>
>>
>



More information about the lambda-dev mailing list