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