1 2method Main.getHandleForStatic(java.lang.Class, java.lang.String, java.lang.invoke.MethodType):java.lang.invoke.MethodHandle 3{ 4 0| move-object/16 v13, v25 5 3| move-object/16 v14, v26 6 6| move-object/16 v15, v27 7 9| move-object/16 v12, v13 8 12| move-object/16 v13, v14 9 15| move-object/16 v14, v15 10 18| move-object/16 v11, v12 11 21| move-object/16 v12, v13 12 24| move-object/16 v13, v14 13 27| invoke-static {}, java.lang.invoke.MethodHandles.publicLookup():java.lang.invoke.MethodHandles$Lookup 14 30| move-result-object v9 15 31| invoke-virtual {v9,v11,v12,v13}, java.lang.invoke.MethodHandles$Lookup.findStatic(java.lang.Class, java.lang.String, java.lang.invoke.MethodType):java.lang.invoke.MethodHandle 16 34| move-result-object v10 17 35| return-object v10 18} 19 20method Main.getHandleForVirtual(java.lang.Class, java.lang.String, java.lang.invoke.MethodType):java.lang.invoke.MethodHandle 21{ 22 0| move-object/16 v13, v25 23 3| move-object/16 v14, v26 24 6| move-object/16 v15, v27 25 9| move-object/16 v12, v13 26 12| move-object/16 v13, v14 27 15| move-object/16 v14, v15 28 18| move-object/16 v11, v12 29 21| move-object/16 v12, v13 30 24| move-object/16 v13, v14 31 27| invoke-static {}, java.lang.invoke.MethodHandles.publicLookup():java.lang.invoke.MethodHandles$Lookup 32 30| move-result-object v9 33 31| invoke-virtual {v9,v11,v12,v13}, java.lang.invoke.MethodHandles$Lookup.findVirtual(java.lang.Class, java.lang.String, java.lang.invoke.MethodType):java.lang.invoke.MethodHandle 34 34| move-result-object v10 35 35| return-object v10 36} 37 38method Main.getLongCompareToHandle():java.lang.invoke.MethodHandle 39{ 40 0| new-instance v0, java.lang.Long 41 2| const-wide v1:v2, #+0 (0x0000000000000000 | 0.00000) 42 7| invoke-direct {v0,v1,v2}, java.lang.Long.<init>(long):void 43 10| invoke-virtual {v0}, java.lang.Object.getClass():java.lang.Class 44 13| move-result-object v0 45 14| sget-object v1, java.lang.Integer.TYPE 46 16| invoke-static {v1,v0}, java.lang.invoke.MethodType.methodType(java.lang.Class, java.lang.Class):java.lang.invoke.MethodType 47 19| move-result-object v2 48 20| const-string v3, "compareTo" 49 22| invoke-static {v0,v3,v2}, Main.getHandleForVirtual(java.lang.Class, java.lang.String, java.lang.invoke.MethodType):java.lang.invoke.MethodHandle 50 25| move-result-object v0 51 26| return-object v0 52} 53 54method Main.getStringConcatHandle():java.lang.invoke.MethodHandle 55{ 56 0| const-string v0, "concat" 57 2| invoke-virtual {v0}, java.lang.Object.getClass():java.lang.Class 58 5| move-result-object v1 59 6| invoke-static {v1,v1}, java.lang.invoke.MethodType.methodType(java.lang.Class, java.lang.Class):java.lang.invoke.MethodType 60 9| move-result-object v2 61 10| invoke-static {v1,v0,v2}, Main.getHandleForVirtual(java.lang.Class, java.lang.String, java.lang.invoke.MethodType):java.lang.invoke.MethodHandle 62 13| move-result-object v0 63 14| return-object v0 64} 65 66method Main.getStringValueOfLongHandle():java.lang.invoke.MethodHandle 67{ 68 0| sget-object v0, java.lang.Long.TYPE 69 2| const-string v1, "valueOf" 70 4| invoke-virtual {v1}, java.lang.Object.getClass():java.lang.Class 71 7| move-result-object v2 72 8| invoke-static {v2,v0}, java.lang.invoke.MethodType.methodType(java.lang.Class, java.lang.Class):java.lang.invoke.MethodType 73 11| move-result-object v3 74 12| invoke-static {v2,v1,v3}, Main.getHandleForStatic(java.lang.Class, java.lang.String, java.lang.invoke.MethodType):java.lang.invoke.MethodHandle 75 15| move-result-object v0 76 16| return-object v0 77} 78 79method Main.getStringValueOfObjectHandle():java.lang.invoke.MethodHandle 80{ 81 0| new-instance v0, java.lang.Object 82 2| invoke-direct {v0}, java.lang.Object.<init>():void 83 5| invoke-virtual {v0}, java.lang.Object.getClass():java.lang.Class 84 8| move-result-object v0 85 9| const-string v1, "valueOf" 86 11| invoke-virtual {v1}, java.lang.Object.getClass():java.lang.Class 87 14| move-result-object v2 88 15| invoke-static {v2,v0}, java.lang.invoke.MethodType.methodType(java.lang.Class, java.lang.Class):java.lang.invoke.MethodType 89 18| move-result-object v3 90 19| invoke-static {v2,v1,v3}, Main.getHandleForStatic(java.lang.Class, java.lang.String, java.lang.invoke.MethodType):java.lang.invoke.MethodHandle 91 22| move-result-object v0 92 23| return-object v0 93} 94 95method Main.main(java.lang.String[]):void 96{ 97 0| move-object/16 v15, v27 98 3| move-object/16 v14, v15 99 6| move-object/16 v13, v14 100 9| invoke-static {}, Main.getStringConcatHandle():java.lang.invoke.MethodHandle 101 12| move-result-object v9 102 13| const-string v10, "[String1]" 103 15| const-string v11, "+[String2]" 104 17| invoke-polymorphic {v9,v10,v11}, java.lang.invoke.MethodHandle.invokeExact(java.lang.Object[]):java.lang.Object, (java.lang.String, java.lang.String):java.lang.String 105 21| move-result-object v12 106 22| sget-object v13, java.lang.System.out 107 24| invoke-virtual {v13,v12}, java.io.PrintStream.println(java.lang.String):void 108 27| invoke-static {}, Main.getStringValueOfObjectHandle():java.lang.invoke.MethodHandle 109 30| move-result-object v9 110 31| const-string v10, "[String1]" 111 33| invoke-polymorphic {v9,v10}, java.lang.invoke.MethodHandle.invokeExact(java.lang.Object[]):java.lang.Object, (java.lang.Object):java.lang.String 112 37| move-result-object v12 113 38| sget-object v13, java.lang.System.out 114 40| invoke-virtual {v13,v12}, java.io.PrintStream.println(java.lang.String):void 115 43| invoke-static {}, Main.getStringConcatHandle():java.lang.invoke.MethodHandle 116 46| move-result-object v9 117 47| const-string v10, "[String1]" 118 49| const-string v11, "+[String2]" 119 51| invoke-polymorphic {v9,v10,v11}, java.lang.invoke.MethodHandle.invoke(java.lang.Object[]):java.lang.Object, (java.lang.Object, java.lang.Object):java.lang.String 120 55| move-result-object v12 121 56| sget-object v13, java.lang.System.out 122 58| invoke-virtual {v13,v12}, java.io.PrintStream.println(java.lang.String):void 123 61| invoke-static {}, Main.getStringValueOfLongHandle():java.lang.invoke.MethodHandle 124 64| move-result-object v9 125 65| const-wide v10:v11, #+42 (0x000000000000002a | 2.07508e-322) 126 70| invoke-polymorphic {v9,v10,v11}, java.lang.invoke.MethodHandle.invokeExact(java.lang.Object[]):java.lang.Object, (long):java.lang.String 127 74| move-result-object v12 128 75| sget-object v13, java.lang.System.out 129 77| invoke-virtual {v13,v12}, java.io.PrintStream.println(java.lang.String):void 130 80| const v10, #+40 (0x00000028 | 5.60519e-44) 131 83| invoke-polymorphic {v9,v10}, java.lang.invoke.MethodHandle.invoke(java.lang.Object[]):java.lang.Object, (int):java.lang.String 132 87| move-result-object v12 133 88| sget-object v13, java.lang.System.out 134 90| invoke-virtual {v13,v12}, java.io.PrintStream.println(java.lang.String):void 135 93| new-instance v10, java.lang.Long 136 95| const-wide v11:v12, #+43 (0x000000000000002b | 2.12448e-322) 137 100| invoke-direct {v10,v11,v12}, java.lang.Long.<init>(long):void 138 103| invoke-polymorphic {v9,v10}, java.lang.invoke.MethodHandle.invoke(java.lang.Object[]):java.lang.Object, (java.lang.Long):java.lang.String 139 107| move-result-object v12 140 108| sget-object v13, java.lang.System.out 141 110| invoke-virtual {v13,v12}, java.io.PrintStream.println(java.lang.String):void 142 113| new-instance v10, java.lang.Integer 143 115| const v11, #+44 (0x0000002c | 6.16571e-44) 144 118| invoke-direct {v10,v11}, java.lang.Integer.<init>(int):void 145 121| invoke-polymorphic {v9,v10}, java.lang.invoke.MethodHandle.invoke(java.lang.Object[]):java.lang.Object, (java.lang.Integer):java.lang.String 146 125| move-result-object v12 147 126| sget-object v13, java.lang.System.out 148 128| invoke-virtual {v13,v12}, java.io.PrintStream.println(java.lang.String):void 149 131| invoke-static {}, Main.getLongCompareToHandle():java.lang.invoke.MethodHandle 150 134| move-result-object v9 151 135| new-instance v10, java.lang.Long 152 137| const-wide v11:v12, #+43 (0x000000000000002b | 2.12448e-322) 153 142| invoke-direct {v10,v11,v12}, java.lang.Long.<init>(long):void 154 145| invoke-polymorphic {v9,v10,v10}, java.lang.invoke.MethodHandle.invoke(java.lang.Object[]):java.lang.Object, (java.lang.Long, java.lang.Long):int 155 149| move-result v12 156 150| sget-object v13, java.lang.System.out 157 152| invoke-virtual {v13,v12}, java.io.PrintStream.println(int):void 158 155| const-wide v11:v12, #+44 (0x000000000000002c | 2.17389e-322) 159 160| invoke-polymorphic {v9,v10,v11,v12}, java.lang.invoke.MethodHandle.invoke(java.lang.Object[]):java.lang.Object, (java.lang.Long, long):int 160 164| move-result v12 161 165| sget-object v13, java.lang.System.out 162 167| invoke-virtual {v13,v12}, java.io.PrintStream.println(int):void 163 170| invoke-polymorphic/range {v16..v21}, java.lang.invoke.MethodHandle.invoke(java.lang.Object[]):java.lang.Object, (java.lang.Long, long):int 164 174| invoke-polymorphic/range {v12..v52}, java.lang.invoke.MethodHandle.invoke(java.lang.Object[]):java.lang.Object, (java.lang.Long, long):int 165 178| return-void 166} 167