1*795d594fSAndroid Build Coastguard Worker /* 2*795d594fSAndroid Build Coastguard Worker * Copyright (C) 2024 The Android Open Source Project 3*795d594fSAndroid Build Coastguard Worker * 4*795d594fSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*795d594fSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*795d594fSAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*795d594fSAndroid Build Coastguard Worker * 8*795d594fSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*795d594fSAndroid Build Coastguard Worker * 10*795d594fSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*795d594fSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*795d594fSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*795d594fSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*795d594fSAndroid Build Coastguard Worker * limitations under the License. 15*795d594fSAndroid Build Coastguard Worker */ 16*795d594fSAndroid Build Coastguard Worker 17*795d594fSAndroid Build Coastguard Worker import annotations.ConstantMethodHandle; 18*795d594fSAndroid Build Coastguard Worker 19*795d594fSAndroid Build Coastguard Worker import java.lang.invoke.MethodHandle; 20*795d594fSAndroid Build Coastguard Worker 21*795d594fSAndroid Build Coastguard Worker public class ConstMethodHandleTest extends AbstractInvokeExactTest { 22*795d594fSAndroid Build Coastguard Worker 23*795d594fSAndroid Build Coastguard Worker @Override $noinline$privateMethods()24*795d594fSAndroid Build Coastguard Worker void $noinline$privateMethods() throws Throwable { 25*795d594fSAndroid Build Coastguard Worker // TODO(b/378051428): can't create const-method-handle targeting private methods of 26*795d594fSAndroid Build Coastguard Worker // inner classes. 27*795d594fSAndroid Build Coastguard Worker } 28*795d594fSAndroid Build Coastguard Worker 29*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 30*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_VIRTUAL, 31*795d594fSAndroid Build Coastguard Worker owner = "java/util/Optional", 32*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "get", 33*795d594fSAndroid Build Coastguard Worker descriptor = "()Ljava/lang/Object;") constOptionalGet()34*795d594fSAndroid Build Coastguard Worker private static MethodHandle constOptionalGet() { 35*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 36*795d594fSAndroid Build Coastguard Worker return null; 37*795d594fSAndroid Build Coastguard Worker } 38*795d594fSAndroid Build Coastguard Worker 39*795d594fSAndroid Build Coastguard Worker @Override optionalGet()40*795d594fSAndroid Build Coastguard Worker public MethodHandle optionalGet() { 41*795d594fSAndroid Build Coastguard Worker return constOptionalGet(); 42*795d594fSAndroid Build Coastguard Worker } 43*795d594fSAndroid Build Coastguard Worker 44*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 45*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_VIRTUAL, 46*795d594fSAndroid Build Coastguard Worker owner = "A", 47*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "voidMethod", 48*795d594fSAndroid Build Coastguard Worker descriptor = "()V") constVoidMethod()49*795d594fSAndroid Build Coastguard Worker private static MethodHandle constVoidMethod() { 50*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 51*795d594fSAndroid Build Coastguard Worker return null; 52*795d594fSAndroid Build Coastguard Worker } 53*795d594fSAndroid Build Coastguard Worker 54*795d594fSAndroid Build Coastguard Worker @Override voidMethod()55*795d594fSAndroid Build Coastguard Worker public MethodHandle voidMethod() { 56*795d594fSAndroid Build Coastguard Worker return constVoidMethod(); 57*795d594fSAndroid Build Coastguard Worker } 58*795d594fSAndroid Build Coastguard Worker 59*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 60*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_VIRTUAL, 61*795d594fSAndroid Build Coastguard Worker owner = "A", 62*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "returnInt", 63*795d594fSAndroid Build Coastguard Worker descriptor = "()I") constReturnInt()64*795d594fSAndroid Build Coastguard Worker private static MethodHandle constReturnInt() { 65*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 66*795d594fSAndroid Build Coastguard Worker return null; 67*795d594fSAndroid Build Coastguard Worker } 68*795d594fSAndroid Build Coastguard Worker 69*795d594fSAndroid Build Coastguard Worker @Override returnInt()70*795d594fSAndroid Build Coastguard Worker public MethodHandle returnInt() { 71*795d594fSAndroid Build Coastguard Worker return constReturnInt(); 72*795d594fSAndroid Build Coastguard Worker } 73*795d594fSAndroid Build Coastguard Worker 74*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 75*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_VIRTUAL, 76*795d594fSAndroid Build Coastguard Worker owner = "A", 77*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "returnDouble", 78*795d594fSAndroid Build Coastguard Worker descriptor = "()D") constReturnDouble()79*795d594fSAndroid Build Coastguard Worker private static MethodHandle constReturnDouble() { 80*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 81*795d594fSAndroid Build Coastguard Worker return null; 82*795d594fSAndroid Build Coastguard Worker } 83*795d594fSAndroid Build Coastguard Worker 84*795d594fSAndroid Build Coastguard Worker @Override returnDouble()85*795d594fSAndroid Build Coastguard Worker public MethodHandle returnDouble() { 86*795d594fSAndroid Build Coastguard Worker return constReturnDouble(); 87*795d594fSAndroid Build Coastguard Worker } 88*795d594fSAndroid Build Coastguard Worker 89*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 90*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_INTERFACE, 91*795d594fSAndroid Build Coastguard Worker owner = "I", 92*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "defaultMethod", 93*795d594fSAndroid Build Coastguard Worker descriptor = "()V", 94*795d594fSAndroid Build Coastguard Worker ownerIsInterface = true) constInterfaceDefaultMethod()95*795d594fSAndroid Build Coastguard Worker private static MethodHandle constInterfaceDefaultMethod() { 96*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 97*795d594fSAndroid Build Coastguard Worker return null; 98*795d594fSAndroid Build Coastguard Worker } 99*795d594fSAndroid Build Coastguard Worker 100*795d594fSAndroid Build Coastguard Worker @Override interfaceDefaultMethod()101*795d594fSAndroid Build Coastguard Worker public MethodHandle interfaceDefaultMethod() { 102*795d594fSAndroid Build Coastguard Worker return constInterfaceDefaultMethod(); 103*795d594fSAndroid Build Coastguard Worker } 104*795d594fSAndroid Build Coastguard Worker 105*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 106*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_INTERFACE, 107*795d594fSAndroid Build Coastguard Worker owner = "I", 108*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "overrideMe", 109*795d594fSAndroid Build Coastguard Worker descriptor = "()V", 110*795d594fSAndroid Build Coastguard Worker ownerIsInterface = true) constOverwrittenInterfaceDefaultMethod()111*795d594fSAndroid Build Coastguard Worker private static MethodHandle constOverwrittenInterfaceDefaultMethod() { 112*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 113*795d594fSAndroid Build Coastguard Worker return null; 114*795d594fSAndroid Build Coastguard Worker } 115*795d594fSAndroid Build Coastguard Worker 116*795d594fSAndroid Build Coastguard Worker @Override overwrittenInterfaceDefaultMethod()117*795d594fSAndroid Build Coastguard Worker public MethodHandle overwrittenInterfaceDefaultMethod() { 118*795d594fSAndroid Build Coastguard Worker return constOverwrittenInterfaceDefaultMethod(); 119*795d594fSAndroid Build Coastguard Worker } 120*795d594fSAndroid Build Coastguard Worker 121*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 122*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_VIRTUAL, 123*795d594fSAndroid Build Coastguard Worker owner = "A", 124*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "throwException", 125*795d594fSAndroid Build Coastguard Worker descriptor = "()V") constExceptionThrowingMethod()126*795d594fSAndroid Build Coastguard Worker private static MethodHandle constExceptionThrowingMethod() { 127*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 128*795d594fSAndroid Build Coastguard Worker return null; 129*795d594fSAndroid Build Coastguard Worker } 130*795d594fSAndroid Build Coastguard Worker 131*795d594fSAndroid Build Coastguard Worker @Override exceptionThrowingMethod()132*795d594fSAndroid Build Coastguard Worker public MethodHandle exceptionThrowingMethod() { 133*795d594fSAndroid Build Coastguard Worker return constExceptionThrowingMethod(); 134*795d594fSAndroid Build Coastguard Worker } 135*795d594fSAndroid Build Coastguard Worker 136*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 137*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_STATIC, 138*795d594fSAndroid Build Coastguard Worker owner = "A", 139*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "staticMethod", 140*795d594fSAndroid Build Coastguard Worker descriptor = "(LA;)Ljava/lang/String;") constStaticMethod()141*795d594fSAndroid Build Coastguard Worker private static MethodHandle constStaticMethod() { 142*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 143*795d594fSAndroid Build Coastguard Worker return null; 144*795d594fSAndroid Build Coastguard Worker } 145*795d594fSAndroid Build Coastguard Worker 146*795d594fSAndroid Build Coastguard Worker @Override staticMethod()147*795d594fSAndroid Build Coastguard Worker public MethodHandle staticMethod() { 148*795d594fSAndroid Build Coastguard Worker return constStaticMethod(); 149*795d594fSAndroid Build Coastguard Worker } 150*795d594fSAndroid Build Coastguard Worker 151*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 152*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_VIRTUAL, 153*795d594fSAndroid Build Coastguard Worker owner = "Sums", 154*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "sum", 155*795d594fSAndroid Build Coastguard Worker descriptor = "(I)I") constSumI()156*795d594fSAndroid Build Coastguard Worker private static MethodHandle constSumI() { 157*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 158*795d594fSAndroid Build Coastguard Worker return null; 159*795d594fSAndroid Build Coastguard Worker } 160*795d594fSAndroid Build Coastguard Worker 161*795d594fSAndroid Build Coastguard Worker @Override sumI()162*795d594fSAndroid Build Coastguard Worker public MethodHandle sumI() { 163*795d594fSAndroid Build Coastguard Worker return constSumI(); 164*795d594fSAndroid Build Coastguard Worker } 165*795d594fSAndroid Build Coastguard Worker 166*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 167*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_VIRTUAL, 168*795d594fSAndroid Build Coastguard Worker owner = "Sums", 169*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "sum", 170*795d594fSAndroid Build Coastguard Worker descriptor = "(II)I") constSum2I()171*795d594fSAndroid Build Coastguard Worker private static MethodHandle constSum2I() { 172*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 173*795d594fSAndroid Build Coastguard Worker return null; 174*795d594fSAndroid Build Coastguard Worker } 175*795d594fSAndroid Build Coastguard Worker 176*795d594fSAndroid Build Coastguard Worker @Override sum2I()177*795d594fSAndroid Build Coastguard Worker public MethodHandle sum2I() { 178*795d594fSAndroid Build Coastguard Worker return constSum2I(); 179*795d594fSAndroid Build Coastguard Worker } 180*795d594fSAndroid Build Coastguard Worker 181*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 182*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_VIRTUAL, 183*795d594fSAndroid Build Coastguard Worker owner = "Sums", 184*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "sum", 185*795d594fSAndroid Build Coastguard Worker descriptor = "(III)I") constSum3I()186*795d594fSAndroid Build Coastguard Worker private static MethodHandle constSum3I() { 187*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 188*795d594fSAndroid Build Coastguard Worker return null; 189*795d594fSAndroid Build Coastguard Worker } 190*795d594fSAndroid Build Coastguard Worker 191*795d594fSAndroid Build Coastguard Worker @Override sum3I()192*795d594fSAndroid Build Coastguard Worker public MethodHandle sum3I() { 193*795d594fSAndroid Build Coastguard Worker return constSum3I(); 194*795d594fSAndroid Build Coastguard Worker } 195*795d594fSAndroid Build Coastguard Worker 196*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 197*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_VIRTUAL, 198*795d594fSAndroid Build Coastguard Worker owner = "Sums", 199*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "sum", 200*795d594fSAndroid Build Coastguard Worker descriptor = "(IIII)I") constSum4I()201*795d594fSAndroid Build Coastguard Worker private static MethodHandle constSum4I() { 202*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 203*795d594fSAndroid Build Coastguard Worker return null; 204*795d594fSAndroid Build Coastguard Worker } 205*795d594fSAndroid Build Coastguard Worker 206*795d594fSAndroid Build Coastguard Worker @Override sum4I()207*795d594fSAndroid Build Coastguard Worker public MethodHandle sum4I() { 208*795d594fSAndroid Build Coastguard Worker return constSum4I(); 209*795d594fSAndroid Build Coastguard Worker } 210*795d594fSAndroid Build Coastguard Worker 211*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 212*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_VIRTUAL, 213*795d594fSAndroid Build Coastguard Worker owner = "Sums", 214*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "sum", 215*795d594fSAndroid Build Coastguard Worker descriptor = "(IIIII)I") constSum5I()216*795d594fSAndroid Build Coastguard Worker private static MethodHandle constSum5I() { 217*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 218*795d594fSAndroid Build Coastguard Worker return null; 219*795d594fSAndroid Build Coastguard Worker } 220*795d594fSAndroid Build Coastguard Worker 221*795d594fSAndroid Build Coastguard Worker @Override sum5I()222*795d594fSAndroid Build Coastguard Worker public MethodHandle sum5I() { 223*795d594fSAndroid Build Coastguard Worker return constSum5I(); 224*795d594fSAndroid Build Coastguard Worker } 225*795d594fSAndroid Build Coastguard Worker 226*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 227*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_VIRTUAL, 228*795d594fSAndroid Build Coastguard Worker owner = "Sums", 229*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "sum", 230*795d594fSAndroid Build Coastguard Worker descriptor = "(IIIIII)I") constSum6I()231*795d594fSAndroid Build Coastguard Worker private static MethodHandle constSum6I() { 232*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 233*795d594fSAndroid Build Coastguard Worker return null; 234*795d594fSAndroid Build Coastguard Worker } 235*795d594fSAndroid Build Coastguard Worker 236*795d594fSAndroid Build Coastguard Worker @Override sum6I()237*795d594fSAndroid Build Coastguard Worker public MethodHandle sum6I() { 238*795d594fSAndroid Build Coastguard Worker return constSum6I(); 239*795d594fSAndroid Build Coastguard Worker } 240*795d594fSAndroid Build Coastguard Worker 241*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 242*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_VIRTUAL, 243*795d594fSAndroid Build Coastguard Worker owner = "Sums", 244*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "sum", 245*795d594fSAndroid Build Coastguard Worker descriptor = "(IIIIIII)I") constSum7I()246*795d594fSAndroid Build Coastguard Worker private static MethodHandle constSum7I() { 247*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 248*795d594fSAndroid Build Coastguard Worker return null; 249*795d594fSAndroid Build Coastguard Worker } 250*795d594fSAndroid Build Coastguard Worker 251*795d594fSAndroid Build Coastguard Worker @Override sum7I()252*795d594fSAndroid Build Coastguard Worker public MethodHandle sum7I() { 253*795d594fSAndroid Build Coastguard Worker return constSum7I(); 254*795d594fSAndroid Build Coastguard Worker } 255*795d594fSAndroid Build Coastguard Worker 256*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 257*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_VIRTUAL, 258*795d594fSAndroid Build Coastguard Worker owner = "Sums", 259*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "sum", 260*795d594fSAndroid Build Coastguard Worker descriptor = "(IIIIIIII)I") constSum8I()261*795d594fSAndroid Build Coastguard Worker private static MethodHandle constSum8I() { 262*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 263*795d594fSAndroid Build Coastguard Worker return null; 264*795d594fSAndroid Build Coastguard Worker } 265*795d594fSAndroid Build Coastguard Worker 266*795d594fSAndroid Build Coastguard Worker @Override sum8I()267*795d594fSAndroid Build Coastguard Worker public MethodHandle sum8I() { 268*795d594fSAndroid Build Coastguard Worker return constSum8I(); 269*795d594fSAndroid Build Coastguard Worker } 270*795d594fSAndroid Build Coastguard Worker 271*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 272*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_VIRTUAL, 273*795d594fSAndroid Build Coastguard Worker owner = "Sums", 274*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "sum", 275*795d594fSAndroid Build Coastguard Worker descriptor = "(IIIIIIIII)I") constSum9I()276*795d594fSAndroid Build Coastguard Worker private static MethodHandle constSum9I() { 277*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 278*795d594fSAndroid Build Coastguard Worker return null; 279*795d594fSAndroid Build Coastguard Worker } 280*795d594fSAndroid Build Coastguard Worker 281*795d594fSAndroid Build Coastguard Worker @Override sum9I()282*795d594fSAndroid Build Coastguard Worker public MethodHandle sum9I() { 283*795d594fSAndroid Build Coastguard Worker return constSum9I(); 284*795d594fSAndroid Build Coastguard Worker } 285*795d594fSAndroid Build Coastguard Worker 286*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 287*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_VIRTUAL, 288*795d594fSAndroid Build Coastguard Worker owner = "Sums", 289*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "sum", 290*795d594fSAndroid Build Coastguard Worker descriptor = "(IIIIIIIIII)I") constSum10I()291*795d594fSAndroid Build Coastguard Worker private static MethodHandle constSum10I() { 292*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 293*795d594fSAndroid Build Coastguard Worker return null; 294*795d594fSAndroid Build Coastguard Worker } 295*795d594fSAndroid Build Coastguard Worker 296*795d594fSAndroid Build Coastguard Worker @Override sum10I()297*795d594fSAndroid Build Coastguard Worker public MethodHandle sum10I() { 298*795d594fSAndroid Build Coastguard Worker return constSum10I(); 299*795d594fSAndroid Build Coastguard Worker } 300*795d594fSAndroid Build Coastguard Worker 301*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 302*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_VIRTUAL, 303*795d594fSAndroid Build Coastguard Worker owner = "Sums", 304*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "sum", 305*795d594fSAndroid Build Coastguard Worker descriptor = "(IJ)J") constSumIJ()306*795d594fSAndroid Build Coastguard Worker private static MethodHandle constSumIJ() { 307*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 308*795d594fSAndroid Build Coastguard Worker return null; 309*795d594fSAndroid Build Coastguard Worker } 310*795d594fSAndroid Build Coastguard Worker 311*795d594fSAndroid Build Coastguard Worker @Override sumIJ()312*795d594fSAndroid Build Coastguard Worker public MethodHandle sumIJ() { 313*795d594fSAndroid Build Coastguard Worker return constSumIJ(); 314*795d594fSAndroid Build Coastguard Worker } 315*795d594fSAndroid Build Coastguard Worker 316*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 317*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_VIRTUAL, 318*795d594fSAndroid Build Coastguard Worker owner = "Sums", 319*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "sum", 320*795d594fSAndroid Build Coastguard Worker descriptor = "(IJIJ)J") constSum2IJ()321*795d594fSAndroid Build Coastguard Worker private static MethodHandle constSum2IJ() { 322*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 323*795d594fSAndroid Build Coastguard Worker return null; 324*795d594fSAndroid Build Coastguard Worker } 325*795d594fSAndroid Build Coastguard Worker 326*795d594fSAndroid Build Coastguard Worker @Override sum2IJ()327*795d594fSAndroid Build Coastguard Worker public MethodHandle sum2IJ() { 328*795d594fSAndroid Build Coastguard Worker return constSum2IJ(); 329*795d594fSAndroid Build Coastguard Worker } 330*795d594fSAndroid Build Coastguard Worker 331*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 332*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_VIRTUAL, 333*795d594fSAndroid Build Coastguard Worker owner = "Sums", 334*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "sum", 335*795d594fSAndroid Build Coastguard Worker descriptor = "(IJIJIJ)J") constSum3IJ()336*795d594fSAndroid Build Coastguard Worker private static MethodHandle constSum3IJ() { 337*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 338*795d594fSAndroid Build Coastguard Worker return null; 339*795d594fSAndroid Build Coastguard Worker } 340*795d594fSAndroid Build Coastguard Worker 341*795d594fSAndroid Build Coastguard Worker @Override sum3IJ()342*795d594fSAndroid Build Coastguard Worker public MethodHandle sum3IJ() { 343*795d594fSAndroid Build Coastguard Worker return constSum3IJ(); 344*795d594fSAndroid Build Coastguard Worker } 345*795d594fSAndroid Build Coastguard Worker 346*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 347*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_VIRTUAL, 348*795d594fSAndroid Build Coastguard Worker owner = "Sums", 349*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "sum", 350*795d594fSAndroid Build Coastguard Worker descriptor = "(IJIJIJIJ)J") constSum4IJ()351*795d594fSAndroid Build Coastguard Worker private static MethodHandle constSum4IJ() { 352*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 353*795d594fSAndroid Build Coastguard Worker return null; 354*795d594fSAndroid Build Coastguard Worker } 355*795d594fSAndroid Build Coastguard Worker 356*795d594fSAndroid Build Coastguard Worker @Override sum4IJ()357*795d594fSAndroid Build Coastguard Worker public MethodHandle sum4IJ() { 358*795d594fSAndroid Build Coastguard Worker return constSum4IJ(); 359*795d594fSAndroid Build Coastguard Worker } 360*795d594fSAndroid Build Coastguard Worker 361*795d594fSAndroid Build Coastguard Worker 362*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 363*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_VIRTUAL, 364*795d594fSAndroid Build Coastguard Worker owner = "Sums", 365*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "sum", 366*795d594fSAndroid Build Coastguard Worker descriptor = "(IJIJIJIJIJ)J") constSum5IJ()367*795d594fSAndroid Build Coastguard Worker private static MethodHandle constSum5IJ() { 368*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 369*795d594fSAndroid Build Coastguard Worker return null; 370*795d594fSAndroid Build Coastguard Worker } 371*795d594fSAndroid Build Coastguard Worker 372*795d594fSAndroid Build Coastguard Worker @Override sum5IJ()373*795d594fSAndroid Build Coastguard Worker public MethodHandle sum5IJ() { 374*795d594fSAndroid Build Coastguard Worker return constSum5IJ(); 375*795d594fSAndroid Build Coastguard Worker } 376*795d594fSAndroid Build Coastguard Worker 377*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 378*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_INTERFACE, 379*795d594fSAndroid Build Coastguard Worker owner = "Foo", 380*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "nonDefault", 381*795d594fSAndroid Build Coastguard Worker descriptor = "()Ljava/lang/String;", 382*795d594fSAndroid Build Coastguard Worker ownerIsInterface = true) constFooNonDefault()383*795d594fSAndroid Build Coastguard Worker private static MethodHandle constFooNonDefault() { 384*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 385*795d594fSAndroid Build Coastguard Worker return null; 386*795d594fSAndroid Build Coastguard Worker } 387*795d594fSAndroid Build Coastguard Worker 388*795d594fSAndroid Build Coastguard Worker @Override fooNonDefault()389*795d594fSAndroid Build Coastguard Worker public MethodHandle fooNonDefault() { 390*795d594fSAndroid Build Coastguard Worker return constFooNonDefault(); 391*795d594fSAndroid Build Coastguard Worker } 392*795d594fSAndroid Build Coastguard Worker 393*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 394*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_VIRTUAL, 395*795d594fSAndroid Build Coastguard Worker owner = "FooBarImpl", 396*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "nonDefault", 397*795d594fSAndroid Build Coastguard Worker descriptor = "()Ljava/lang/String;") constFooBarImplNonDefault()398*795d594fSAndroid Build Coastguard Worker private static MethodHandle constFooBarImplNonDefault() { 399*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 400*795d594fSAndroid Build Coastguard Worker return null; 401*795d594fSAndroid Build Coastguard Worker } 402*795d594fSAndroid Build Coastguard Worker 403*795d594fSAndroid Build Coastguard Worker @Override fooBarImplNonDefault()404*795d594fSAndroid Build Coastguard Worker public MethodHandle fooBarImplNonDefault() { 405*795d594fSAndroid Build Coastguard Worker return constFooBarImplNonDefault(); 406*795d594fSAndroid Build Coastguard Worker } 407*795d594fSAndroid Build Coastguard Worker 408*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 409*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_INTERFACE, 410*795d594fSAndroid Build Coastguard Worker owner = "Bar", 411*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "defaultToOverride", 412*795d594fSAndroid Build Coastguard Worker descriptor = "()Ljava/lang/String;", 413*795d594fSAndroid Build Coastguard Worker ownerIsInterface = true) constBarDefault()414*795d594fSAndroid Build Coastguard Worker private static MethodHandle constBarDefault() { 415*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 416*795d594fSAndroid Build Coastguard Worker return null; 417*795d594fSAndroid Build Coastguard Worker } 418*795d594fSAndroid Build Coastguard Worker 419*795d594fSAndroid Build Coastguard Worker @Override barDefault()420*795d594fSAndroid Build Coastguard Worker public MethodHandle barDefault() { 421*795d594fSAndroid Build Coastguard Worker return constBarDefault(); 422*795d594fSAndroid Build Coastguard Worker } 423*795d594fSAndroid Build Coastguard Worker 424*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 425*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_INTERFACE, 426*795d594fSAndroid Build Coastguard Worker owner = "Foo", 427*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "defaultToOverride", 428*795d594fSAndroid Build Coastguard Worker descriptor = "()Ljava/lang/String;", 429*795d594fSAndroid Build Coastguard Worker ownerIsInterface = true) constFooDefault()430*795d594fSAndroid Build Coastguard Worker private static MethodHandle constFooDefault() { 431*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 432*795d594fSAndroid Build Coastguard Worker return null; 433*795d594fSAndroid Build Coastguard Worker } 434*795d594fSAndroid Build Coastguard Worker 435*795d594fSAndroid Build Coastguard Worker @Override fooDefault()436*795d594fSAndroid Build Coastguard Worker public MethodHandle fooDefault() { 437*795d594fSAndroid Build Coastguard Worker return constFooDefault(); 438*795d594fSAndroid Build Coastguard Worker } 439*795d594fSAndroid Build Coastguard Worker 440*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 441*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_VIRTUAL, 442*795d594fSAndroid Build Coastguard Worker owner = "FooBarImpl", 443*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "defaultToOverride", 444*795d594fSAndroid Build Coastguard Worker descriptor = "()Ljava/lang/String;") constFooBarImplDefault()445*795d594fSAndroid Build Coastguard Worker private static MethodHandle constFooBarImplDefault() { 446*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 447*795d594fSAndroid Build Coastguard Worker return null; 448*795d594fSAndroid Build Coastguard Worker } 449*795d594fSAndroid Build Coastguard Worker 450*795d594fSAndroid Build Coastguard Worker @Override fooBarImplDefault()451*795d594fSAndroid Build Coastguard Worker public MethodHandle fooBarImplDefault() { 452*795d594fSAndroid Build Coastguard Worker return constFooBarImplDefault(); 453*795d594fSAndroid Build Coastguard Worker } 454*795d594fSAndroid Build Coastguard Worker 455*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 456*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_INTERFACE, 457*795d594fSAndroid Build Coastguard Worker owner = "Foo", 458*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "nonOverriddenDefault", 459*795d594fSAndroid Build Coastguard Worker descriptor = "()Ljava/lang/String;", 460*795d594fSAndroid Build Coastguard Worker ownerIsInterface = true) constFooNonOverriddenDefault()461*795d594fSAndroid Build Coastguard Worker private static MethodHandle constFooNonOverriddenDefault() { 462*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 463*795d594fSAndroid Build Coastguard Worker return null; 464*795d594fSAndroid Build Coastguard Worker } 465*795d594fSAndroid Build Coastguard Worker 466*795d594fSAndroid Build Coastguard Worker @Override fooNonOverriddenDefault()467*795d594fSAndroid Build Coastguard Worker public MethodHandle fooNonOverriddenDefault() { 468*795d594fSAndroid Build Coastguard Worker return constFooNonOverriddenDefault(); 469*795d594fSAndroid Build Coastguard Worker } 470*795d594fSAndroid Build Coastguard Worker 471*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 472*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_INTERFACE, 473*795d594fSAndroid Build Coastguard Worker owner = "Bar", 474*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "nonOverriddenDefault", 475*795d594fSAndroid Build Coastguard Worker descriptor = "()Ljava/lang/String;", 476*795d594fSAndroid Build Coastguard Worker ownerIsInterface = true) constBarNonOverriddenDefault()477*795d594fSAndroid Build Coastguard Worker private static MethodHandle constBarNonOverriddenDefault() { 478*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 479*795d594fSAndroid Build Coastguard Worker return null; 480*795d594fSAndroid Build Coastguard Worker } 481*795d594fSAndroid Build Coastguard Worker 482*795d594fSAndroid Build Coastguard Worker @Override barNonOverriddenDefault()483*795d594fSAndroid Build Coastguard Worker public MethodHandle barNonOverriddenDefault() { 484*795d594fSAndroid Build Coastguard Worker return constBarNonOverriddenDefault(); 485*795d594fSAndroid Build Coastguard Worker } 486*795d594fSAndroid Build Coastguard Worker 487*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 488*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_VIRTUAL, 489*795d594fSAndroid Build Coastguard Worker owner = "FooBar", 490*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "definedInAbstract", 491*795d594fSAndroid Build Coastguard Worker descriptor = "()Ljava/lang/String;") constFooBarDefinedInAbstract()492*795d594fSAndroid Build Coastguard Worker private static MethodHandle constFooBarDefinedInAbstract() { 493*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 494*795d594fSAndroid Build Coastguard Worker return null; 495*795d594fSAndroid Build Coastguard Worker } 496*795d594fSAndroid Build Coastguard Worker 497*795d594fSAndroid Build Coastguard Worker @Override fooBarDefinedInAbstract()498*795d594fSAndroid Build Coastguard Worker public MethodHandle fooBarDefinedInAbstract() { 499*795d594fSAndroid Build Coastguard Worker return constFooBarDefinedInAbstract(); 500*795d594fSAndroid Build Coastguard Worker } 501*795d594fSAndroid Build Coastguard Worker 502*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 503*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_VIRTUAL, 504*795d594fSAndroid Build Coastguard Worker owner = "FooBarImpl", 505*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "definedInAbstract", 506*795d594fSAndroid Build Coastguard Worker descriptor = "()Ljava/lang/String;") constFooBarImplDefinedInAbstract()507*795d594fSAndroid Build Coastguard Worker private static MethodHandle constFooBarImplDefinedInAbstract() { 508*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 509*795d594fSAndroid Build Coastguard Worker return null; 510*795d594fSAndroid Build Coastguard Worker } 511*795d594fSAndroid Build Coastguard Worker 512*795d594fSAndroid Build Coastguard Worker @Override fooBarImplDefinedInAbstract()513*795d594fSAndroid Build Coastguard Worker public MethodHandle fooBarImplDefinedInAbstract() { 514*795d594fSAndroid Build Coastguard Worker return constFooBarImplDefinedInAbstract(); 515*795d594fSAndroid Build Coastguard Worker } 516*795d594fSAndroid Build Coastguard Worker 517*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 518*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_VIRTUAL, 519*795d594fSAndroid Build Coastguard Worker owner = "FooBar", 520*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "nonDefault", 521*795d594fSAndroid Build Coastguard Worker descriptor = "()Ljava/lang/String;") constFooBarNonDefault()522*795d594fSAndroid Build Coastguard Worker private static MethodHandle constFooBarNonDefault() { 523*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 524*795d594fSAndroid Build Coastguard Worker return null; 525*795d594fSAndroid Build Coastguard Worker } 526*795d594fSAndroid Build Coastguard Worker 527*795d594fSAndroid Build Coastguard Worker @Override fooBarNonDefault()528*795d594fSAndroid Build Coastguard Worker public MethodHandle fooBarNonDefault() { 529*795d594fSAndroid Build Coastguard Worker return constFooBarNonDefault(); 530*795d594fSAndroid Build Coastguard Worker } 531*795d594fSAndroid Build Coastguard Worker 532*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 533*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_INTERFACE, 534*795d594fSAndroid Build Coastguard Worker owner = "ToStringable", 535*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "toString", 536*795d594fSAndroid Build Coastguard Worker descriptor = "()Ljava/lang/String;", 537*795d594fSAndroid Build Coastguard Worker ownerIsInterface = true) constToStringDefinedInAnInterface()538*795d594fSAndroid Build Coastguard Worker private static MethodHandle constToStringDefinedInAnInterface() { 539*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 540*795d594fSAndroid Build Coastguard Worker return null; 541*795d594fSAndroid Build Coastguard Worker } 542*795d594fSAndroid Build Coastguard Worker 543*795d594fSAndroid Build Coastguard Worker @Override toStringDefinedInAnInterface()544*795d594fSAndroid Build Coastguard Worker public MethodHandle toStringDefinedInAnInterface() { 545*795d594fSAndroid Build Coastguard Worker return constToStringDefinedInAnInterface(); 546*795d594fSAndroid Build Coastguard Worker } 547*795d594fSAndroid Build Coastguard Worker 548*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 549*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_INTERFACE, 550*795d594fSAndroid Build Coastguard Worker owner = "Interface1", 551*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "methodOne", 552*795d594fSAndroid Build Coastguard Worker descriptor = "()Ljava/lang/String;", 553*795d594fSAndroid Build Coastguard Worker ownerIsInterface = true) constInterfaceOneMethod()554*795d594fSAndroid Build Coastguard Worker private static MethodHandle constInterfaceOneMethod() { 555*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 556*795d594fSAndroid Build Coastguard Worker return null; 557*795d594fSAndroid Build Coastguard Worker } 558*795d594fSAndroid Build Coastguard Worker 559*795d594fSAndroid Build Coastguard Worker @Override interfaceOneMethod()560*795d594fSAndroid Build Coastguard Worker public MethodHandle interfaceOneMethod() { 561*795d594fSAndroid Build Coastguard Worker return constInterfaceOneMethod(); 562*795d594fSAndroid Build Coastguard Worker } 563*795d594fSAndroid Build Coastguard Worker 564*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 565*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_INTERFACE, 566*795d594fSAndroid Build Coastguard Worker owner = "Interface2", 567*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "methodTwo", 568*795d594fSAndroid Build Coastguard Worker descriptor = "()Ljava/lang/String;", 569*795d594fSAndroid Build Coastguard Worker ownerIsInterface = true) constInterfaceTwoMethod()570*795d594fSAndroid Build Coastguard Worker private static MethodHandle constInterfaceTwoMethod() { 571*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 572*795d594fSAndroid Build Coastguard Worker return null; 573*795d594fSAndroid Build Coastguard Worker } 574*795d594fSAndroid Build Coastguard Worker 575*795d594fSAndroid Build Coastguard Worker @Override interfaceTwoMethod()576*795d594fSAndroid Build Coastguard Worker public MethodHandle interfaceTwoMethod() { 577*795d594fSAndroid Build Coastguard Worker return constInterfaceTwoMethod(); 578*795d594fSAndroid Build Coastguard Worker } 579*795d594fSAndroid Build Coastguard Worker 580*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 581*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_INTERFACE, 582*795d594fSAndroid Build Coastguard Worker owner = "Interface3", 583*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "methodThree", 584*795d594fSAndroid Build Coastguard Worker descriptor = "()Ljava/lang/String;", 585*795d594fSAndroid Build Coastguard Worker ownerIsInterface = true) constInterfaceThreeMethod()586*795d594fSAndroid Build Coastguard Worker private static MethodHandle constInterfaceThreeMethod() { 587*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 588*795d594fSAndroid Build Coastguard Worker return null; 589*795d594fSAndroid Build Coastguard Worker } 590*795d594fSAndroid Build Coastguard Worker 591*795d594fSAndroid Build Coastguard Worker @Override interfaceThreeMethod()592*795d594fSAndroid Build Coastguard Worker public MethodHandle interfaceThreeMethod() { 593*795d594fSAndroid Build Coastguard Worker return constInterfaceThreeMethod(); 594*795d594fSAndroid Build Coastguard Worker } 595*795d594fSAndroid Build Coastguard Worker 596*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 597*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_INTERFACE, 598*795d594fSAndroid Build Coastguard Worker owner = "Interface4", 599*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "methodFour", 600*795d594fSAndroid Build Coastguard Worker descriptor = "()Ljava/lang/String;", 601*795d594fSAndroid Build Coastguard Worker ownerIsInterface = true) constInterfaceFourMethod()602*795d594fSAndroid Build Coastguard Worker private static MethodHandle constInterfaceFourMethod() { 603*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 604*795d594fSAndroid Build Coastguard Worker return null; 605*795d594fSAndroid Build Coastguard Worker } 606*795d594fSAndroid Build Coastguard Worker 607*795d594fSAndroid Build Coastguard Worker @Override interfaceFourMethod()608*795d594fSAndroid Build Coastguard Worker public MethodHandle interfaceFourMethod() { 609*795d594fSAndroid Build Coastguard Worker return constInterfaceFourMethod(); 610*795d594fSAndroid Build Coastguard Worker } 611*795d594fSAndroid Build Coastguard Worker 612*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 613*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_INTERFACE, 614*795d594fSAndroid Build Coastguard Worker owner = "FooAndFooConflict", 615*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "defaultToOverride", 616*795d594fSAndroid Build Coastguard Worker descriptor = "()Ljava/lang/String;", 617*795d594fSAndroid Build Coastguard Worker ownerIsInterface = true) constFooAndFooConflictDefault()618*795d594fSAndroid Build Coastguard Worker private static MethodHandle constFooAndFooConflictDefault() { 619*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 620*795d594fSAndroid Build Coastguard Worker return null; 621*795d594fSAndroid Build Coastguard Worker } 622*795d594fSAndroid Build Coastguard Worker 623*795d594fSAndroid Build Coastguard Worker @Override fooAndFooConflictDefault()624*795d594fSAndroid Build Coastguard Worker public MethodHandle fooAndFooConflictDefault() { 625*795d594fSAndroid Build Coastguard Worker return constFooAndFooConflictDefault(); 626*795d594fSAndroid Build Coastguard Worker } 627*795d594fSAndroid Build Coastguard Worker 628*795d594fSAndroid Build Coastguard Worker @ConstantMethodHandle( 629*795d594fSAndroid Build Coastguard Worker kind = ConstantMethodHandle.INVOKE_INTERFACE, 630*795d594fSAndroid Build Coastguard Worker owner = "BaseInterface", 631*795d594fSAndroid Build Coastguard Worker fieldOrMethodName = "method", 632*795d594fSAndroid Build Coastguard Worker descriptor = "()Ljava/lang/String;", 633*795d594fSAndroid Build Coastguard Worker ownerIsInterface = true) constBaseInterface()634*795d594fSAndroid Build Coastguard Worker private static MethodHandle constBaseInterface() { 635*795d594fSAndroid Build Coastguard Worker unreachable("should be replaced by const-method-handle"); 636*795d594fSAndroid Build Coastguard Worker return null; 637*795d594fSAndroid Build Coastguard Worker } 638*795d594fSAndroid Build Coastguard Worker 639*795d594fSAndroid Build Coastguard Worker @Override baseInterface()640*795d594fSAndroid Build Coastguard Worker public MethodHandle baseInterface() { 641*795d594fSAndroid Build Coastguard Worker return constBaseInterface(); 642*795d594fSAndroid Build Coastguard Worker } 643*795d594fSAndroid Build Coastguard Worker } 644