| /* |
| * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. |
| * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
| * |
| * This code is free software; you can redistribute it and/or modify it |
| * under the terms of the GNU General Public License version 2 only, as |
| * published by the Free Software Foundation. |
| * |
| * This code is distributed in the hope that it will be useful, but WITHOUT |
| * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
| * version 2 for more details (a copy is included in the LICENSE file that |
| * accompanied this code). |
| * |
| * You should have received a copy of the GNU General Public License version |
| * 2 along with this work; if not, write to the Free Software Foundation, |
| * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
| * |
| * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
| * or visit www.oracle.com if you need additional information or have any |
| * questions. |
| */ |
| |
| /* |
| * This test contains ldc_w instructions of condy's who generate dynamic constants |
| * of the following types: byte, char, short, int, float, boolean. |
| */ |
| class CondyUseLDC_W |
| version 55:0 |
| { |
| |
| public Method "<init>":"()V" |
| stack 1 locals 1 |
| { |
| aload_0; |
| invokespecial Method java/lang/Object."<init>":"()V"; |
| return; |
| } |
| |
| public static Method intConversion:"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Class;I)Ljava/lang/Object;" |
| throws java/lang/Throwable |
| stack 4 locals 6 |
| { |
| aload_1; |
| astore 4; |
| iconst_m1; |
| istore 5; |
| aload 4; |
| invokevirtual Method java/lang/String.hashCode:"()I"; |
| lookupswitch{ //11 |
| -2001159796: L238; |
| -1538095928: L272; |
| -891985903: L255; |
| 66: L108; |
| 67: L124; |
| 68: L140; |
| 70: L156; |
| 73: L172; |
| 74: L188; |
| 83: L204; |
| 90: L221; |
| default: L286 }; |
| L108: stack_frame_type append; |
| locals_map class java/lang/String, int; |
| aload 4; |
| ldc String "B"; |
| invokevirtual Method java/lang/String.equals:"(Ljava/lang/Object;)Z"; |
| ifeq L286; |
| iconst_0; |
| istore 5; |
| goto L286; |
| L124: stack_frame_type same; |
| aload 4; |
| ldc String "C"; |
| invokevirtual Method java/lang/String.equals:"(Ljava/lang/Object;)Z"; |
| ifeq L286; |
| iconst_1; |
| istore 5; |
| goto L286; |
| L140: stack_frame_type same; |
| aload 4; |
| ldc String "D"; |
| invokevirtual Method java/lang/String.equals:"(Ljava/lang/Object;)Z"; |
| ifeq L286; |
| iconst_2; |
| istore 5; |
| goto L286; |
| L156: stack_frame_type same; |
| aload 4; |
| ldc String "F"; |
| invokevirtual Method java/lang/String.equals:"(Ljava/lang/Object;)Z"; |
| ifeq L286; |
| iconst_3; |
| istore 5; |
| goto L286; |
| L172: stack_frame_type same; |
| aload 4; |
| ldc String "I"; |
| invokevirtual Method java/lang/String.equals:"(Ljava/lang/Object;)Z"; |
| ifeq L286; |
| iconst_4; |
| istore 5; |
| goto L286; |
| L188: stack_frame_type same; |
| aload 4; |
| ldc String "J"; |
| invokevirtual Method java/lang/String.equals:"(Ljava/lang/Object;)Z"; |
| ifeq L286; |
| iconst_5; |
| istore 5; |
| goto L286; |
| L204: stack_frame_type same; |
| aload 4; |
| ldc String "S"; |
| invokevirtual Method java/lang/String.equals:"(Ljava/lang/Object;)Z"; |
| ifeq L286; |
| bipush 6; |
| istore 5; |
| goto L286; |
| L221: stack_frame_type same; |
| aload 4; |
| ldc String "Z"; |
| invokevirtual Method java/lang/String.equals:"(Ljava/lang/Object;)Z"; |
| ifeq L286; |
| bipush 7; |
| istore 5; |
| goto L286; |
| L238: stack_frame_type same; |
| aload 4; |
| ldc String "nullRef"; |
| invokevirtual Method java/lang/String.equals:"(Ljava/lang/Object;)Z"; |
| ifeq L286; |
| bipush 8; |
| istore 5; |
| goto L286; |
| L255: stack_frame_type same; |
| aload 4; |
| ldc String "string"; |
| invokevirtual Method java/lang/String.equals:"(Ljava/lang/Object;)Z"; |
| ifeq L286; |
| bipush 9; |
| istore 5; |
| goto L286; |
| L272: stack_frame_type same; |
| aload 4; |
| ldc String "stringArray"; |
| invokevirtual Method java/lang/String.equals:"(Ljava/lang/Object;)Z"; |
| ifeq L286; |
| bipush 10; |
| istore 5; |
| L286: stack_frame_type same; |
| iload 5; |
| tableswitch{ //0 to 10 |
| 0: L348; |
| 1: L354; |
| 2: L360; |
| 3: L366; |
| 4: L372; |
| 5: L377; |
| 6: L383; |
| 7: L389; |
| 8: L402; |
| 9: L404; |
| 10: L407; |
| default: L422 }; |
| L348: stack_frame_type same; |
| iload_3; |
| i2b; |
| invokestatic Method java/lang/Byte.valueOf:"(B)Ljava/lang/Byte;"; |
| areturn; |
| L354: stack_frame_type same; |
| iload_3; |
| i2c; |
| invokestatic Method java/lang/Character.valueOf:"(C)Ljava/lang/Character;"; |
| areturn; |
| L360: stack_frame_type same; |
| iload_3; |
| i2d; |
| invokestatic Method java/lang/Double.valueOf:"(D)Ljava/lang/Double;"; |
| areturn; |
| L366: stack_frame_type same; |
| iload_3; |
| i2f; |
| invokestatic Method java/lang/Float.valueOf:"(F)Ljava/lang/Float;"; |
| areturn; |
| L372: stack_frame_type same; |
| iload_3; |
| invokestatic Method java/lang/Integer.valueOf:"(I)Ljava/lang/Integer;"; |
| areturn; |
| L377: stack_frame_type same; |
| iload_3; |
| i2l; |
| invokestatic Method java/lang/Long.valueOf:"(J)Ljava/lang/Long;"; |
| areturn; |
| L383: stack_frame_type same; |
| iload_3; |
| i2s; |
| invokestatic Method java/lang/Short.valueOf:"(S)Ljava/lang/Short;"; |
| areturn; |
| L389: stack_frame_type same; |
| iload_3; |
| ifle L397; |
| iconst_1; |
| goto L398; |
| L397: stack_frame_type same; |
| iconst_0; |
| L398: stack_frame_type stack1; |
| stack_map int; |
| invokestatic Method java/lang/Boolean.valueOf:"(Z)Ljava/lang/Boolean;"; |
| areturn; |
| L402: stack_frame_type same; |
| aconst_null; |
| areturn; |
| L404: stack_frame_type same; |
| ldc String "string"; |
| areturn; |
| L407: stack_frame_type same; |
| iconst_2; |
| anewarray class java/lang/String; |
| dup; |
| iconst_0; |
| ldc String "string"; |
| aastore; |
| dup; |
| iconst_1; |
| ldc String "string"; |
| aastore; |
| areturn; |
| L422: stack_frame_type same; |
| new class java/lang/BootstrapMethodError; |
| dup; |
| ldc String "Failure to generate a dynamic constant"; |
| invokespecial Method java/lang/BootstrapMethodError."<init>":"(Ljava/lang/String;)V"; |
| athrow; |
| } |
| |
| public static Method B:"()B" |
| stack 1 locals 0 |
| { |
| ldc_w Dynamic REF_invokeStatic:CondyUseLDC_W.intConversion:"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Class;I)Ljava/lang/Object;":B:"B" int 127; |
| ireturn; |
| } |
| |
| public static Method C:"()C" |
| stack 1 locals 0 |
| { |
| ldc_w Dynamic REF_invokeStatic:CondyUseLDC_W.intConversion:"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Class;I)Ljava/lang/Object;":C:"C" int 65535; |
| ireturn; |
| } |
| |
| public static Method F:"()F" |
| stack 1 locals 0 |
| { |
| ldc_w Dynamic REF_invokeStatic:CondyUseLDC_W.intConversion:"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Class;I)Ljava/lang/Object;":F:"F" int 2147483647; |
| freturn; |
| } |
| |
| public static Method F_AsType:"()F" |
| stack 1 locals 0 |
| { |
| ldc_w Dynamic REF_invokeStatic:CondyUseLDC_W.intConversion:"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Class;I)Ljava/lang/Object;":I:"F" int 2147483647; |
| freturn; |
| } |
| |
| public static Method I:"()I" |
| stack 1 locals 0 |
| { |
| ldc_w Dynamic REF_invokeStatic:CondyUseLDC_W.intConversion:"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Class;I)Ljava/lang/Object;":I:"I" int 2147483647; |
| ireturn; |
| } |
| |
| public static Method S:"()S" |
| stack 1 locals 0 |
| { |
| ldc_w Dynamic REF_invokeStatic:CondyUseLDC_W.intConversion:"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Class;I)Ljava/lang/Object;":S:"S" int 32767; |
| ireturn; |
| } |
| |
| public static Method Z_F:"()Z" |
| stack 1 locals 0 |
| { |
| ldc_w Dynamic REF_invokeStatic:CondyUseLDC_W.intConversion:"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Class;I)Ljava/lang/Object;":Z:"Z" int 0; |
| ireturn; |
| } |
| |
| public static Method Z_T:"()Z" |
| stack 1 locals 0 |
| { |
| ldc_w Dynamic REF_invokeStatic:CondyUseLDC_W.intConversion:"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Class;I)Ljava/lang/Object;":Z:"Z" int 1; |
| ireturn; |
| } |
| |
| public static Method main:"([Ljava/lang/String;)V" |
| stack 8 locals 1 |
| { |
| invokestatic Method B:"()B"; |
| invokestatic Method C:"()C"; |
| invokestatic Method S:"()S"; |
| invokestatic Method F:"()F"; |
| invokestatic Method F_AsType:"()F"; |
| invokestatic Method Z_F:"()Z"; |
| invokestatic Method Z_T:"()Z"; |
| invokestatic Method I:"()I"; |
| return; |
| } |
| |
| } // end Class CondyUseLDC_W |