Last active
June 13, 2021 09:05
-
-
Save KengoTODA/16533b8a0422719e7104d92fd9da5c94 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Classfile /Users/kengo/Downloads/PatternMatchingForSwitch.class | |
Last modified Jun 13, 2021; size 2141 bytes | |
MD5 checksum 5049ca7e9689aad18b98cb25608936e1 | |
Compiled from "PatternMatchingForSwitch.java" | |
public class PatternMatchingForSwitch | |
minor version: 65535 | |
major version: 61 | |
flags: (0x0021) ACC_PUBLIC, ACC_SUPER | |
this_class: #68 // PatternMatchingForSwitch | |
super_class: #2 // java/lang/Object | |
interfaces: 0, fields: 0, methods: 3, attributes: 3 | |
Constant pool: | |
#1 = Methodref #2.#3 // java/lang/Object."<init>":()V | |
#2 = Class #4 // java/lang/Object | |
#3 = NameAndType #5:#6 // "<init>":()V | |
#4 = Utf8 java/lang/Object | |
#5 = Utf8 <init> | |
#6 = Utf8 ()V | |
#7 = InvokeDynamic #0:#8 // #0:typeSwitch:(Ljava/lang/Object;I)I | |
#8 = NameAndType #9:#10 // typeSwitch:(Ljava/lang/Object;I)I | |
#9 = Utf8 typeSwitch | |
#10 = Utf8 (Ljava/lang/Object;I)I | |
#11 = Class #12 // java/lang/Integer | |
#12 = Utf8 java/lang/Integer | |
#13 = String #14 // int %d | |
#14 = Utf8 int %d | |
#15 = Methodref #16.#17 // java/lang/String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; | |
#16 = Class #18 // java/lang/String | |
#17 = NameAndType #19:#20 // format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; | |
#18 = Utf8 java/lang/String | |
#19 = Utf8 format | |
#20 = Utf8 (Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; | |
#21 = Class #22 // java/lang/Long | |
#22 = Utf8 java/lang/Long | |
#23 = String #24 // long %d | |
#24 = Utf8 long %d | |
#25 = Class #26 // java/lang/Double | |
#26 = Utf8 java/lang/Double | |
#27 = String #28 // double %f | |
#28 = Utf8 double %f | |
#29 = String #30 // String %s | |
#30 = Utf8 String %s | |
#31 = String #32 // null | |
#32 = Utf8 null | |
#33 = Methodref #2.#34 // java/lang/Object.toString:()Ljava/lang/String; | |
#34 = NameAndType #35:#36 // toString:()Ljava/lang/String; | |
#35 = Utf8 toString | |
#36 = Utf8 ()Ljava/lang/String; | |
#37 = Methodref #38.#39 // java/util/Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object; | |
#38 = Class #40 // java/util/Objects | |
#39 = NameAndType #41:#42 // requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object; | |
#40 = Utf8 java/util/Objects | |
#41 = Utf8 requireNonNull | |
#42 = Utf8 (Ljava/lang/Object;)Ljava/lang/Object; | |
#43 = InvokeDynamic #1:#8 // #1:typeSwitch:(Ljava/lang/Object;I)I | |
#44 = Class #45 // Triangle | |
#45 = Utf8 Triangle | |
#46 = Methodref #44.#47 // Triangle.calculateArea:()I | |
#47 = NameAndType #48:#49 // calculateArea:()I | |
#48 = Utf8 calculateArea | |
#49 = Utf8 ()I | |
#50 = Fieldref #51.#52 // java/lang/System.out:Ljava/io/PrintStream; | |
#51 = Class #53 // java/lang/System | |
#52 = NameAndType #54:#55 // out:Ljava/io/PrintStream; | |
#53 = Utf8 java/lang/System | |
#54 = Utf8 out | |
#55 = Utf8 Ljava/io/PrintStream; | |
#56 = String #57 // Large triangle | |
#57 = Utf8 Large triangle | |
#58 = Methodref #59.#60 // java/io/PrintStream.println:(Ljava/lang/String;)V | |
#59 = Class #61 // java/io/PrintStream | |
#60 = NameAndType #62:#63 // println:(Ljava/lang/String;)V | |
#61 = Utf8 java/io/PrintStream | |
#62 = Utf8 println | |
#63 = Utf8 (Ljava/lang/String;)V | |
#64 = String #65 // Small triangle | |
#65 = Utf8 Small triangle | |
#66 = String #67 // Non-triangle | |
#67 = Utf8 Non-triangle | |
#68 = Class #69 // PatternMatchingForSwitch | |
#69 = Utf8 PatternMatchingForSwitch | |
#70 = Utf8 Code | |
#71 = Utf8 LineNumberTable | |
#72 = Utf8 LocalVariableTable | |
#73 = Utf8 this | |
#74 = Utf8 LPatternMatchingForSwitch; | |
#75 = Utf8 formatterPatternSwitch | |
#76 = Utf8 (Ljava/lang/Object;)Ljava/lang/String; | |
#77 = Utf8 i | |
#78 = Utf8 Ljava/lang/Integer; | |
#79 = Utf8 l | |
#80 = Utf8 Ljava/lang/Long; | |
#81 = Utf8 d | |
#82 = Utf8 Ljava/lang/Double; | |
#83 = Utf8 s | |
#84 = Utf8 Ljava/lang/String; | |
#85 = Utf8 o | |
#86 = Utf8 Ljava/lang/Object; | |
#87 = Utf8 StackMapTable | |
#88 = Utf8 testTriangle | |
#89 = Utf8 (LShape;)V | |
#90 = Utf8 t | |
#91 = Utf8 LTriangle; | |
#92 = Utf8 LShape; | |
#93 = Class #94 // Shape | |
#94 = Utf8 Shape | |
#95 = Utf8 SourceFile | |
#96 = Utf8 PatternMatchingForSwitch.java | |
#97 = Utf8 BootstrapMethods | |
#98 = MethodHandle 6:#99 // REF_invokeStatic java/lang/runtime/SwitchBootstraps.typeSwitch:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; | |
#99 = Methodref #100.#101 // java/lang/runtime/SwitchBootstraps.typeSwitch:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; | |
#100 = Class #102 // java/lang/runtime/SwitchBootstraps | |
#101 = NameAndType #9:#103 // typeSwitch:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; | |
#102 = Utf8 java/lang/runtime/SwitchBootstraps | |
#103 = Utf8 (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; | |
#104 = Utf8 InnerClasses | |
#105 = Class #106 // java/lang/invoke/MethodHandles$Lookup | |
#106 = Utf8 java/lang/invoke/MethodHandles$Lookup | |
#107 = Class #108 // java/lang/invoke/MethodHandles | |
#108 = Utf8 java/lang/invoke/MethodHandles | |
#109 = Utf8 Lookup | |
{ | |
public PatternMatchingForSwitch(); | |
descriptor: ()V | |
flags: (0x0001) ACC_PUBLIC | |
Code: | |
stack=1, locals=1, args_size=1 | |
0: aload_0 | |
1: invokespecial #1 // Method java/lang/Object."<init>":()V | |
4: return | |
LineNumberTable: | |
line 16: 0 | |
LocalVariableTable: | |
Start Length Slot Name Signature | |
0 5 0 this LPatternMatchingForSwitch; | |
java.lang.String formatterPatternSwitch(java.lang.Object); | |
descriptor: (Ljava/lang/Object;)Ljava/lang/String; | |
flags: (0x0000) | |
Code: | |
stack=5, locals=8, args_size=2 | |
0: aload_1 | |
1: astore_2 | |
2: iconst_0 | |
3: istore_3 | |
4: aload_2 | |
5: iload_3 | |
6: invokedynamic #7, 0 // InvokeDynamic #0:typeSwitch:(Ljava/lang/Object;I)I | |
11: tableswitch { // -1 to 3 | |
-1: 136 | |
0: 44 | |
1: 67 | |
2: 90 | |
3: 113 | |
default: 141 | |
} | |
44: aload_2 | |
45: checkcast #11 // class java/lang/Integer | |
48: astore 4 | |
50: ldc #13 // String int %d | |
52: iconst_1 | |
53: anewarray #2 // class java/lang/Object | |
56: dup | |
57: iconst_0 | |
58: aload 4 | |
60: aastore | |
61: invokestatic #15 // Method java/lang/String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; | |
64: goto 145 | |
67: aload_2 | |
68: checkcast #21 // class java/lang/Long | |
71: astore 5 | |
73: ldc #23 // String long %d | |
75: iconst_1 | |
76: anewarray #2 // class java/lang/Object | |
79: dup | |
80: iconst_0 | |
81: aload 5 | |
83: aastore | |
84: invokestatic #15 // Method java/lang/String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; | |
87: goto 145 | |
90: aload_2 | |
91: checkcast #25 // class java/lang/Double | |
94: astore 6 | |
96: ldc #27 // String double %f | |
98: iconst_1 | |
99: anewarray #2 // class java/lang/Object | |
102: dup | |
103: iconst_0 | |
104: aload 6 | |
106: aastore | |
107: invokestatic #15 // Method java/lang/String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; | |
110: goto 145 | |
113: aload_2 | |
114: checkcast #16 // class java/lang/String | |
117: astore 7 | |
119: ldc #29 // String String %s | |
121: iconst_1 | |
122: anewarray #2 // class java/lang/Object | |
125: dup | |
126: iconst_0 | |
127: aload 7 | |
129: aastore | |
130: invokestatic #15 // Method java/lang/String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; | |
133: goto 145 | |
136: ldc #31 // String null | |
138: goto 145 | |
141: aload_1 | |
142: invokevirtual #33 // Method java/lang/Object.toString:()Ljava/lang/String; | |
145: areturn | |
LineNumberTable: | |
line 18: 0 | |
line 19: 44 | |
line 20: 67 | |
line 21: 90 | |
line 22: 113 | |
line 23: 136 | |
line 24: 141 | |
line 18: 145 | |
LocalVariableTable: | |
Start Length Slot Name Signature | |
50 17 4 i Ljava/lang/Integer; | |
73 17 5 l Ljava/lang/Long; | |
96 17 6 d Ljava/lang/Double; | |
119 17 7 s Ljava/lang/String; | |
0 146 0 this LPatternMatchingForSwitch; | |
0 146 1 o Ljava/lang/Object; | |
StackMapTable: number_of_entries = 8 | |
frame_type = 253 /* append */ | |
offset_delta = 4 | |
locals = [ class java/lang/Object, int ] | |
frame_type = 39 /* same */ | |
frame_type = 22 /* same */ | |
frame_type = 22 /* same */ | |
frame_type = 22 /* same */ | |
frame_type = 22 /* same */ | |
frame_type = 4 /* same */ | |
frame_type = 255 /* full_frame */ | |
offset_delta = 3 | |
locals = [ class PatternMatchingForSwitch, class java/lang/Object ] | |
stack = [ class java/lang/String ] | |
void testTriangle(Shape); | |
descriptor: (LShape;)V | |
flags: (0x0000) | |
Code: | |
stack=2, locals=6, args_size=2 | |
0: aload_1 | |
1: dup | |
2: invokestatic #37 // Method java/util/Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object; | |
5: pop | |
6: astore_2 | |
7: iconst_0 | |
8: istore_3 | |
9: aload_2 | |
10: iload_3 | |
11: invokedynamic #43, 0 // InvokeDynamic #1:typeSwitch:(Ljava/lang/Object;I)I | |
16: lookupswitch { // 2 | |
0: 44 | |
1: 76 | |
default: 93 | |
} | |
44: aload_2 | |
45: checkcast #44 // class Triangle | |
48: astore 4 | |
50: aload 4 | |
52: invokevirtual #46 // Method Triangle.calculateArea:()I | |
55: bipush 100 | |
57: if_icmpgt 65 | |
60: iconst_1 | |
61: istore_3 | |
62: goto 9 | |
65: getstatic #50 // Field java/lang/System.out:Ljava/io/PrintStream; | |
68: ldc #56 // String Large triangle | |
70: invokevirtual #58 // Method java/io/PrintStream.println:(Ljava/lang/String;)V | |
73: goto 104 | |
76: aload_2 | |
77: checkcast #44 // class Triangle | |
80: astore 5 | |
82: getstatic #50 // Field java/lang/System.out:Ljava/io/PrintStream; | |
85: ldc #64 // String Small triangle | |
87: invokevirtual #58 // Method java/io/PrintStream.println:(Ljava/lang/String;)V | |
90: goto 104 | |
93: getstatic #50 // Field java/lang/System.out:Ljava/io/PrintStream; | |
96: ldc #66 // String Non-triangle | |
98: invokevirtual #58 // Method java/io/PrintStream.println:(Ljava/lang/String;)V | |
101: goto 104 | |
104: return | |
LineNumberTable: | |
line 29: 0 | |
line 30: 44 | |
line 31: 65 | |
line 32: 76 | |
line 33: 82 | |
line 34: 93 | |
line 36: 104 | |
LocalVariableTable: | |
Start Length Slot Name Signature | |
50 26 4 t LTriangle; | |
82 11 5 t LTriangle; | |
0 105 0 this LPatternMatchingForSwitch; | |
0 105 1 s LShape; | |
StackMapTable: number_of_entries = 6 | |
frame_type = 253 /* append */ | |
offset_delta = 9 | |
locals = [ class Shape, int ] | |
frame_type = 34 /* same */ | |
frame_type = 252 /* append */ | |
offset_delta = 20 | |
locals = [ class Triangle ] | |
frame_type = 250 /* chop */ | |
offset_delta = 10 | |
frame_type = 16 /* same */ | |
frame_type = 249 /* chop */ | |
offset_delta = 10 | |
} | |
SourceFile: "PatternMatchingForSwitch.java" | |
BootstrapMethods: | |
0: #98 REF_invokeStatic java/lang/runtime/SwitchBootstraps.typeSwitch:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; | |
Method arguments: | |
#11 java/lang/Integer | |
#21 java/lang/Long | |
#25 java/lang/Double | |
#16 java/lang/String | |
1: #98 REF_invokeStatic java/lang/runtime/SwitchBootstraps.typeSwitch:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; | |
Method arguments: | |
#44 Triangle | |
#44 Triangle | |
InnerClasses: | |
public static final #109= #105 of #107; // Lookup=class java/lang/invoke/MethodHandles$Lookup of class java/lang/invoke/MethodHandles |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment