hg: lambda/lambda/langtools: Add support for creating lambda/method references through indy calls
Rémi Forax
forax at univ-mlv.fr
Tue Aug 9 06:05:50 PDT 2011
Hi Maurizio,
there is a simple way to avoid to create a supplementary bridge by
method reference
(which is not a bridge BTW), the adaptation of a method reference to a
SAM descriptor
can be done easily by sending the SAM descriptor to the BSM (encoded a
method type*).
Then at runtime, in the BSM, the constant method handle corresponding to
the method
reference can be converted to the SAM descriptor using asType().
Rémi
* you also forget that a method type is a valid constant for a bootstrap
argument in your patch).
On 08/08/2011 02:43 PM, maurizio.cimadamore at oracle.com wrote:
> Changeset: 95ae37c3d0cf
> Author: mcimadamore
> Date: 2011-08-08 13:42 +0100
> URL: http://hg.openjdk.java.net/lambda/lambda/langtools/rev/95ae37c3d0cf
>
> Add support for creating lambda/method references through indy calls
> *) Added code-generation support for BootstrapMethods attribute
> *) Added code-generation support for CONSTANT_InvokeDynamic CP entry
> *) Added simple bootstrap method used to create SAM instances (simply links to the old method using dynamic proxies)
> *) Added desugaring support for generating invokedynamic calls
>
> ! src/share/classes/com/sun/runtime/ProxyHelper.java
> ! src/share/classes/com/sun/tools/javac/code/Symbol.java
> ! src/share/classes/com/sun/tools/javac/code/Symtab.java
> ! src/share/classes/com/sun/tools/javac/comp/Attr.java
> ! src/share/classes/com/sun/tools/javac/comp/LambdaToMethod.java
> ! src/share/classes/com/sun/tools/javac/comp/LambdaTranslator.java
> ! src/share/classes/com/sun/tools/javac/jvm/ClassWriter.java
> ! src/share/classes/com/sun/tools/javac/jvm/Gen.java
> ! src/share/classes/com/sun/tools/javac/jvm/Items.java
> ! src/share/classes/com/sun/tools/javac/jvm/Pool.java
> ! 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/util/Names.java
>
>
More information about the lambda-dev
mailing list