method Main.getHandleForStatic(java.lang.Class, java.lang.String, java.lang.invoke.MethodType):java.lang.invoke.MethodHandle { ............................. begin block 1 ............................. 0| invoke-static {}, java.lang.invoke.MethodHandles.publicLookup():java.lang.invoke.MethodHandles$Lookup .............................. end block 1 .............................. ............................. begin block 2 ............................. 3| move-result-object v0 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 .............................. end block 2 .............................. ............................. begin block 3 ............................. 7| move-result-object v1 8| return-object v1 .............................. end block 3 .............................. } method Main.getHandleForVirtual(java.lang.Class, java.lang.String, java.lang.invoke.MethodType):java.lang.invoke.MethodHandle { ............................. begin block 1 ............................. 0| invoke-static {}, java.lang.invoke.MethodHandles.publicLookup():java.lang.invoke.MethodHandles$Lookup .............................. end block 1 .............................. ............................. begin block 2 ............................. 3| move-result-object v0 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 .............................. end block 2 .............................. ............................. begin block 3 ............................. 7| move-result-object v1 8| return-object v1 .............................. end block 3 .............................. } method Main.getLongCompareToHandle():java.lang.invoke.MethodHandle { ............................. begin block 1 ............................. 0| new-instance v0, java.lang.Long .............................. end block 1 .............................. ............................. begin block 2 ............................. 2| const-wide v1:v2, #+0 (0x0000000000000000 | 0.00000) 7| invoke-direct {v0,v1,v2}, java.lang.Long.(long):void .............................. end block 2 .............................. ............................. begin block 3 ............................. 10| invoke-virtual {v0}, java.lang.Object.getClass():java.lang.Class .............................. end block 3 .............................. ............................. begin block 4 ............................. 13| move-result-object v0 14| sget-object v1, java.lang.Integer.TYPE .............................. end block 4 .............................. ............................. begin block 5 ............................. 16| invoke-static {v1,v0}, java.lang.invoke.MethodType.methodType(java.lang.Class, java.lang.Class):java.lang.invoke.MethodType .............................. end block 5 .............................. ............................. begin block 6 ............................. 19| move-result-object v2 20| const-string v3, "compareTo" .............................. end block 6 .............................. ............................. begin block 7 ............................. 22| invoke-static {v0,v3,v2}, Main.getHandleForVirtual(java.lang.Class, java.lang.String, java.lang.invoke.MethodType):java.lang.invoke.MethodHandle .............................. end block 7 .............................. ............................. begin block 8 ............................. 25| move-result-object v0 26| return-object v0 .............................. end block 8 .............................. } method Main.getStringConcatHandle():java.lang.invoke.MethodHandle { ............................. begin block 1 ............................. 0| const-string v0, "concat" .............................. end block 1 .............................. ............................. begin block 2 ............................. 2| invoke-virtual {v0}, java.lang.Object.getClass():java.lang.Class .............................. end block 2 .............................. ............................. begin block 3 ............................. 5| move-result-object v1 6| invoke-static {v1,v1}, java.lang.invoke.MethodType.methodType(java.lang.Class, java.lang.Class):java.lang.invoke.MethodType .............................. end block 3 .............................. ............................. begin block 4 ............................. 9| move-result-object v2 10| invoke-static {v1,v0,v2}, Main.getHandleForVirtual(java.lang.Class, java.lang.String, java.lang.invoke.MethodType):java.lang.invoke.MethodHandle .............................. end block 4 .............................. ............................. begin block 5 ............................. 13| move-result-object v0 14| return-object v0 .............................. end block 5 .............................. } method Main.getStringValueOfLongHandle():java.lang.invoke.MethodHandle { ............................. begin block 1 ............................. 0| sget-object v0, java.lang.Long.TYPE .............................. end block 1 .............................. ............................. begin block 2 ............................. 2| const-string v1, "valueOf" .............................. end block 2 .............................. ............................. begin block 3 ............................. 4| invoke-virtual {v1}, java.lang.Object.getClass():java.lang.Class .............................. end block 3 .............................. ............................. begin block 4 ............................. 7| move-result-object v2 8| invoke-static {v2,v0}, java.lang.invoke.MethodType.methodType(java.lang.Class, java.lang.Class):java.lang.invoke.MethodType .............................. end block 4 .............................. ............................. begin block 5 ............................. 11| move-result-object v3 12| invoke-static {v2,v1,v3}, Main.getHandleForStatic(java.lang.Class, java.lang.String, java.lang.invoke.MethodType):java.lang.invoke.MethodHandle .............................. end block 5 .............................. ............................. begin block 6 ............................. 15| move-result-object v0 16| return-object v0 .............................. end block 6 .............................. } method Main.getStringValueOfObjectHandle():java.lang.invoke.MethodHandle { ............................. begin block 1 ............................. 0| new-instance v0, java.lang.Object .............................. end block 1 .............................. ............................. begin block 2 ............................. 2| invoke-direct {v0}, java.lang.Object.():void .............................. end block 2 .............................. ............................. begin block 3 ............................. 5| invoke-virtual {v0}, java.lang.Object.getClass():java.lang.Class .............................. end block 3 .............................. ............................. begin block 4 ............................. 8| move-result-object v0 9| const-string v1, "valueOf" .............................. end block 4 .............................. ............................. begin block 5 ............................. 11| invoke-virtual {v1}, java.lang.Object.getClass():java.lang.Class .............................. end block 5 .............................. ............................. begin block 6 ............................. 14| move-result-object v2 15| invoke-static {v2,v0}, java.lang.invoke.MethodType.methodType(java.lang.Class, java.lang.Class):java.lang.invoke.MethodType .............................. end block 6 .............................. ............................. begin block 7 ............................. 18| move-result-object v3 19| invoke-static {v2,v1,v3}, Main.getHandleForStatic(java.lang.Class, java.lang.String, java.lang.invoke.MethodType):java.lang.invoke.MethodHandle .............................. end block 7 .............................. ............................. begin block 8 ............................. 22| move-result-object v0 23| return-object v0 .............................. end block 8 .............................. } method Main.main(java.lang.String[]):void { ............................. begin block 1 ............................. 0| invoke-static {}, Main.getStringConcatHandle():java.lang.invoke.MethodHandle .............................. end block 1 .............................. ............................. begin block 2 ............................. 3| move-result-object v0 4| const-string v1, "[String1]" .............................. end block 2 .............................. ............................. begin block 3 ............................. 6| const-string v2, "+[String2]" .............................. end block 3 .............................. ............................. begin block 4 ............................. 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 .............................. end block 4 .............................. ............................. begin block 5 ............................. 12| move-result-object v3 13| sget-object v4, java.lang.System.out .............................. end block 5 .............................. ............................. begin block 6 ............................. 15| invoke-virtual {v4,v3}, java.io.PrintStream.println(java.lang.String):void .............................. end block 6 .............................. ............................. begin block 7 ............................. 18| invoke-static {}, Main.getStringValueOfObjectHandle():java.lang.invoke.MethodHandle .............................. end block 7 .............................. ............................. begin block 8 ............................. 21| move-result-object v0 22| const-string v1, "[String1]" .............................. end block 8 .............................. ............................. begin block 9 ............................. 24| invoke-polymorphic {v0,v1}, java.lang.invoke.MethodHandle.invokeExact(java.lang.Object[]):java.lang.Object, (java.lang.Object):java.lang.String .............................. end block 9 .............................. ............................. begin block 10 ............................. 28| move-result-object v3 29| sget-object v4, java.lang.System.out .............................. end block 10 .............................. ............................. begin block 11 ............................. 31| invoke-virtual {v4,v3}, java.io.PrintStream.println(java.lang.String):void .............................. end block 11 .............................. ............................. begin block 12 ............................. 34| invoke-static {}, Main.getStringConcatHandle():java.lang.invoke.MethodHandle .............................. end block 12 .............................. ............................. begin block 13 ............................. 37| move-result-object v0 38| const-string v1, "[String1]" .............................. end block 13 .............................. ............................. begin block 14 ............................. 40| const-string v2, "+[String2]" .............................. end block 14 .............................. ............................. begin block 15 ............................. 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 .............................. end block 15 .............................. ............................. begin block 16 ............................. 46| move-result-object v3 47| sget-object v4, java.lang.System.out .............................. end block 16 .............................. ............................. begin block 17 ............................. 49| invoke-virtual {v4,v3}, java.io.PrintStream.println(java.lang.String):void .............................. end block 17 .............................. ............................. begin block 18 ............................. 52| invoke-static {}, Main.getStringValueOfLongHandle():java.lang.invoke.MethodHandle .............................. end block 18 .............................. ............................. begin block 19 ............................. 55| move-result-object v0 56| const-wide v1:v2, #+42 (0x000000000000002a | 2.07508e-322) 61| invoke-polymorphic {v0,v1,v2}, java.lang.invoke.MethodHandle.invokeExact(java.lang.Object[]):java.lang.Object, (long):java.lang.String .............................. end block 19 .............................. ............................. begin block 20 ............................. 65| move-result-object v3 66| sget-object v4, java.lang.System.out .............................. end block 20 .............................. ............................. begin block 21 ............................. 68| invoke-virtual {v4,v3}, java.io.PrintStream.println(java.lang.String):void .............................. end block 21 .............................. ............................. begin block 22 ............................. 71| const v1, #+40 (0x00000028 | 5.60519e-44) 74| invoke-polymorphic {v0,v1}, java.lang.invoke.MethodHandle.invoke(java.lang.Object[]):java.lang.Object, (int):java.lang.String .............................. end block 22 .............................. ............................. begin block 23 ............................. 78| move-result-object v3 79| sget-object v4, java.lang.System.out .............................. end block 23 .............................. ............................. begin block 24 ............................. 81| invoke-virtual {v4,v3}, java.io.PrintStream.println(java.lang.String):void .............................. end block 24 .............................. ............................. begin block 25 ............................. 84| new-instance v1, java.lang.Long .............................. end block 25 .............................. ............................. begin block 26 ............................. 86| const-wide v2:v3, #+43 (0x000000000000002b | 2.12448e-322) 91| invoke-direct {v1,v2,v3}, java.lang.Long.(long):void .............................. end block 26 .............................. ............................. begin block 27 ............................. 94| invoke-polymorphic {v0,v1}, java.lang.invoke.MethodHandle.invoke(java.lang.Object[]):java.lang.Object, (java.lang.Long):java.lang.String .............................. end block 27 .............................. ............................. begin block 28 ............................. 98| move-result-object v3 99| sget-object v4, java.lang.System.out .............................. end block 28 .............................. ............................. begin block 29 ............................. 101| invoke-virtual {v4,v3}, java.io.PrintStream.println(java.lang.String):void .............................. end block 29 .............................. ............................. begin block 30 ............................. 104| new-instance v1, java.lang.Integer .............................. end block 30 .............................. ............................. begin block 31 ............................. 106| const v2, #+44 (0x0000002c | 6.16571e-44) 109| invoke-direct {v1,v2}, java.lang.Integer.(int):void .............................. end block 31 .............................. ............................. begin block 32 ............................. 112| invoke-polymorphic {v0,v1}, java.lang.invoke.MethodHandle.invoke(java.lang.Object[]):java.lang.Object, (java.lang.Integer):java.lang.String .............................. end block 32 .............................. ............................. begin block 33 ............................. 116| move-result-object v3 117| sget-object v4, java.lang.System.out .............................. end block 33 .............................. ............................. begin block 34 ............................. 119| invoke-virtual {v4,v3}, java.io.PrintStream.println(java.lang.String):void .............................. end block 34 .............................. ............................. begin block 35 ............................. 122| invoke-static {}, Main.getLongCompareToHandle():java.lang.invoke.MethodHandle .............................. end block 35 .............................. ............................. begin block 36 ............................. 125| move-result-object v0 126| new-instance v1, java.lang.Long .............................. end block 36 .............................. ............................. begin block 37 ............................. 128| const-wide v2:v3, #+43 (0x000000000000002b | 2.12448e-322) 133| invoke-direct {v1,v2,v3}, java.lang.Long.(long):void .............................. end block 37 .............................. ............................. begin block 38 ............................. 136| invoke-polymorphic {v0,v1,v1}, java.lang.invoke.MethodHandle.invoke(java.lang.Object[]):java.lang.Object, (java.lang.Long, java.lang.Long):int .............................. end block 38 .............................. ............................. begin block 39 ............................. 140| move-result v3 141| sget-object v4, java.lang.System.out .............................. end block 39 .............................. ............................. begin block 40 ............................. 143| invoke-virtual {v4,v3}, java.io.PrintStream.println(int):void .............................. end block 40 .............................. ............................. begin block 41 ............................. 146| const-wide v2:v3, #+44 (0x000000000000002c | 2.17389e-322) 151| invoke-polymorphic {v0,v1,v2,v3}, java.lang.invoke.MethodHandle.invoke(java.lang.Object[]):java.lang.Object, (java.lang.Long, long):int .............................. end block 41 .............................. ............................. begin block 42 ............................. 155| move-result v3 156| sget-object v4, java.lang.System.out .............................. end block 42 .............................. ............................. begin block 43 ............................. 158| invoke-virtual {v4,v3}, java.io.PrintStream.println(int):void .............................. end block 43 .............................. ............................. begin block 44 ............................. 161| invoke-polymorphic/range {v7..v12}, java.lang.invoke.MethodHandle.invoke(java.lang.Object[]):java.lang.Object, (java.lang.Long, long):int .............................. end block 44 .............................. ............................. begin block 45 ............................. 165| invoke-polymorphic/range {v3..v43}, java.lang.invoke.MethodHandle.invoke(java.lang.Object[]):java.lang.Object, (java.lang.Long, long):int .............................. end block 45 .............................. ............................. begin block 46 ............................. 169| return-void .............................. end block 46 .............................. }