New bigger bytecode for small lambda in b79

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Wed Feb 27 11:08:51 PST 2013


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