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............................. begin block 1 ............................. 5*f0dffb02SXin Li 0| invoke-static {}, java.lang.invoke.MethodHandles.publicLookup():java.lang.invoke.MethodHandles$Lookup 6*f0dffb02SXin Li.............................. end block 1 .............................. 7*f0dffb02SXin Li............................. begin block 2 ............................. 8*f0dffb02SXin Li 3| move-result-object v0 9*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 10*f0dffb02SXin Li.............................. end block 2 .............................. 11*f0dffb02SXin Li............................. begin block 3 ............................. 12*f0dffb02SXin Li 7| move-result-object v1 13*f0dffb02SXin Li 8| return-object v1 14*f0dffb02SXin Li.............................. end block 3 .............................. 15*f0dffb02SXin Li} 16*f0dffb02SXin Li 17*f0dffb02SXin Limethod Main.getHandleForVirtual(java.lang.Class, java.lang.String, java.lang.invoke.MethodType):java.lang.invoke.MethodHandle 18*f0dffb02SXin Li{ 19*f0dffb02SXin Li............................. begin block 1 ............................. 20*f0dffb02SXin Li 0| invoke-static {}, java.lang.invoke.MethodHandles.publicLookup():java.lang.invoke.MethodHandles$Lookup 21*f0dffb02SXin Li.............................. end block 1 .............................. 22*f0dffb02SXin Li............................. begin block 2 ............................. 23*f0dffb02SXin Li 3| move-result-object v0 24*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 25*f0dffb02SXin Li.............................. end block 2 .............................. 26*f0dffb02SXin Li............................. begin block 3 ............................. 27*f0dffb02SXin Li 7| move-result-object v1 28*f0dffb02SXin Li 8| return-object v1 29*f0dffb02SXin Li.............................. end block 3 .............................. 30*f0dffb02SXin Li} 31*f0dffb02SXin Li 32*f0dffb02SXin Limethod Main.getLongCompareToHandle():java.lang.invoke.MethodHandle 33*f0dffb02SXin Li{ 34*f0dffb02SXin Li............................. begin block 1 ............................. 35*f0dffb02SXin Li 0| new-instance v0, java.lang.Long 36*f0dffb02SXin Li.............................. end block 1 .............................. 37*f0dffb02SXin Li............................. begin block 2 ............................. 38*f0dffb02SXin Li 2| const-wide v1:v2, #+0 (0x0000000000000000 | 0.00000) 39*f0dffb02SXin Li 7| invoke-direct {v0,v1,v2}, java.lang.Long.<init>(long):void 40*f0dffb02SXin Li.............................. end block 2 .............................. 41*f0dffb02SXin Li............................. begin block 3 ............................. 42*f0dffb02SXin Li 10| invoke-virtual {v0}, java.lang.Object.getClass():java.lang.Class 43*f0dffb02SXin Li.............................. end block 3 .............................. 44*f0dffb02SXin Li............................. begin block 4 ............................. 45*f0dffb02SXin Li 13| move-result-object v0 46*f0dffb02SXin Li 14| sget-object v1, java.lang.Integer.TYPE 47*f0dffb02SXin Li.............................. end block 4 .............................. 48*f0dffb02SXin Li............................. begin block 5 ............................. 49*f0dffb02SXin Li 16| invoke-static {v1,v0}, java.lang.invoke.MethodType.methodType(java.lang.Class, java.lang.Class):java.lang.invoke.MethodType 50*f0dffb02SXin Li.............................. end block 5 .............................. 51*f0dffb02SXin Li............................. begin block 6 ............................. 52*f0dffb02SXin Li 19| move-result-object v2 53*f0dffb02SXin Li 20| const-string v3, "compareTo" 54*f0dffb02SXin Li.............................. end block 6 .............................. 55*f0dffb02SXin Li............................. begin block 7 ............................. 56*f0dffb02SXin Li 22| invoke-static {v0,v3,v2}, Main.getHandleForVirtual(java.lang.Class, java.lang.String, java.lang.invoke.MethodType):java.lang.invoke.MethodHandle 57*f0dffb02SXin Li.............................. end block 7 .............................. 58*f0dffb02SXin Li............................. begin block 8 ............................. 59*f0dffb02SXin Li 25| move-result-object v0 60*f0dffb02SXin Li 26| return-object v0 61*f0dffb02SXin Li.............................. end block 8 .............................. 62*f0dffb02SXin Li} 63*f0dffb02SXin Li 64*f0dffb02SXin Limethod Main.getStringConcatHandle():java.lang.invoke.MethodHandle 65*f0dffb02SXin Li{ 66*f0dffb02SXin Li............................. begin block 1 ............................. 67*f0dffb02SXin Li 0| const-string v0, "concat" 68*f0dffb02SXin Li.............................. end block 1 .............................. 69*f0dffb02SXin Li............................. begin block 2 ............................. 70*f0dffb02SXin Li 2| invoke-virtual {v0}, java.lang.Object.getClass():java.lang.Class 71*f0dffb02SXin Li.............................. end block 2 .............................. 72*f0dffb02SXin Li............................. begin block 3 ............................. 73*f0dffb02SXin Li 5| move-result-object v1 74*f0dffb02SXin Li 6| invoke-static {v1,v1}, java.lang.invoke.MethodType.methodType(java.lang.Class, java.lang.Class):java.lang.invoke.MethodType 75*f0dffb02SXin Li.............................. end block 3 .............................. 76*f0dffb02SXin Li............................. begin block 4 ............................. 77*f0dffb02SXin Li 9| move-result-object v2 78*f0dffb02SXin Li 10| invoke-static {v1,v0,v2}, Main.getHandleForVirtual(java.lang.Class, java.lang.String, java.lang.invoke.MethodType):java.lang.invoke.MethodHandle 79*f0dffb02SXin Li.............................. end block 4 .............................. 80*f0dffb02SXin Li............................. begin block 5 ............................. 81*f0dffb02SXin Li 13| move-result-object v0 82*f0dffb02SXin Li 14| return-object v0 83*f0dffb02SXin Li.............................. end block 5 .............................. 84*f0dffb02SXin Li} 85*f0dffb02SXin Li 86*f0dffb02SXin Limethod Main.getStringValueOfLongHandle():java.lang.invoke.MethodHandle 87*f0dffb02SXin Li{ 88*f0dffb02SXin Li............................. begin block 1 ............................. 89*f0dffb02SXin Li 0| sget-object v0, java.lang.Long.TYPE 90*f0dffb02SXin Li.............................. end block 1 .............................. 91*f0dffb02SXin Li............................. begin block 2 ............................. 92*f0dffb02SXin Li 2| const-string v1, "valueOf" 93*f0dffb02SXin Li.............................. end block 2 .............................. 94*f0dffb02SXin Li............................. begin block 3 ............................. 95*f0dffb02SXin Li 4| invoke-virtual {v1}, java.lang.Object.getClass():java.lang.Class 96*f0dffb02SXin Li.............................. end block 3 .............................. 97*f0dffb02SXin Li............................. begin block 4 ............................. 98*f0dffb02SXin Li 7| move-result-object v2 99*f0dffb02SXin Li 8| invoke-static {v2,v0}, java.lang.invoke.MethodType.methodType(java.lang.Class, java.lang.Class):java.lang.invoke.MethodType 100*f0dffb02SXin Li.............................. end block 4 .............................. 101*f0dffb02SXin Li............................. begin block 5 ............................. 102*f0dffb02SXin Li 11| move-result-object v3 103*f0dffb02SXin Li 12| invoke-static {v2,v1,v3}, Main.getHandleForStatic(java.lang.Class, java.lang.String, java.lang.invoke.MethodType):java.lang.invoke.MethodHandle 104*f0dffb02SXin Li.............................. end block 5 .............................. 105*f0dffb02SXin Li............................. begin block 6 ............................. 106*f0dffb02SXin Li 15| move-result-object v0 107*f0dffb02SXin Li 16| return-object v0 108*f0dffb02SXin Li.............................. end block 6 .............................. 109*f0dffb02SXin Li} 110*f0dffb02SXin Li 111*f0dffb02SXin Limethod Main.getStringValueOfObjectHandle():java.lang.invoke.MethodHandle 112*f0dffb02SXin Li{ 113*f0dffb02SXin Li............................. begin block 1 ............................. 114*f0dffb02SXin Li 0| new-instance v0, java.lang.Object 115*f0dffb02SXin Li.............................. end block 1 .............................. 116*f0dffb02SXin Li............................. begin block 2 ............................. 117*f0dffb02SXin Li 2| invoke-direct {v0}, java.lang.Object.<init>():void 118*f0dffb02SXin Li.............................. end block 2 .............................. 119*f0dffb02SXin Li............................. begin block 3 ............................. 120*f0dffb02SXin Li 5| invoke-virtual {v0}, java.lang.Object.getClass():java.lang.Class 121*f0dffb02SXin Li.............................. end block 3 .............................. 122*f0dffb02SXin Li............................. begin block 4 ............................. 123*f0dffb02SXin Li 8| move-result-object v0 124*f0dffb02SXin Li 9| const-string v1, "valueOf" 125*f0dffb02SXin Li.............................. end block 4 .............................. 126*f0dffb02SXin Li............................. begin block 5 ............................. 127*f0dffb02SXin Li 11| invoke-virtual {v1}, java.lang.Object.getClass():java.lang.Class 128*f0dffb02SXin Li.............................. end block 5 .............................. 129*f0dffb02SXin Li............................. begin block 6 ............................. 130*f0dffb02SXin Li 14| move-result-object v2 131*f0dffb02SXin Li 15| invoke-static {v2,v0}, java.lang.invoke.MethodType.methodType(java.lang.Class, java.lang.Class):java.lang.invoke.MethodType 132*f0dffb02SXin Li.............................. end block 6 .............................. 133*f0dffb02SXin Li............................. begin block 7 ............................. 134*f0dffb02SXin Li 18| move-result-object v3 135*f0dffb02SXin Li 19| invoke-static {v2,v1,v3}, Main.getHandleForStatic(java.lang.Class, java.lang.String, java.lang.invoke.MethodType):java.lang.invoke.MethodHandle 136*f0dffb02SXin Li.............................. end block 7 .............................. 137*f0dffb02SXin Li............................. begin block 8 ............................. 138*f0dffb02SXin Li 22| move-result-object v0 139*f0dffb02SXin Li 23| return-object v0 140*f0dffb02SXin Li.............................. end block 8 .............................. 141*f0dffb02SXin Li} 142*f0dffb02SXin Li 143*f0dffb02SXin Limethod Main.main(java.lang.String[]):void 144*f0dffb02SXin Li{ 145*f0dffb02SXin Li............................. begin block 1 ............................. 146*f0dffb02SXin Li 0| invoke-static {}, Main.getStringConcatHandle():java.lang.invoke.MethodHandle 147*f0dffb02SXin Li.............................. end block 1 .............................. 148*f0dffb02SXin Li............................. begin block 2 ............................. 149*f0dffb02SXin Li 3| move-result-object v0 150*f0dffb02SXin Li 4| const-string v1, "[String1]" 151*f0dffb02SXin Li.............................. end block 2 .............................. 152*f0dffb02SXin Li............................. begin block 3 ............................. 153*f0dffb02SXin Li 6| const-string v2, "+[String2]" 154*f0dffb02SXin Li.............................. end block 3 .............................. 155*f0dffb02SXin Li............................. begin block 4 ............................. 156*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 157*f0dffb02SXin Li.............................. end block 4 .............................. 158*f0dffb02SXin Li............................. begin block 5 ............................. 159*f0dffb02SXin Li 12| move-result-object v3 160*f0dffb02SXin Li 13| sget-object v4, java.lang.System.out 161*f0dffb02SXin Li.............................. end block 5 .............................. 162*f0dffb02SXin Li............................. begin block 6 ............................. 163*f0dffb02SXin Li 15| invoke-virtual {v4,v3}, java.io.PrintStream.println(java.lang.String):void 164*f0dffb02SXin Li.............................. end block 6 .............................. 165*f0dffb02SXin Li............................. begin block 7 ............................. 166*f0dffb02SXin Li 18| invoke-static {}, Main.getStringValueOfObjectHandle():java.lang.invoke.MethodHandle 167*f0dffb02SXin Li.............................. end block 7 .............................. 168*f0dffb02SXin Li............................. begin block 8 ............................. 169*f0dffb02SXin Li 21| move-result-object v0 170*f0dffb02SXin Li 22| const-string v1, "[String1]" 171*f0dffb02SXin Li.............................. end block 8 .............................. 172*f0dffb02SXin Li............................. begin block 9 ............................. 173*f0dffb02SXin Li 24| invoke-polymorphic {v0,v1}, java.lang.invoke.MethodHandle.invokeExact(java.lang.Object[]):java.lang.Object, (java.lang.Object):java.lang.String 174*f0dffb02SXin Li.............................. end block 9 .............................. 175*f0dffb02SXin Li............................. begin block 10 ............................. 176*f0dffb02SXin Li 28| move-result-object v3 177*f0dffb02SXin Li 29| sget-object v4, java.lang.System.out 178*f0dffb02SXin Li.............................. end block 10 .............................. 179*f0dffb02SXin Li............................. begin block 11 ............................. 180*f0dffb02SXin Li 31| invoke-virtual {v4,v3}, java.io.PrintStream.println(java.lang.String):void 181*f0dffb02SXin Li.............................. end block 11 .............................. 182*f0dffb02SXin Li............................. begin block 12 ............................. 183*f0dffb02SXin Li 34| invoke-static {}, Main.getStringConcatHandle():java.lang.invoke.MethodHandle 184*f0dffb02SXin Li.............................. end block 12 .............................. 185*f0dffb02SXin Li............................. begin block 13 ............................. 186*f0dffb02SXin Li 37| move-result-object v0 187*f0dffb02SXin Li 38| const-string v1, "[String1]" 188*f0dffb02SXin Li.............................. end block 13 .............................. 189*f0dffb02SXin Li............................. begin block 14 ............................. 190*f0dffb02SXin Li 40| const-string v2, "+[String2]" 191*f0dffb02SXin Li.............................. end block 14 .............................. 192*f0dffb02SXin Li............................. begin block 15 ............................. 193*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 194*f0dffb02SXin Li.............................. end block 15 .............................. 195*f0dffb02SXin Li............................. begin block 16 ............................. 196*f0dffb02SXin Li 46| move-result-object v3 197*f0dffb02SXin Li 47| sget-object v4, java.lang.System.out 198*f0dffb02SXin Li.............................. end block 16 .............................. 199*f0dffb02SXin Li............................. begin block 17 ............................. 200*f0dffb02SXin Li 49| invoke-virtual {v4,v3}, java.io.PrintStream.println(java.lang.String):void 201*f0dffb02SXin Li.............................. end block 17 .............................. 202*f0dffb02SXin Li............................. begin block 18 ............................. 203*f0dffb02SXin Li 52| invoke-static {}, Main.getStringValueOfLongHandle():java.lang.invoke.MethodHandle 204*f0dffb02SXin Li.............................. end block 18 .............................. 205*f0dffb02SXin Li............................. begin block 19 ............................. 206*f0dffb02SXin Li 55| move-result-object v0 207*f0dffb02SXin Li 56| const-wide v1:v2, #+42 (0x000000000000002a | 2.07508e-322) 208*f0dffb02SXin Li 61| invoke-polymorphic {v0,v1,v2}, java.lang.invoke.MethodHandle.invokeExact(java.lang.Object[]):java.lang.Object, (long):java.lang.String 209*f0dffb02SXin Li.............................. end block 19 .............................. 210*f0dffb02SXin Li............................. begin block 20 ............................. 211*f0dffb02SXin Li 65| move-result-object v3 212*f0dffb02SXin Li 66| sget-object v4, java.lang.System.out 213*f0dffb02SXin Li.............................. end block 20 .............................. 214*f0dffb02SXin Li............................. begin block 21 ............................. 215*f0dffb02SXin Li 68| invoke-virtual {v4,v3}, java.io.PrintStream.println(java.lang.String):void 216*f0dffb02SXin Li.............................. end block 21 .............................. 217*f0dffb02SXin Li............................. begin block 22 ............................. 218*f0dffb02SXin Li 71| const v1, #+40 (0x00000028 | 5.60519e-44) 219*f0dffb02SXin Li 74| invoke-polymorphic {v0,v1}, java.lang.invoke.MethodHandle.invoke(java.lang.Object[]):java.lang.Object, (int):java.lang.String 220*f0dffb02SXin Li.............................. end block 22 .............................. 221*f0dffb02SXin Li............................. begin block 23 ............................. 222*f0dffb02SXin Li 78| move-result-object v3 223*f0dffb02SXin Li 79| sget-object v4, java.lang.System.out 224*f0dffb02SXin Li.............................. end block 23 .............................. 225*f0dffb02SXin Li............................. begin block 24 ............................. 226*f0dffb02SXin Li 81| invoke-virtual {v4,v3}, java.io.PrintStream.println(java.lang.String):void 227*f0dffb02SXin Li.............................. end block 24 .............................. 228*f0dffb02SXin Li............................. begin block 25 ............................. 229*f0dffb02SXin Li 84| new-instance v1, java.lang.Long 230*f0dffb02SXin Li.............................. end block 25 .............................. 231*f0dffb02SXin Li............................. begin block 26 ............................. 232*f0dffb02SXin Li 86| const-wide v2:v3, #+43 (0x000000000000002b | 2.12448e-322) 233*f0dffb02SXin Li 91| invoke-direct {v1,v2,v3}, java.lang.Long.<init>(long):void 234*f0dffb02SXin Li.............................. end block 26 .............................. 235*f0dffb02SXin Li............................. begin block 27 ............................. 236*f0dffb02SXin Li 94| invoke-polymorphic {v0,v1}, java.lang.invoke.MethodHandle.invoke(java.lang.Object[]):java.lang.Object, (java.lang.Long):java.lang.String 237*f0dffb02SXin Li.............................. end block 27 .............................. 238*f0dffb02SXin Li............................. begin block 28 ............................. 239*f0dffb02SXin Li 98| move-result-object v3 240*f0dffb02SXin Li 99| sget-object v4, java.lang.System.out 241*f0dffb02SXin Li.............................. end block 28 .............................. 242*f0dffb02SXin Li............................. begin block 29 ............................. 243*f0dffb02SXin Li 101| invoke-virtual {v4,v3}, java.io.PrintStream.println(java.lang.String):void 244*f0dffb02SXin Li.............................. end block 29 .............................. 245*f0dffb02SXin Li............................. begin block 30 ............................. 246*f0dffb02SXin Li 104| new-instance v1, java.lang.Integer 247*f0dffb02SXin Li.............................. end block 30 .............................. 248*f0dffb02SXin Li............................. begin block 31 ............................. 249*f0dffb02SXin Li 106| const v2, #+44 (0x0000002c | 6.16571e-44) 250*f0dffb02SXin Li 109| invoke-direct {v1,v2}, java.lang.Integer.<init>(int):void 251*f0dffb02SXin Li.............................. end block 31 .............................. 252*f0dffb02SXin Li............................. begin block 32 ............................. 253*f0dffb02SXin Li 112| invoke-polymorphic {v0,v1}, java.lang.invoke.MethodHandle.invoke(java.lang.Object[]):java.lang.Object, (java.lang.Integer):java.lang.String 254*f0dffb02SXin Li.............................. end block 32 .............................. 255*f0dffb02SXin Li............................. begin block 33 ............................. 256*f0dffb02SXin Li 116| move-result-object v3 257*f0dffb02SXin Li 117| sget-object v4, java.lang.System.out 258*f0dffb02SXin Li.............................. end block 33 .............................. 259*f0dffb02SXin Li............................. begin block 34 ............................. 260*f0dffb02SXin Li 119| invoke-virtual {v4,v3}, java.io.PrintStream.println(java.lang.String):void 261*f0dffb02SXin Li.............................. end block 34 .............................. 262*f0dffb02SXin Li............................. begin block 35 ............................. 263*f0dffb02SXin Li 122| invoke-static {}, Main.getLongCompareToHandle():java.lang.invoke.MethodHandle 264*f0dffb02SXin Li.............................. end block 35 .............................. 265*f0dffb02SXin Li............................. begin block 36 ............................. 266*f0dffb02SXin Li 125| move-result-object v0 267*f0dffb02SXin Li 126| new-instance v1, java.lang.Long 268*f0dffb02SXin Li.............................. end block 36 .............................. 269*f0dffb02SXin Li............................. begin block 37 ............................. 270*f0dffb02SXin Li 128| const-wide v2:v3, #+43 (0x000000000000002b | 2.12448e-322) 271*f0dffb02SXin Li 133| invoke-direct {v1,v2,v3}, java.lang.Long.<init>(long):void 272*f0dffb02SXin Li.............................. end block 37 .............................. 273*f0dffb02SXin Li............................. begin block 38 ............................. 274*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 275*f0dffb02SXin Li.............................. end block 38 .............................. 276*f0dffb02SXin Li............................. begin block 39 ............................. 277*f0dffb02SXin Li 140| move-result v3 278*f0dffb02SXin Li 141| sget-object v4, java.lang.System.out 279*f0dffb02SXin Li.............................. end block 39 .............................. 280*f0dffb02SXin Li............................. begin block 40 ............................. 281*f0dffb02SXin Li 143| invoke-virtual {v4,v3}, java.io.PrintStream.println(int):void 282*f0dffb02SXin Li.............................. end block 40 .............................. 283*f0dffb02SXin Li............................. begin block 41 ............................. 284*f0dffb02SXin Li 146| const-wide v2:v3, #+44 (0x000000000000002c | 2.17389e-322) 285*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 286*f0dffb02SXin Li.............................. end block 41 .............................. 287*f0dffb02SXin Li............................. begin block 42 ............................. 288*f0dffb02SXin Li 155| move-result v3 289*f0dffb02SXin Li 156| sget-object v4, java.lang.System.out 290*f0dffb02SXin Li.............................. end block 42 .............................. 291*f0dffb02SXin Li............................. begin block 43 ............................. 292*f0dffb02SXin Li 158| invoke-virtual {v4,v3}, java.io.PrintStream.println(int):void 293*f0dffb02SXin Li.............................. end block 43 .............................. 294*f0dffb02SXin Li............................. begin block 44 ............................. 295*f0dffb02SXin Li 161| invoke-polymorphic/range {v7..v12}, java.lang.invoke.MethodHandle.invoke(java.lang.Object[]):java.lang.Object, (java.lang.Long, long):int 296*f0dffb02SXin Li.............................. end block 44 .............................. 297*f0dffb02SXin Li............................. begin block 45 ............................. 298*f0dffb02SXin Li 165| invoke-polymorphic/range {v3..v43}, java.lang.invoke.MethodHandle.invoke(java.lang.Object[]):java.lang.Object, (java.lang.Long, long):int 299*f0dffb02SXin Li.............................. end block 45 .............................. 300*f0dffb02SXin Li............................. begin block 46 ............................. 301*f0dffb02SXin Li 169| return-void 302*f0dffb02SXin Li.............................. end block 46 .............................. 303*f0dffb02SXin Li} 304