[ 
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)

Reply via email to