lambda/lambda/langtools: initial lambda push; the current prototype suuports the following features:

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Fri May 28 01:36:45 PDT 2010


On 28/05/10 01:37, Rémi Forax wrote:
> Nice !
> I suppose that you use invokeVarargs() when invoking a lambda to workaround
> the current state of invokeGeneric() in b94.
>    
Hi Remi,
you are quite correct, the generated code currently uses the 
invokeVarargs. Also, method handles are created reflectively (using 
MethodHandles.lookup()), which is sub-optimal.

Maurizio
> I will do a code review tomorrow.
>
> Rémi
>
>
> Le 27/05/2010 21:47, maurizio cimadamore a écrit :
>    
>> Hi
>> The prototype supports the syntax described in the strawman proposal
>> [1]. You might want to look at some of the regression tests, in
>> particular LambdaExpr01/LambdaExpr02 [2,3] to get an idea of what the
>> syntax look like.
>>
>> Thanks
>> Maurizio
>>
>> [1]
>> http://mail.openjdk.java.net/pipermail/lambda-dev/attachments/20100212/af8d2cc5/attachment-0001.txt
>> [2]
>> http://hg.openjdk.java.net/lambda/lambda/langtools/diff/7704dcd17e0b/test/tools/javac/lambda/LambdaExpr01.java
>> [3]
>> http://hg.openjdk.java.net/lambda/lambda/langtools/diff/7704dcd17e0b/test/tools/javac/lambda/LambdaExpr02.java
>>
>> On 27/05/10 18:45, Nathan Bryant wrote:
>>
>>      
>>> This is great! But what is the syntax?
>>>
>>> -----Original Message-----
>>> From: lambda-dev-bounces at openjdk.java.net
>>> [mailto:lambda-dev-bounces at openjdk.java.net] On Behalf Of
>>> maurizio.cimadamore at oracle.com
>>> Sent: Thursday, May 27, 2010 1:33 PM
>>> To: lambda-dev at openjdk.java.net
>>> Subject: hg: lambda/lambda/langtools: initial lambda push;the current
>>> prototype suuports the following features:
>>>
>>> Changeset: 7704dcd17e0b
>>> Author:    mcimadamore
>>> Date:      2010-05-27 18:11 +0100
>>> URL:
>>> http://hg.openjdk.java.net/lambda/lambda/langtools/rev/7704dcd17e0b
>>>
>>> initial lambda push; the current prototype suuports the following
>>> features:
>>> *) function types syntax (optionally enabled with -XDallowFunctionTypes)
>>> *) function types subtyping
>>> *) full support for lambda expression of type 1 and 2
>>> *) inference of thrown types/return type in a lambda
>>> *) lambda conversion using rules specified in v0.1.5 draft
>>> *) support references to 'this' (both explicit and implicit)
>>> *) translation using method handles
>>>
>>> The modified script build of the langtools repository now generates an
>>> additional jarfile called javacrt.jar which contains an helper class to
>>> be used during SAM conversion; after the build, the generated scripts
>>> javac/java will take care of automatically setting up the required
>>> dependencies so that code containing lambda expressions can be compiled
>>> and executed.
>>>
>>> ! make/build.properties
>>> ! make/build.xml
>>> + src/share/bin/java.sh-template
>>> ! src/share/bin/launcher.sh-template
>>> + src/share/classes/com/sun/runtime/ProxyHelper.java
>>> + src/share/classes/com/sun/source/tree/FunctionTypeTree.java
>>> + src/share/classes/com/sun/source/tree/LambdaExpressionTree.java
>>> ! src/share/classes/com/sun/source/tree/Tree.java
>>> ! src/share/classes/com/sun/source/tree/TreeVisitor.java
>>> ! src/share/classes/com/sun/source/util/SimpleTreeVisitor.java
>>> ! src/share/classes/com/sun/source/util/TreeScanner.java
>>> ! src/share/classes/com/sun/tools/javac/code/Flags.java
>>> ! src/share/classes/com/sun/tools/javac/code/Printer.java
>>> ! src/share/classes/com/sun/tools/javac/code/Scope.java
>>> ! src/share/classes/com/sun/tools/javac/code/Source.java
>>> ! src/share/classes/com/sun/tools/javac/code/Symtab.java
>>> ! src/share/classes/com/sun/tools/javac/code/Type.java
>>> ! src/share/classes/com/sun/tools/javac/code/Types.java
>>> ! src/share/classes/com/sun/tools/javac/comp/Attr.java
>>> ! src/share/classes/com/sun/tools/javac/comp/Check.java
>>> ! src/share/classes/com/sun/tools/javac/comp/Flow.java
>>> ! src/share/classes/com/sun/tools/javac/comp/Lower.java
>>> ! src/share/classes/com/sun/tools/javac/comp/Resolve.java
>>> ! src/share/classes/com/sun/tools/javac/comp/TransTypes.java
>>> ! src/share/classes/com/sun/tools/javac/jvm/ClassReader.java
>>> ! src/share/classes/com/sun/tools/javac/jvm/ClassWriter.java
>>> ! src/share/classes/com/sun/tools/javac/parser/JavacParser.java
>>> ! src/share/classes/com/sun/tools/javac/parser/Scanner.java
>>> ! src/share/classes/com/sun/tools/javac/parser/Token.java
>>> ! src/share/classes/com/sun/tools/javac/resources/compiler.properties
>>> ! src/share/classes/com/sun/tools/javac/tree/JCTree.java
>>> ! src/share/classes/com/sun/tools/javac/tree/Pretty.java
>>> ! src/share/classes/com/sun/tools/javac/tree/TreeCopier.java
>>> ! src/share/classes/com/sun/tools/javac/tree/TreeMaker.java
>>> ! src/share/classes/com/sun/tools/javac/tree/TreeScanner.java
>>> ! src/share/classes/com/sun/tools/javac/tree/TreeTranslator.java
>>> ! src/share/classes/com/sun/tools/javac/util/Names.java
>>> !
>>> src/share/classes/com/sun/tools/javac/util/RichDiagnosticFormatter.java
>>> + test/tools/javac/lambda/LambdaCapture01.java
>>> + test/tools/javac/lambda/LambdaConv01.java
>>> + test/tools/javac/lambda/LambdaExpr01.java
>>> + test/tools/javac/lambda/LambdaExpr02.java
>>> + test/tools/javac/lambda/LambdaScope01.java
>>> + test/tools/javac/lambda/NakedThis.java
>>> + test/tools/javac/lambda/NakedThis.out
>>>
>>>
>>>
>>>
>>>        
>>
>>      
>
>    



More information about the lambda-dev mailing list