284 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			284 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| Processing 'const-method-handle.dex'...
 | |
| Opened 'const-method-handle.dex', DEX version '039'
 | |
| DEX file header:
 | |
| magic               : 'dex\n039\0'
 | |
| checksum            : 16656a27
 | |
| signature           : 1953...5aa5
 | |
| file_size           : 2524
 | |
| header_size         : 112
 | |
| link_size           : 0
 | |
| link_off            : 0 (0x000000)
 | |
| string_ids_size     : 57
 | |
| string_ids_off      : 112 (0x000070)
 | |
| type_ids_size       : 26
 | |
| type_ids_off        : 340 (0x000154)
 | |
| proto_ids_size      : 18
 | |
| proto_ids_off       : 444 (0x0001bc)
 | |
| field_ids_size      : 2
 | |
| field_ids_off       : 660 (0x000294)
 | |
| method_ids_size     : 23
 | |
| method_ids_off      : 676 (0x0002a4)
 | |
| class_defs_size     : 2
 | |
| class_defs_off      : 860 (0x00035c)
 | |
| data_size           : 1588
 | |
| data_off            : 936 (0x0003a8)
 | |
| 
 | |
| Class #0 header:
 | |
| class_idx           : 5
 | |
| access_flags        : 1 (0x0001)
 | |
| superclass_idx      : 11
 | |
| interfaces_off      : 0 (0x000000)
 | |
| source_file_idx     : 29
 | |
| annotations_off     : 1336 (0x000538)
 | |
| class_data_off      : 2270 (0x0008de)
 | |
| static_fields_size  : 0
 | |
| instance_fields_size: 0
 | |
| direct_methods_size : 2
 | |
| virtual_methods_size: 0
 | |
| 
 | |
| Class #0 annotations:
 | |
| Annotations on method #1 'main'
 | |
|   VISIBILITY_SYSTEM Ldalvik/annotation/Throws; value={ Ljava/lang/Throwable; }
 | |
| 
 | |
| Class #0            -
 | |
|   Class descriptor  : 'LMain;'
 | |
|   Access flags      : 0x0001 (PUBLIC)
 | |
|   Superclass        : 'Ljava/lang/Object;'
 | |
|   Interfaces        -
 | |
|   Static fields     -
 | |
|   Instance fields   -
 | |
|   Direct methods    -
 | |
|     #0              : (in LMain;)
 | |
|       name          : '<init>'
 | |
|       type          : '()V'
 | |
|       access        : 0x10001 (PUBLIC CONSTRUCTOR)
 | |
|       method_idx    : 0
 | |
|       code          -
 | |
|       registers     : 1
 | |
|       ins           : 1
 | |
|       outs          : 1
 | |
|       insns size    : 4 16-bit code units
 | |
| 0003b0:                                        |[0003b0] Main.<init>:()V
 | |
| 0003c0: 7010 0a00 0000                         |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@000a
 | |
| 0003c6: 0e00                                   |0003: return-void
 | |
|       catches       : (none)
 | |
|       positions     :
 | |
|         0x0000 line=22
 | |
|       locals        :
 | |
|         0x0000 - 0x0004 reg=0 this LMain;
 | |
| 
 | |
|     #1              : (in LMain;)
 | |
|       name          : 'main'
 | |
|       type          : '([Ljava/lang/String;)V'
 | |
|       access        : 0x0009 (PUBLIC STATIC)
 | |
|       method_idx    : 1
 | |
|       code          -
 | |
|       registers     : 6
 | |
|       ins           : 1
 | |
|       outs          : 4
 | |
|       insns size    : 25 16-bit code units
 | |
| 0003c8:                                        |[0003c8] Main.main:([Ljava/lang/String;)V
 | |
| 0003d8: 7100 1500 0000                         |0000: invoke-static {}, Ljava/lang/invoke/MethodHandles;.lookup:()Ljava/lang/invoke/MethodHandles$Lookup; // method@0015
 | |
| 0003de: 0c00                                   |0003: move-result-object v0
 | |
| 0003e0: 1c01 0600                              |0004: const-class v1, Lconstmethodhandle/ConstTest; // type@0006
 | |
| 0003e4: 1a02 3000                              |0006: const-string v2, "main" // string@0030
 | |
| 0003e8: 6203 0100                              |0008: sget-object v3, Ljava/lang/Void;.TYPE:Ljava/lang/Class; // field@0001
 | |
| 0003ec: 1c04 1900                              |000a: const-class v4, [Ljava/lang/String; // type@0019
 | |
| 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
 | |
| 0003f6: 0c03                                   |000f: move-result-object v3
 | |
| 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
 | |
| 0003fe: 0c00                                   |0013: move-result-object v0
 | |
| 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
 | |
| 000408: 0e00                                   |0018: return-void
 | |
|       catches       : (none)
 | |
|       positions     :
 | |
|         0x0000 line=26
 | |
|         0x000c line=27
 | |
|         0x0014 line=28
 | |
|         0x0018 line=29
 | |
|       locals        :
 | |
|         0x0000 - 0x0019 reg=5 (null) [Ljava/lang/String;
 | |
| 
 | |
|   Virtual methods   -
 | |
|   source_file_idx   : 29 (Main.java)
 | |
| 
 | |
| Class #1 header:
 | |
| class_idx           : 6
 | |
| access_flags        : 1 (0x0001)
 | |
| superclass_idx      : 11
 | |
| interfaces_off      : 0 (0x000000)
 | |
| source_file_idx     : 3
 | |
| annotations_off     : 1360 (0x000550)
 | |
| class_data_off      : 2284 (0x0008ec)
 | |
| static_fields_size  : 0
 | |
| instance_fields_size: 0
 | |
| direct_methods_size : 6
 | |
| virtual_methods_size: 0
 | |
| 
 | |
| Class #1 annotations:
 | |
| Annotations on method #3 'displayMethodHandle'
 | |
|   VISIBILITY_SYSTEM Ldalvik/annotation/Throws; value={ Ljava/lang/Throwable; }
 | |
| 
 | |
| Class #1            -
 | |
|   Class descriptor  : 'Lconstmethodhandle/ConstTest;'
 | |
|   Access flags      : 0x0001 (PUBLIC)
 | |
|   Superclass        : 'Ljava/lang/Object;'
 | |
|   Interfaces        -
 | |
|   Static fields     -
 | |
|   Instance fields   -
 | |
|   Direct methods    -
 | |
|     #0              : (in Lconstmethodhandle/ConstTest;)
 | |
|       name          : '<init>'
 | |
|       type          : '()V'
 | |
|       access        : 0x10001 (PUBLIC CONSTRUCTOR)
 | |
|       method_idx    : 2
 | |
|       code          -
 | |
|       registers     : 1
 | |
|       ins           : 1
 | |
|       outs          : 1
 | |
|       insns size    : 4 16-bit code units
 | |
| 00040c:                                        |[00040c] constmethodhandle.ConstTest.<init>:()V
 | |
| 00041c: 7010 0a00 0000                         |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@000a
 | |
| 000422: 0e00                                   |0003: return-void
 | |
|       catches       : (none)
 | |
|       positions     :
 | |
|         0x0000 line=22
 | |
|       locals        :
 | |
|         0x0000 - 0x0004 reg=0 this Lconstmethodhandle/ConstTest;
 | |
| 
 | |
|     #1              : (in Lconstmethodhandle/ConstTest;)
 | |
|       name          : 'displayMethodHandle'
 | |
|       type          : '(Ljava/lang/invoke/MethodHandle;)V'
 | |
|       access        : 0x000a (PRIVATE STATIC)
 | |
|       method_idx    : 3
 | |
|       code          -
 | |
|       registers     : 4
 | |
|       ins           : 1
 | |
|       outs          : 2
 | |
|       insns size    : 47 16-bit code units
 | |
| 000424:                                        |[000424] constmethodhandle.ConstTest.displayMethodHandle:(Ljava/lang/invoke/MethodHandle;)V
 | |
| 000434: 6200 0000                              |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0000
 | |
| 000438: 2201 0d00                              |0002: new-instance v1, Ljava/lang/StringBuilder; // type@000d
 | |
| 00043c: 7010 0c00 0100                         |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@000c
 | |
| 000442: 1a02 1e00                              |0007: const-string v2, "MethodHandle " // string@001e
 | |
| 000446: 6e20 0e00 2100                         |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@000e
 | |
| 00044c: 0c01                                   |000c: move-result-object v1
 | |
| 00044e: 6e20 0d00 3100                         |000d: invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@000d
 | |
| 000454: 0c01                                   |0010: move-result-object v1
 | |
| 000456: 1a02 0000                              |0011: const-string v2, " => " // string@0000
 | |
| 00045a: 6e20 0e00 2100                         |0013: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@000e
 | |
| 000460: 0c01                                   |0016: move-result-object v1
 | |
| 000462: 1402 0030 4046                         |0017: const v2, #float 12300 // #46403000
 | |
| 000468: 7110 0900 0200                         |001a: invoke-static {v2}, Ljava/lang/Float;.valueOf:(F)Ljava/lang/Float; // method@0009
 | |
| 00046e: 0c02                                   |001d: move-result-object v2
 | |
| 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
 | |
| 000478: 0c02                                   |0022: move-result-object v2
 | |
| 00047a: 6e20 0d00 2100                         |0023: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@000d
 | |
| 000480: 0c01                                   |0026: move-result-object v1
 | |
| 000482: 6e10 0f00 0100                         |0027: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@000f
 | |
| 000488: 0c01                                   |002a: move-result-object v1
 | |
| 00048a: 6e20 0800 1000                         |002b: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@0008
 | |
| 000490: 0e00                                   |002e: return-void
 | |
|       catches       : (none)
 | |
|       positions     :
 | |
|         0x0000 line=24
 | |
|         0x001a line=25
 | |
|         0x002b line=24
 | |
|         0x002e line=26
 | |
|       locals        :
 | |
|         0x0000 - 0x002f reg=3 (null) Ljava/lang/invoke/MethodHandle;
 | |
| 
 | |
|     #2              : (in Lconstmethodhandle/ConstTest;)
 | |
|       name          : 'displayMethodType'
 | |
|       type          : '(Ljava/lang/invoke/MethodType;)V'
 | |
|       access        : 0x000a (PRIVATE STATIC)
 | |
|       method_idx    : 4
 | |
|       code          -
 | |
|       registers     : 4
 | |
|       ins           : 1
 | |
|       outs          : 2
 | |
|       insns size    : 25 16-bit code units
 | |
| 000494:                                        |[000494] constmethodhandle.ConstTest.displayMethodType:(Ljava/lang/invoke/MethodType;)V
 | |
| 0004a4: 6200 0000                              |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0000
 | |
| 0004a8: 2201 0d00                              |0002: new-instance v1, Ljava/lang/StringBuilder; // type@000d
 | |
| 0004ac: 7010 0c00 0100                         |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@000c
 | |
| 0004b2: 1a02 1f00                              |0007: const-string v2, "MethodType " // string@001f
 | |
| 0004b6: 6e20 0e00 2100                         |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@000e
 | |
| 0004bc: 0c01                                   |000c: move-result-object v1
 | |
| 0004be: 6e20 0d00 3100                         |000d: invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@000d
 | |
| 0004c4: 0c01                                   |0010: move-result-object v1
 | |
| 0004c6: 6e10 0f00 0100                         |0011: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@000f
 | |
| 0004cc: 0c01                                   |0014: move-result-object v1
 | |
| 0004ce: 6e20 0800 1000                         |0015: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@0008
 | |
| 0004d4: 0e00                                   |0018: return-void
 | |
|       catches       : (none)
 | |
|       positions     :
 | |
|         0x0000 line=29
 | |
|         0x0018 line=30
 | |
|       locals        :
 | |
|         0x0000 - 0x0019 reg=3 (null) Ljava/lang/invoke/MethodType;
 | |
| 
 | |
|     #3              : (in Lconstmethodhandle/ConstTest;)
 | |
|       name          : 'main'
 | |
|       type          : '([Ljava/lang/String;)V'
 | |
|       access        : 0x0009 (PUBLIC STATIC)
 | |
|       method_idx    : 5
 | |
|       code          -
 | |
|       registers     : 2
 | |
|       ins           : 1
 | |
|       outs          : 1
 | |
|       insns size    : 15 16-bit code units
 | |
| 0004d8:                                        |[0004d8] constmethodhandle.ConstTest.main:([Ljava/lang/String;)V
 | |
| 0004e8: 7100 0600 0000                         |0000: invoke-static {}, Lconstmethodhandle/ConstTest;.test1:()Ljava/lang/invoke/MethodHandle; // method@0006
 | |
| 0004ee: 0c00                                   |0003: move-result-object v0
 | |
| 0004f0: 7110 0300 0000                         |0004: invoke-static {v0}, Lconstmethodhandle/ConstTest;.displayMethodHandle:(Ljava/lang/invoke/MethodHandle;)V // method@0003
 | |
| 0004f6: 7100 0700 0000                         |0007: invoke-static {}, Lconstmethodhandle/ConstTest;.test2:()Ljava/lang/invoke/MethodType; // method@0007
 | |
| 0004fc: 0c00                                   |000a: move-result-object v0
 | |
| 0004fe: 7110 0400 0000                         |000b: invoke-static {v0}, Lconstmethodhandle/ConstTest;.displayMethodType:(Ljava/lang/invoke/MethodType;)V // method@0004
 | |
| 000504: 0e00                                   |000e: return-void
 | |
|       catches       : (none)
 | |
|       positions     :
 | |
|       locals        :
 | |
| 
 | |
|     #4              : (in Lconstmethodhandle/ConstTest;)
 | |
|       name          : 'test1'
 | |
|       type          : '()Ljava/lang/invoke/MethodHandle;'
 | |
|       access        : 0x0009 (PUBLIC STATIC)
 | |
|       method_idx    : 6
 | |
|       code          -
 | |
|       registers     : 1
 | |
|       ins           : 0
 | |
|       outs          : 0
 | |
|       insns size    : 3 16-bit code units
 | |
| 000508:                                        |[000508] constmethodhandle.ConstTest.test1:()Ljava/lang/invoke/MethodHandle;
 | |
| 000518: fe00 0000                              |0000: const-method-handle v0, method_handle@0000
 | |
| 00051c: 1100                                   |0002: return-object v0
 | |
|       catches       : (none)
 | |
|       positions     :
 | |
|       locals        :
 | |
| 
 | |
|     #5              : (in Lconstmethodhandle/ConstTest;)
 | |
|       name          : 'test2'
 | |
|       type          : '()Ljava/lang/invoke/MethodType;'
 | |
|       access        : 0x0009 (PUBLIC STATIC)
 | |
|       method_idx    : 7
 | |
|       code          -
 | |
|       registers     : 1
 | |
|       ins           : 0
 | |
|       outs          : 0
 | |
|       insns size    : 3 16-bit code units
 | |
| 000520:                                        |[000520] constmethodhandle.ConstTest.test2:()Ljava/lang/invoke/MethodType;
 | |
| 000530: ff00 1100                              |0000: const-method-type v0, (CSIJFDLjava/lang/Object;)Z // proto@0011
 | |
| 000534: 1100                                   |0002: return-object v0
 | |
|       catches       : (none)
 | |
|       positions     :
 | |
|       locals        :
 | |
| 
 | |
|   Virtual methods   -
 | |
|   source_file_idx   : 3 (ConstTest.java)
 | |
| 
 | |
| Method handle #0:
 | |
|   type        : invoke-instance
 | |
|   target      : Ljava/lang/Object; getClass
 | |
|   target_type : (Ljava/lang/Object;)Ljava/lang/Class;
 |