xref: /aosp_15_r20/external/ow2-asm/asm-test/src/resources/java/jdk11/AllInstructions.jasm (revision 2835e6bb194a25e32dae2cc0628d8f988b82bfc0)
1// ASM: a very small and fast Java bytecode manipulation framework
2// Copyright (c) 2000-2011 INRIA, France Telecom
3// All rights reserved.
4//
5// Redistribution and use in source and binary forms, with or without
6// modification, are permitted provided that the following conditions
7// are met:
8// 1. Redistributions of source code must retain the above copyright
9//    notice, this list of conditions and the following disclaimer.
10// 2. Redistributions in binary form must reproduce the above copyright
11//    notice, this list of conditions and the following disclaimer in the
12//    documentation and/or other materials provided with the distribution.
13// 3. Neither the name of the copyright holders nor the names of its
14//    contributors may be used to endorse or promote products derived from
15//    this software without specific prior written permission.
16//
17// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
27// THE POSSIBILITY OF SUCH DAMAGE.
28package  jdk11;
29
30/**
31 * A class with all the JDK11 specific instructions. A corresponding class file can be generated
32 * with the OpenJDK asmtools (https://wiki.openjdk.java.net/display/CodeTools/asmtools),
33 * version 7 or more. Usage:
34 *
35 *  java -jar asmtools.jar jasm AllInstructions.jasm
36 *
37 * @author Eric Bruneton
38 */
39super public class AllInstructions
40  version 55:0
41{
42
43
44public Method "<init>":"()V"
45  stack 1 locals 1
46{
47    aload_0;
48    invokespecial  Method java/lang/Object."<init>":"()V";
49    return;
50}
51
52public Method m:"()Ljava/lang/Object;"
53  stack 1 locals 1
54{
55    ldc  Dynamic REF_invokeStatic
56        :HandleOwner.handleField
57        :"(Ljava/lang/Object;)Ljava/lang/Object;"
58        :name
59        :"Ljava/lang/Object;" {
60      Dynamic REF_getStatic
61          :ArgumentHandleOwner.argumentHandleName
62          :"Ljava/lang/Object;"
63          :argumentName
64          :"Ljava/lang/Object;"
65    };
66    areturn;
67}
68
69public static Method primitiveExample:"()J"
70  stack 2 locals 0
71{
72    ldc2_w  Dynamic REF_invokeStatic
73        :jdk11/AllInstructions.bsm
74        :"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Class;)J"
75        :test
76        :"J";
77    lreturn;
78}
79
80private static Method bsm:"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Class;)J"
81  stack 2 locals 3
82{
83  bipush 42;
84  i2l;
85  lreturn;
86}
87
88public static Method main:"([Ljava/lang/String;)V"
89  stack 1 locals 2
90{
91    ldc  Dynamic REF_invokeStatic
92        :java/lang/invoke/LambdaMetafactory.metafactory
93        :"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Class;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/Object;"
94        :run
95        :"Ljava/lang/Runnable;" {
96      MethodType "()V",
97      MethodHandle REF_invokeStatic:AllInstructions.lambda$main$0:"()V",
98      MethodType "()V"
99    };
100    astore_1;
101    aload_1;
102    invokeinterface  InterfaceMethod java/lang/Runnable.run:"()V",  1;
103    return;
104}
105
106private static synthetic Method lambda$main$0:"()V"
107  stack 2 locals 0
108{
109    getstatic  Field java/lang/System.out:"Ljava/io/PrintStream;";
110    ldc  String "hello condy";
111    invokevirtual  Method java/io/PrintStream.println:"(Ljava/lang/String;)V";
112    return;
113}
114
115public static final InnerClass Lookup=
116    class java/lang/invoke/MethodHandles$Lookup of class java/lang/invoke/MethodHandles;
117
118} // end Class AllInstructions
119
120