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