From dev-return-4100-archive-asf-public=cust-asf.ponee.io@groovy.apache.org Sat Jan 13 13:46:22 2018 Return-Path: X-Original-To: archive-asf-public@eu.ponee.io Delivered-To: archive-asf-public@eu.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by mx-eu-01.ponee.io (Postfix) with ESMTP id A6B96180630 for ; Sat, 13 Jan 2018 13:46:22 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 95F5F160C2F; Sat, 13 Jan 2018 12:46:22 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id B5AD3160C22 for ; Sat, 13 Jan 2018 13:46:21 +0100 (CET) Received: (qmail 65872 invoked by uid 500); 13 Jan 2018 12:46:20 -0000 Mailing-List: contact dev-help@groovy.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@groovy.apache.org Delivered-To: mailing list dev@groovy.apache.org Received: (qmail 65862 invoked by uid 99); 13 Jan 2018 12:46:20 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 13 Jan 2018 12:46:20 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id 2A1D91806E2 for ; Sat, 13 Jan 2018 12:46:20 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 5.525 X-Spam-Level: ***** X-Spam-Status: No, score=5.525 tagged_above=-999 required=6.31 tests=[RCVD_IN_MSPIKE_BL=0.01, RCVD_IN_MSPIKE_L4=1.607, RCVD_IN_SBL=2.596, SPF_PASS=-0.001, URI_HEX=1.313] autolearn=disabled Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id 4jnA6YNrXhbp for ; Sat, 13 Jan 2018 12:46:16 +0000 (UTC) Received: from mout-xforward.gmx.net (mout-xforward.gmx.net [82.165.159.12]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTPS id BD53E5F299 for ; Sat, 13 Jan 2018 12:46:15 +0000 (UTC) Received: from [192.168.1.4] ([77.178.21.201]) by mail.gmx.com (mrgmx002 [212.227.17.190]) with ESMTPSA (Nemesis) id 0M1msU-1eq4Yv2BB4-00tnWI for ; Sat, 13 Jan 2018 13:46:07 +0100 Subject: Re: About the native-lambda branch To: dev@groovy.apache.org References: <1515658030243-0.post@n5.nabble.com> <1515708866606-0.post@n5.nabble.com> <1515726323882-0.post@n5.nabble.com> <43810210-2365-4C75-AEE5-19AE38785467@selskabet.org> <1515762817579-0.post@n5.nabble.com> <06955127-58f5-ceed-9a76-6c92828de39c@gmx.org> <1515842645754-0.post@n5.nabble.com> From: Jochen Theodorou Message-ID: <55d14f52-45b3-85eb-048a-9614c14e658a@gmx.org> Date: Sat, 13 Jan 2018 13:45:55 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.1.1 MIME-Version: 1.0 In-Reply-To: <1515842645754-0.post@n5.nabble.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:QknguWZ1HgOk8iTXi3pcRXY+KHqywT1mxdJAn3osxIkRY+1F+un A7+AZEvx8mLwf8DiHWM+/HslhOsL5sv66zJRcvndaUjFPh9ea+qDR+oMSXbGAiMbPmY3E96 ULlAp3pDp08KtARML5EhAF6j+dY0teomVHhq+hNK/ukyY8Z319dE+SXR/egXGie/vMJPB9J YWpM7kwX/NQQdaHLFsrsw== X-UI-Out-Filterresults: junk:10;V01:K0:kIbOc4YOvj4=:3x+s/9wLEgw7lpvpPyJjKY0z lZ7hNaE7nsVao96r3URw0GGo17pyiaxR0g5N4K/HeJ9A0x9bMr5me0bKprkMcVegCOYC0pCYG PC/7daLnxduvHV606hU9uuUChs9TJjM7oxIzLVIFytG4yLG7lpj4A+pBSYQlVkA6OcCux8hSh ahnmyCp8HIQKrVpn6O1CQgptftr2600pjcaPMNIaaFq9+Ax8XpZgL4VGTHzYvYFoVK/WuOQgx tdl+5kynh+El59HQSx/O0j0oKyvwba0FrN/+OH/WD1mNC6jJntl9IECqS2e35YIOoiZ9ZuI75 l6HpeJera3KiHWfTSm/nXDUx9TSr3AgnfeXT9u7slmxV0OKyhBSGQjypH+mi4PV1CRNZIl/Rn 3MqLIa73zgwh7ZymlmeXSq6IXL9ANAA5B2OpFnoVJEloaMToKge7No/ReR98/bbVedOrluEQl ZpH673aXcoKQoKwOxYTFYqoja7ncqOOHq6AcCYa26Yul5+IQhy0P1TycgttgF4REdO+wskmbu UHWUPJnFggFhFCPqK8CbCXYHszjofrlZD452E9ZAscTBarVHpgKF2Cs1H5iH4MwHgnz5JDYhd McGbhRuowILhEyRFUFcnBIbdfCuI/CsBDQRzYBfeUSrcEOEnWmNg4G8u0uE2H0oEvaaMVs1Gr LBzxNRO6nrqN2nITqBawtpXqFq8L96/x8x5FQ5lC2LzKcZw59vmdfxl8REOQx8cFgYl2HNudJ e9VbcUGAv1I+QYmtDdwg3AzhkCY1t+HP2eEB+x/aTQLPD5HlEjiCsCiglOwh9LmVsLs2meagT pZTfhYrikMWO5JmarQuai6ha2XS2sMV7SfZydpmRCJ8ISYWm06jyhftIDzRZs0zRw+mJeoWs7 j/t34jNCTScJB/MILWXudayEClFNobHO0cYSUmXlbV4nYitvPrhhEup0O7oO2OW2m6mwAa1kd SSzAK2sORMcT1HdH03Zq3peciqDhRdVXMtKAoAtpDKSRi2fzrAs this looks quite promising On 13.01.2018 12:24, Daniel Sun wrote: > Hi Jochen, > > Here is an example: > > ``` > import java.util.stream.Collectors; > import java.util.stream.Stream; > > public class Test1 { > public static void main(String[] args) { > p(); > } > > public static void p() { > Stream.of(1, 2, 3).map(e -> e + 1).collect(Collectors.toList()); > } > } > ``` > > Its bytecode is shown as follows, note ` public final static INNERCLASS > java/lang/invoke/MethodHandles$Lookup java/lang/invoke/MethodHandles > Lookup`, which I found is useless, so I removed it and all code works still > well. > > ``` > // class version 52.0 (52) > // access flags 0x21 > public class Test1 { > > // compiled from: Test1.java > // access flags 0x19 > public final static INNERCLASS java/lang/invoke/MethodHandles$Lookup > java/lang/invoke/MethodHandles Lookup > > // access flags 0x1 > public ()V > L0 > LINENUMBER 4 L0 > ALOAD 0 > INVOKESPECIAL java/lang/Object. ()V > RETURN > MAXSTACK = 1 > MAXLOCALS = 1 > > // access flags 0x9 > public static main([Ljava/lang/String;)V > L0 > LINENUMBER 6 L0 > INVOKESTATIC Test1.p ()V > L1 > LINENUMBER 7 L1 > RETURN > MAXSTACK = 0 > MAXLOCALS = 1 > > // access flags 0x9 > public static p()V > L0 > LINENUMBER 10 L0 > ICONST_3 > ANEWARRAY java/lang/Integer > DUP > ICONST_0 > ICONST_1 > INVOKESTATIC java/lang/Integer.valueOf (I)Ljava/lang/Integer; > AASTORE > DUP > ICONST_1 > ICONST_2 > INVOKESTATIC java/lang/Integer.valueOf (I)Ljava/lang/Integer; > AASTORE > DUP > ICONST_2 > ICONST_3 > INVOKESTATIC java/lang/Integer.valueOf (I)Ljava/lang/Integer; > AASTORE > INVOKESTATIC java/util/stream/Stream.of > ([Ljava/lang/Object;)Ljava/util/stream/Stream; > INVOKEDYNAMIC apply()Ljava/util/function/Function; [ > // handle kind 0x6 : INVOKESTATIC > > java/lang/invoke/LambdaMetafactory.metafactory(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite; > // arguments: > (Ljava/lang/Object;)Ljava/lang/Object;, > // handle kind 0x6 : INVOKESTATIC > Test1.lambda$p$0(Ljava/lang/Integer;)Ljava/lang/Integer;, > (Ljava/lang/Integer;)Ljava/lang/Integer; > ] > INVOKEINTERFACE java/util/stream/Stream.map > (Ljava/util/function/Function;)Ljava/util/stream/Stream; > INVOKESTATIC java/util/stream/Collectors.toList > ()Ljava/util/stream/Collector; > INVOKEINTERFACE java/util/stream/Stream.collect > (Ljava/util/stream/Collector;)Ljava/lang/Object; > POP > L1 > LINENUMBER 11 L1 > RETURN > MAXSTACK = 4 > MAXLOCALS = 0 > > // access flags 0x100A > private static synthetic > lambda$p$0(Ljava/lang/Integer;)Ljava/lang/Integer; > L0 > LINENUMBER 10 L0 > ALOAD 0 > INVOKEVIRTUAL java/lang/Integer.intValue ()I > ICONST_1 > IADD > INVOKESTATIC java/lang/Integer.valueOf (I)Ljava/lang/Integer; > ARETURN > MAXSTACK = 2 > MAXLOCALS = 1 > } > > ``` > > Cheers, > Daniel.Sun > > > > -- > Sent from: http://groovy.329449.n5.nabble.com/Groovy-Dev-f372993.html >