1 Processing 'const-method-handle.dex'... 2 Opened 'const-method-handle.dex', DEX version '039' 3 DEX file header: 4 magic : 'dex\n039\0' 5 checksum : 16656a27 6 signature : 1953...5aa5 7 file_size : 2524 8 header_size : 112 9 link_size : 0 10 link_off : 0 (0x000000) 11 string_ids_size : 57 12 string_ids_off : 112 (0x000070) 13 type_ids_size : 26 14 type_ids_off : 340 (0x000154) 15 proto_ids_size : 18 16 proto_ids_off : 444 (0x0001bc) 17 field_ids_size : 2 18 field_ids_off : 660 (0x000294) 19 method_ids_size : 23 20 method_ids_off : 676 (0x0002a4) 21 class_defs_size : 2 22 class_defs_off : 860 (0x00035c) 23 data_size : 1588 24 data_off : 936 (0x0003a8) 25 26 Class #0 header: 27 class_idx : 5 28 access_flags : 1 (0x0001) 29 superclass_idx : 11 30 interfaces_off : 0 (0x000000) 31 source_file_idx : 29 32 annotations_off : 1336 (0x000538) 33 class_data_off : 2270 (0x0008de) 34 static_fields_size : 0 35 instance_fields_size: 0 36 direct_methods_size : 2 37 virtual_methods_size: 0 38 39 Class #0 annotations: 40 Annotations on method #1 'main' 41 VISIBILITY_SYSTEM Ldalvik/annotation/Throws; value={ Ljava/lang/Throwable; } 42 43 Class #0 - 44 Class descriptor : 'LMain;' 45 Access flags : 0x0001 (PUBLIC) 46 Superclass : 'Ljava/lang/Object;' 47 Interfaces - 48 Static fields - 49 Instance fields - 50 Direct methods - 51 #0 : (in LMain;) 52 name : '<init>' 53 type : '()V' 54 access : 0x10001 (PUBLIC CONSTRUCTOR) 55 code - 56 registers : 1 57 ins : 1 58 outs : 1 59 insns size : 4 16-bit code units 60 0003b0: |[0003b0] Main.<init>:()V 61 0003c0: 7010 0a00 0000 |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@000a 62 0003c6: 0e00 |0003: return-void 63 catches : (none) 64 positions : 65 0x0000 line=22 66 locals : 67 0x0000 - 0x0004 reg=0 this LMain; 68 69 #1 : (in LMain;) 70 name : 'main' 71 type : '([Ljava/lang/String;)V' 72 access : 0x0009 (PUBLIC STATIC) 73 code - 74 registers : 6 75 ins : 1 76 outs : 4 77 insns size : 25 16-bit code units 78 0003c8: |[0003c8] Main.main:([Ljava/lang/String;)V 79 0003d8: 7100 1500 0000 |0000: invoke-static {}, Ljava/lang/invoke/MethodHandles;.lookup:()Ljava/lang/invoke/MethodHandles$Lookup; // method@0015 80 0003de: 0c00 |0003: move-result-object v0 81 0003e0: 1c01 0600 |0004: const-class v1, Lconstmethodhandle/ConstTest; // type@0006 82 0003e4: 1a02 3000 |0006: const-string v2, "main" // string@0030 83 0003e8: 6203 0100 |0008: sget-object v3, Ljava/lang/Void;.TYPE:Ljava/lang/Class; // field@0001 84 0003ec: 1c04 1900 |000a: const-class v4, [Ljava/lang/String; // type@0019 85 0003f0: 7120 1600 4300 |000c: invoke-static {v3, v4}, Ljava/lang/invoke/MethodType;.methodType:(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/invoke/MethodType; // method@0016 86 0003f6: 0c03 |000f: move-result-object v3 87 0003f8: 6e40 1400 1032 |0010: invoke-virtual {v0, v1, v2, v3}, Ljava/lang/invoke/MethodHandles$Lookup;.findStatic:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@0014 88 0003fe: 0c00 |0013: move-result-object v0 89 000400: fa20 1200 5000 1000 |0014: invoke-polymorphic {v0, v5}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, ([Ljava/lang/String;)V // method@0012, proto@0010 90 000408: 0e00 |0018: return-void 91 catches : (none) 92 positions : 93 0x0000 line=26 94 0x000c line=27 95 0x0014 line=28 96 0x0018 line=29 97 locals : 98 0x0000 - 0x0019 reg=5 (null) [Ljava/lang/String; 99 100 Virtual methods - 101 source_file_idx : 29 (Main.java) 102 103 Class #1 header: 104 class_idx : 6 105 access_flags : 1 (0x0001) 106 superclass_idx : 11 107 interfaces_off : 0 (0x000000) 108 source_file_idx : 3 109 annotations_off : 1360 (0x000550) 110 class_data_off : 2284 (0x0008ec) 111 static_fields_size : 0 112 instance_fields_size: 0 113 direct_methods_size : 6 114 virtual_methods_size: 0 115 116 Class #1 annotations: 117 Annotations on method #3 'displayMethodHandle' 118 VISIBILITY_SYSTEM Ldalvik/annotation/Throws; value={ Ljava/lang/Throwable; } 119 120 Class #1 - 121 Class descriptor : 'Lconstmethodhandle/ConstTest;' 122 Access flags : 0x0001 (PUBLIC) 123 Superclass : 'Ljava/lang/Object;' 124 Interfaces - 125 Static fields - 126 Instance fields - 127 Direct methods - 128 #0 : (in Lconstmethodhandle/ConstTest;) 129 name : '<init>' 130 type : '()V' 131 access : 0x10001 (PUBLIC CONSTRUCTOR) 132 code - 133 registers : 1 134 ins : 1 135 outs : 1 136 insns size : 4 16-bit code units 137 00040c: |[00040c] constmethodhandle.ConstTest.<init>:()V 138 00041c: 7010 0a00 0000 |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@000a 139 000422: 0e00 |0003: return-void 140 catches : (none) 141 positions : 142 0x0000 line=22 143 locals : 144 0x0000 - 0x0004 reg=0 this Lconstmethodhandle/ConstTest; 145 146 #1 : (in Lconstmethodhandle/ConstTest;) 147 name : 'displayMethodHandle' 148 type : '(Ljava/lang/invoke/MethodHandle;)V' 149 access : 0x000a (PRIVATE STATIC) 150 code - 151 registers : 4 152 ins : 1 153 outs : 2 154 insns size : 47 16-bit code units 155 000424: |[000424] constmethodhandle.ConstTest.displayMethodHandle:(Ljava/lang/invoke/MethodHandle;)V 156 000434: 6200 0000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0000 157 000438: 2201 0d00 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@000d 158 00043c: 7010 0c00 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@000c 159 000442: 1a02 1e00 |0007: const-string v2, "MethodHandle " // string@001e 160 000446: 6e20 0e00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@000e 161 00044c: 0c01 |000c: move-result-object v1 162 00044e: 6e20 0d00 3100 |000d: invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@000d 163 000454: 0c01 |0010: move-result-object v1 164 000456: 1a02 0000 |0011: const-string v2, " => " // string@0000 165 00045a: 6e20 0e00 2100 |0013: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@000e 166 000460: 0c01 |0016: move-result-object v1 167 000462: 1402 0030 4046 |0017: const v2, #float 12300 // #46403000 168 000468: 7110 0900 0200 |001a: invoke-static {v2}, Ljava/lang/Float;.valueOf:(F)Ljava/lang/Float; // method@0009 169 00046e: 0c02 |001d: move-result-object v2 170 000470: fa20 1100 2300 0100 |001e: invoke-polymorphic {v3, v2}, Ljava/lang/invoke/MethodHandle;.invoke:([Ljava/lang/Object;)Ljava/lang/Object;, (Ljava/lang/Object;)Ljava/lang/Class; // method@0011, proto@0001 171 000478: 0c02 |0022: move-result-object v2 172 00047a: 6e20 0d00 2100 |0023: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@000d 173 000480: 0c01 |0026: move-result-object v1 174 000482: 6e10 0f00 0100 |0027: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@000f 175 000488: 0c01 |002a: move-result-object v1 176 00048a: 6e20 0800 1000 |002b: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@0008 177 000490: 0e00 |002e: return-void 178 catches : (none) 179 positions : 180 0x0000 line=24 181 0x001a line=25 182 0x002b line=24 183 0x002e line=26 184 locals : 185 0x0000 - 0x002f reg=3 (null) Ljava/lang/invoke/MethodHandle; 186 187 #2 : (in Lconstmethodhandle/ConstTest;) 188 name : 'displayMethodType' 189 type : '(Ljava/lang/invoke/MethodType;)V' 190 access : 0x000a (PRIVATE STATIC) 191 code - 192 registers : 4 193 ins : 1 194 outs : 2 195 insns size : 25 16-bit code units 196 000494: |[000494] constmethodhandle.ConstTest.displayMethodType:(Ljava/lang/invoke/MethodType;)V 197 0004a4: 6200 0000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0000 198 0004a8: 2201 0d00 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@000d 199 0004ac: 7010 0c00 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@000c 200 0004b2: 1a02 1f00 |0007: const-string v2, "MethodType " // string@001f 201 0004b6: 6e20 0e00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@000e 202 0004bc: 0c01 |000c: move-result-object v1 203 0004be: 6e20 0d00 3100 |000d: invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@000d 204 0004c4: 0c01 |0010: move-result-object v1 205 0004c6: 6e10 0f00 0100 |0011: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@000f 206 0004cc: 0c01 |0014: move-result-object v1 207 0004ce: 6e20 0800 1000 |0015: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@0008 208 0004d4: 0e00 |0018: return-void 209 catches : (none) 210 positions : 211 0x0000 line=29 212 0x0018 line=30 213 locals : 214 0x0000 - 0x0019 reg=3 (null) Ljava/lang/invoke/MethodType; 215 216 #3 : (in Lconstmethodhandle/ConstTest;) 217 name : 'main' 218 type : '([Ljava/lang/String;)V' 219 access : 0x0009 (PUBLIC STATIC) 220 code - 221 registers : 2 222 ins : 1 223 outs : 1 224 insns size : 15 16-bit code units 225 0004d8: |[0004d8] constmethodhandle.ConstTest.main:([Ljava/lang/String;)V 226 0004e8: 7100 0600 0000 |0000: invoke-static {}, Lconstmethodhandle/ConstTest;.test1:()Ljava/lang/invoke/MethodHandle; // method@0006 227 0004ee: 0c00 |0003: move-result-object v0 228 0004f0: 7110 0300 0000 |0004: invoke-static {v0}, Lconstmethodhandle/ConstTest;.displayMethodHandle:(Ljava/lang/invoke/MethodHandle;)V // method@0003 229 0004f6: 7100 0700 0000 |0007: invoke-static {}, Lconstmethodhandle/ConstTest;.test2:()Ljava/lang/invoke/MethodType; // method@0007 230 0004fc: 0c00 |000a: move-result-object v0 231 0004fe: 7110 0400 0000 |000b: invoke-static {v0}, Lconstmethodhandle/ConstTest;.displayMethodType:(Ljava/lang/invoke/MethodType;)V // method@0004 232 000504: 0e00 |000e: return-void 233 catches : (none) 234 positions : 235 locals : 236 237 #4 : (in Lconstmethodhandle/ConstTest;) 238 name : 'test1' 239 type : '()Ljava/lang/invoke/MethodHandle;' 240 access : 0x0009 (PUBLIC STATIC) 241 code - 242 registers : 1 243 ins : 0 244 outs : 0 245 insns size : 3 16-bit code units 246 000508: |[000508] constmethodhandle.ConstTest.test1:()Ljava/lang/invoke/MethodHandle; 247 000518: fe00 0000 |0000: const-method-handle v0, method_handle@0000 248 00051c: 1100 |0002: return-object v0 249 catches : (none) 250 positions : 251 locals : 252 253 #5 : (in Lconstmethodhandle/ConstTest;) 254 name : 'test2' 255 type : '()Ljava/lang/invoke/MethodType;' 256 access : 0x0009 (PUBLIC STATIC) 257 code - 258 registers : 1 259 ins : 0 260 outs : 0 261 insns size : 3 16-bit code units 262 000520: |[000520] constmethodhandle.ConstTest.test2:()Ljava/lang/invoke/MethodType; 263 000530: ff00 1100 |0000: const-method-type v0, (CSIJFDLjava/lang/Object;)Z // proto@0011 264 000534: 1100 |0002: return-object v0 265 catches : (none) 266 positions : 267 locals : 268 269 Virtual methods - 270 source_file_idx : 3 (ConstTest.java) 271 272 Method handle #0: 273 type : invoke-instance 274 target : Ljava/lang/Object; getClass 275 target_type : (Ljava/lang/Object;)Ljava/lang/Class; 276