1 Processing 'invoke-custom.dex'... 2 Opened 'invoke-custom.dex', DEX version '038' 3 DEX file header: 4 magic : 'dex\n038\0' 5 checksum : db57516f 6 signature : 57be...ffc4 7 file_size : 3276 8 header_size : 112 9 link_size : 0 10 link_off : 0 (0x000000) 11 string_ids_size : 82 12 string_ids_off : 112 (0x000070) 13 type_ids_size : 31 14 type_ids_off : 440 (0x0001b8) 15 proto_ids_size : 16 16 proto_ids_off : 564 (0x000234) 17 field_ids_size : 3 18 field_ids_off : 756 (0x0002f4) 19 method_ids_size : 18 20 method_ids_off : 780 (0x00030c) 21 class_defs_size : 1 22 class_defs_off : 932 (0x0003a4) 23 data_size : 2304 24 data_off : 972 (0x0003cc) 25 26 Class #0 header: 27 class_idx : 10 28 access_flags : 1 (0x0001) 29 superclass_idx : 15 30 interfaces_off : 0 (0x000000) 31 source_file_idx : 38 32 annotations_off : 1316 (0x000524) 33 class_data_off : 3014 (0x000bc6) 34 static_fields_size : 1 35 instance_fields_size: 0 36 direct_methods_size : 4 37 virtual_methods_size: 1 38 39 Class #0 annotations: 40 Annotations on method #1 'add' 41 VISIBILITY_BUILD Lcom/android/jack/annotations/CalledByInvokeCustom; argumentTypes={ I I } invokeMethodHandle={ Lcom/android/jack/annotations/LinkerMethodHandle; argumentTypes={ Ljava/lang/invoke/MethodHandles$Lookup; Ljava/lang/String; Ljava/lang/invoke/MethodType; Z B C S I F D Ljava/lang/String; Ljava/lang/Class; J } enclosingType=Lcom/android/jack/java7/invokecustom/test004/Tests; kind=INVOKE_STATIC name="linkerMethod" } methodHandleExtraArgs={ Lcom/android/jack/annotations/Constant; booleanValue={ true } Lcom/android/jack/annotations/Constant; byteValue={ 1 } Lcom/android/jack/annotations/Constant; charValue={ 97 } Lcom/android/jack/annotations/Constant; shortValue={ 1024 } Lcom/android/jack/annotations/Constant; intValue={ 1 } Lcom/android/jack/annotations/Constant; floatValue={ 11.1 } Lcom/android/jack/annotations/Constant; doubleValue={ 2.2 } Lcom/android/jack/annotations/Constant; stringValue={ "Hello" } Lcom/android/jack/annotations/Constant; classValue={ Lcom/android/jack/java7/invokecustom/test004/Tests; } Lcom/android/jack/annotations/Constant; longValue={ 123456789 } } name="add" returnType=I 42 Annotations on method #2 'linkerMethod' 43 VISIBILITY_SYSTEM Ldalvik/annotation/Signature; value={ "(" "Ljava/lang/invoke/MethodHandles$Lookup;" "Ljava/lang/String;" "Ljava/lang/invoke/MethodType;" "ZBCSIFD" "Ljava/lang/String;" "Ljava/lang/Class" "<*>;J)" "Ljava/lang/invoke/CallSite;" } 44 VISIBILITY_SYSTEM Ldalvik/annotation/Throws; value={ Ljava/lang/Throwable; } 45 Annotations on method #4 'test' 46 VISIBILITY_SYSTEM Ldalvik/annotation/Throws; value={ Ljava/lang/Throwable; } 47 VISIBILITY_RUNTIME Lorg/junit/Test; 48 49 Class #0 - 50 Class descriptor : 'Lcom/android/jack/java7/invokecustom/test004/Tests;' 51 Access flags : 0x0001 (PUBLIC) 52 Superclass : 'Ljava/lang/Object;' 53 Interfaces - 54 Static fields - 55 #0 : (in Lcom/android/jack/java7/invokecustom/test004/Tests;) 56 name : 'fieldCallSite' 57 type : 'Ljava/lang/invoke/CallSite;' 58 access : 0x0009 (PUBLIC STATIC) 59 Instance fields - 60 Direct methods - 61 #0 : (in Lcom/android/jack/java7/invokecustom/test004/Tests;) 62 name : '<init>' 63 type : '()V' 64 access : 0x10001 (PUBLIC CONSTRUCTOR) 65 code - 66 registers : 1 67 ins : 1 68 outs : 1 69 insns size : 4 16-bit code units 70 0003ec: |[0003ec] com.android.jack.java7.invokecustom.test004.Tests.<init>:()V 71 0003fc: 7010 0600 0000 |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0006 72 000402: 0e00 |0003: return-void 73 catches : (none) 74 positions : 75 0x0000 line=35 76 locals : 77 0x0000 - 0x0004 reg=0 this Lcom/android/jack/java7/invokecustom/test004/Tests; 78 79 #1 : (in Lcom/android/jack/java7/invokecustom/test004/Tests;) 80 name : 'add' 81 type : '(II)I' 82 access : 0x000a (PRIVATE STATIC) 83 code - 84 registers : 3 85 ins : 2 86 outs : 0 87 insns size : 3 16-bit code units 88 000404: |[000404] com.android.jack.java7.invokecustom.test004.Tests.add:(II)I 89 000414: 9000 0102 |0000: add-int v0, v1, v2 90 000418: 0f00 |0002: return v0 91 catches : (none) 92 positions : 93 0x0000 line=55 94 locals : 95 0x0000 - 0x0003 reg=1 (null) I 96 0x0000 - 0x0003 reg=2 (null) I 97 98 #2 : (in Lcom/android/jack/java7/invokecustom/test004/Tests;) 99 name : 'linkerMethod' 100 type : '(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;ZBCSIFDLjava/lang/String;Ljava/lang/Class;J)Ljava/lang/invoke/CallSite;' 101 access : 0x000a (PRIVATE STATIC) 102 code - 103 registers : 24 104 ins : 15 105 outs : 6 106 insns size : 83 16-bit code units 107 00041c: |[00041c] com.android.jack.java7.invokecustom.test004.Tests.linkerMethod:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;ZBCSIFDLjava/lang/String;Ljava/lang/Class;J)Ljava/lang/invoke/CallSite; 108 00042c: 7110 1100 0c00 |0000: invoke-static {v12}, Ljunit/framework/Assert;.assertTrue:(Z)V // method@0011 109 000432: 1212 |0003: const/4 v2, #int 1 // #1 110 000434: 7120 0d00 d200 |0004: invoke-static {v2, v13}, Ljunit/framework/Assert;.assertEquals:(II)V // method@000d 111 00043a: 1302 6100 |0007: const/16 v2, #int 97 // #61 112 00043e: 7120 0a00 e200 |0009: invoke-static {v2, v14}, Ljunit/framework/Assert;.assertEquals:(CC)V // method@000a 113 000444: 1302 0004 |000c: const/16 v2, #int 1024 // #400 114 000448: 7120 0d00 f200 |000e: invoke-static {v2, v15}, Ljunit/framework/Assert;.assertEquals:(II)V // method@000d 115 00044e: 1212 |0011: const/4 v2, #int 1 // #1 116 000450: 0200 1000 |0012: move/from16 v0, v16 117 000454: 7120 0d00 0200 |0014: invoke-static {v2, v0}, Ljunit/framework/Assert;.assertEquals:(II)V // method@000d 118 00045a: 1202 |0017: const/4 v2, #int 0 // #0 119 00045c: 1403 9a99 3141 |0018: const v3, #float 11.1 // #4131999a 120 000462: 0200 1100 |001b: move/from16 v0, v17 121 000466: 7130 0c00 0302 |001d: invoke-static {v3, v0, v2}, Ljunit/framework/Assert;.assertEquals:(FFF)V // method@000c 122 00046c: 1606 0000 |0020: const-wide/16 v6, #int 0 // #0 123 000470: 1802 9a99 9999 9999 0140 |0022: const-wide v2, #double 2.2 // #400199999999999a 124 00047a: 0504 1200 |0027: move-wide/from16 v4, v18 125 00047e: 7706 0b00 0200 |0029: invoke-static/range {v2, v3, v4, v5, v6, v7}, Ljunit/framework/Assert;.assertEquals:(DDD)V // method@000b 126 000484: 1b02 0700 0000 |002c: const-string/jumbo v2, "Hello" // string@00000007 127 00048a: 0800 1400 |002f: move-object/from16 v0, v20 128 00048e: 7120 1000 0200 |0031: invoke-static {v2, v0}, Ljunit/framework/Assert;.assertEquals:(Ljava/lang/String;Ljava/lang/String;)V // method@0010 129 000494: 1c02 0a00 |0034: const-class v2, Lcom/android/jack/java7/invokecustom/test004/Tests; // type@000a 130 000498: 0800 1500 |0036: move-object/from16 v0, v21 131 00049c: 7120 0f00 0200 |0038: invoke-static {v2, v0}, Ljunit/framework/Assert;.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V // method@000f 132 0004a2: 1702 15cd 5b07 |003b: const-wide/32 v2, #float 1.6536e-34 // #075bcd15 133 0004a8: 0500 1600 |003e: move-wide/from16 v0, v22 134 0004ac: 7140 0e00 3210 |0040: invoke-static {v2, v3, v0, v1}, Ljunit/framework/Assert;.assertEquals:(JJ)V // method@000e 135 0004b2: 7100 0900 0000 |0043: invoke-static {}, Ljava/lang/invoke/MethodHandles;.lookup:()Ljava/lang/invoke/MethodHandles$Lookup; // method@0009 136 0004b8: 0c02 |0046: move-result-object v2 137 0004ba: 1c03 0a00 |0047: const-class v3, Lcom/android/jack/java7/invokecustom/test004/Tests; // type@000a 138 0004be: 6e40 0800 32ba |0049: invoke-virtual {v2, v3, v10, v11}, Ljava/lang/invoke/MethodHandles$Lookup;.findStatic:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@0008 139 0004c4: 0c02 |004c: move-result-object v2 140 0004c6: 2203 1400 |004d: new-instance v3, Ljava/lang/invoke/ConstantCallSite; // type@0014 141 0004ca: 7020 0700 2300 |004f: invoke-direct {v3, v2}, Ljava/lang/invoke/ConstantCallSite;.<init>:(Ljava/lang/invoke/MethodHandle;)V // method@0007 142 0004d0: 1103 |0052: return-object v3 143 catches : (none) 144 positions : 145 0x0000 line=62 146 0x0003 line=63 147 0x0007 line=64 148 0x000c line=65 149 0x0011 line=66 150 0x0017 line=67 151 0x0020 line=68 152 0x002c line=69 153 0x0034 line=70 154 0x003b line=71 155 0x0043 line=72 156 0x004d line=73 157 locals : 158 0x0000 - 0x0053 reg=9 (null) Ljava/lang/invoke/MethodHandles$Lookup; 159 0x0000 - 0x0053 reg=10 (null) Ljava/lang/String; 160 0x0000 - 0x0053 reg=11 (null) Ljava/lang/invoke/MethodType; 161 0x0000 - 0x0053 reg=12 (null) Z 162 0x0000 - 0x0053 reg=13 (null) B 163 0x0000 - 0x0053 reg=14 (null) C 164 0x0000 - 0x0053 reg=15 (null) S 165 0x0000 - 0x0053 reg=16 (null) I 166 0x0000 - 0x0053 reg=17 (null) F 167 0x0000 - 0x0053 reg=18 (null) D 168 0x0000 - 0x0053 reg=20 (null) Ljava/lang/String; 169 0x0000 - 0x0053 reg=21 (null) Ljava/lang/Class; 170 0x0000 - 0x0053 reg=22 (null) J 171 172 #3 : (in Lcom/android/jack/java7/invokecustom/test004/Tests;) 173 name : 'main' 174 type : '([Ljava/lang/String;)V' 175 access : 0x0009 (PUBLIC STATIC) 176 code - 177 registers : 4 178 ins : 1 179 outs : 2 180 insns size : 12 16-bit code units 181 0004d4: |[0004d4] com.android.jack.java7.invokecustom.test004.Tests.main:([Ljava/lang/String;)V 182 0004e4: 6200 0200 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0002 183 0004e8: 1221 |0002: const/4 v1, #int 2 // #2 184 0004ea: 1232 |0003: const/4 v2, #int 3 // #3 185 0004ec: fc20 0000 2100 |0004: invoke-custom {v1, v2}, call_site@0000 186 0004f2: 0a01 |0007: move-result v1 187 0004f4: 6e20 0500 1000 |0008: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(I)V // method@0005 188 0004fa: 0e00 |000b: return-void 189 catches : (none) 190 positions : 191 0x0000 line=82 192 0x000b line=83 193 locals : 194 0x0000 - 0x000c reg=3 (null) [Ljava/lang/String; 195 196 Virtual methods - 197 #0 : (in Lcom/android/jack/java7/invokecustom/test004/Tests;) 198 name : 'test' 199 type : '()V' 200 access : 0x0001 (PUBLIC) 201 code - 202 registers : 3 203 ins : 1 204 outs : 2 205 insns size : 11 16-bit code units 206 0004fc: |[0004fc] com.android.jack.java7.invokecustom.test004.Tests.test:()V 207 00050c: 1220 |0000: const/4 v0, #int 2 // #2 208 00050e: 1231 |0001: const/4 v1, #int 3 // #3 209 000510: fc20 0100 1000 |0002: invoke-custom {v0, v1}, call_site@0001 210 000516: 0a00 |0005: move-result v0 211 000518: 1251 |0006: const/4 v1, #int 5 // #5 212 00051a: 7120 0d00 0100 |0007: invoke-static {v1, v0}, Ljunit/framework/Assert;.assertEquals:(II)V // method@000d 213 000520: 0e00 |000a: return-void 214 catches : (none) 215 positions : 216 0x0000 line=78 217 0x000a line=79 218 locals : 219 0x0000 - 0x000b reg=2 this Lcom/android/jack/java7/invokecustom/test004/Tests; 220 221 source_file_idx : 38 (Tests.java) 222 223 Method handle #0: 224 type : invoke-static 225 target : Lcom/android/jack/java7/invokecustom/test004/Tests; linkerMethod 226 target_type : (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;ZBCSIFDLjava/lang/String;Ljava/lang/Class;J)Ljava/lang/invoke/CallSite; 227 Call site #0: 228 link_argument[0] : 0 (MethodHandle) 229 link_argument[1] : add (String) 230 link_argument[2] : (II)I (MethodType) 231 link_argument[3] : 1 (int) 232 link_argument[4] : 1 (int) 233 link_argument[5] : 97 (int) 234 link_argument[6] : 1024 (int) 235 link_argument[7] : 1 (int) 236 link_argument[8] : 11.1 (float) 237 link_argument[9] : 2.2 (double) 238 link_argument[10] : Hello (String) 239 link_argument[11] : Tests (Class) 240 link_argument[12] : 123456789 (long) 241 Call site #1: 242 link_argument[0] : 0 (MethodHandle) 243 link_argument[1] : add (String) 244 link_argument[2] : (II)I (MethodType) 245 link_argument[3] : 1 (int) 246 link_argument[4] : 1 (int) 247 link_argument[5] : 97 (int) 248 link_argument[6] : 1024 (int) 249 link_argument[7] : 1 (int) 250 link_argument[8] : 11.1 (float) 251 link_argument[9] : 2.2 (double) 252 link_argument[10] : Hello (String) 253 link_argument[11] : Tests (Class) 254 link_argument[12] : 123456789 (long) 255