[
https://issues.apache.org/jira/browse/BCEL-377?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18028101#comment-18028101
]
Andrey Loskutov commented on BCEL-377:
--------------------------------------
Here the javap output files produced by running *verbose* javap command on
javac generated class file and on BCEL generated class file.
{code}
/usr/lib/jvm/java-25/bin/javap -v -p -c -s -verify
/data/javac/Java8Example.class > /data/javac/javap_javac.txt
/usr/lib/jvm/java-25/bin/javap -v -p -c -s -verify
/data/bcel/Java8Example.class > /data/bcel/javap_bcel.txt
{code}
Note "BootstrapMethods" entry added by javac and missing in BCEL version.
Note also "InvokeDynamic #0" reference to the first bootstrap method in the
class:
{code}
#70 = Utf8 BootstrapMethods
#71 = MethodType #72 // (Ljava/lang/Object;)Z
#72 = Utf8 (Ljava/lang/Object;)Z
#73 = MethodHandle 6:#74 // REF_invokeStatic
Java8Example.lambda$hello$0:(Ljava/lang/String;)Z
#74 = InterfaceMethodref #57.#75 //
Java8Example.lambda$hello$0:(Ljava/lang/String;)Z
#75 = NameAndType #65:#66 //
lambda$hello$0:(Ljava/lang/String;)Z
#76 = MethodType #66 // (Ljava/lang/String;)Z
#77 = MethodHandle 6:#78 // REF_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;
#78 = Methodref #79.#80 //
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;
#79 = Class #81 // java/lang/invoke/LambdaMetafactory
#80 = NameAndType #82:#83 //
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;
#81 = Utf8 java/lang/invoke/LambdaMetafactory
#82 = Utf8 metafactory
#83 = Utf8
(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;
#84 = Utf8 InnerClasses
#85 = Class #86 //
java/lang/invoke/MethodHandles$Lookup
#86 = Utf8 java/lang/invoke/MethodHandles$Lookup
#87 = Class #88 // java/lang/invoke/MethodHandles
#88 = Utf8 java/lang/invoke/MethodHandles
#89 = Utf8 Lookup
...
36: invokedynamic #33, 0 // InvokeDynamic
#0:test:()Ljava/util/function/Predicate;
...
BootstrapMethods:
0: #77 REF_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;
Method arguments:
#71 (Ljava/lang/Object;)Z
#73 REF_invokeStatic Java8Example.lambda$hello$0:(Ljava/lang/String;)Z
#76 (Ljava/lang/String;)Z
{code}
These are abscent in BCEL version.
[^javap_bcel.txt] [^javap_javac.txt]
> 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, javap_bcel.txt, javap_javac.txt,
> 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)