[ 
https://issues.apache.org/jira/browse/BCEL-377?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18028058#comment-18028058
 ] 

Andrey Loskutov commented on BCEL-377:
--------------------------------------

ASM would generate this code for the lambda in the Java8Example:
{code}
.filter((String s) -> s.length() > 2)
{code}

{code:title=ASMifier version}
methodVisitor.visitInvokeDynamicInsn("test", 
"()Ljava/util/function/Predicate;", new Handle(Opcodes.H_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;",
 false), new Object[]{Type.getType("(Ljava/lang/Object;)Z"), new 
Handle(Opcodes.H_INVOKESTATIC, "Java8Example", "lambda$0", 
"(Ljava/lang/String;)Z", true), Type.getType("(Ljava/lang/String;)Z")});
{code}

BCEL however seem to do way less for same instruction:
{code:title=BCELifier version}
 il.append(_factory.createInvoke("test", "test", new 
ObjectType("java.util.function.Predicate"), Type.NO_ARGS, Const.INVOKEDYNAMIC));
{code}

So it looks to me, lambdas in BCEL are not really supported?

> Fix Java 24 and 25 tests and release
> ------------------------------------
>
>                 Key: BCEL-377
>                 URL: https://issues.apache.org/jira/browse/BCEL-377
>             Project: Commons BCEL
>          Issue Type: New Feature
>    Affects Versions: 6.10.0
>            Reporter: Dejan Stojadinović
>            Priority: Major
>              Labels: Java25, patch, patch-upgrade
>         Attachments: BCELifierTest.java, pom.xml, test_BAD_mvn_java25.txt, 
> test_OK_mvn_java21.txt
>
>
> *Prologue:* [https://github.com/spotbugs/spotbugs/issues/3569] SpotBugs: 
> Update to BCEL stable 6.11 release
> *Note:* it really doesn't have to be a full-blown 6.11.0 release; patch 
> 6.10.1 would do:
>  * version 6.10.0: 
> [https://github.com/apache/commons-bcel/releases/tag/rel%2Fcommons-bcel-6.10.0]
>  and
>  * commit: 
> [https://github.com/apache/commons-bcel/commit/70562832ce2cc8925787bacf53911615e6fbb2b7]
> FYI [~ggregory] 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to