xref: /aosp_15_r20/art/test/2277-methodhandle-invokeexact/src/ConstMethodHandleTest.java (revision 795d594fd825385562da6b089ea9b2033f3abf5a)
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