xref: /aosp_15_r20/dalvik/dx/tests/138-invoke-polymorphic-again/Main.java (revision 055d459012065f78d96b68be8421640240ddf631)
1*055d4590SKeyi Gui /*
2*055d4590SKeyi Gui  * Copyright (C) 2016 The Android Open Source Project
3*055d4590SKeyi Gui  *
4*055d4590SKeyi Gui  * Licensed under the Apache License, Version 2.0 (the "License");
5*055d4590SKeyi Gui  * you may not use this file except in compliance with the License.
6*055d4590SKeyi Gui  * You may obtain a copy of the License at
7*055d4590SKeyi Gui  *
8*055d4590SKeyi Gui  *      http://www.apache.org/licenses/LICENSE-2.0
9*055d4590SKeyi Gui  *
10*055d4590SKeyi Gui  * Unless required by applicable law or agreed to in writing, software
11*055d4590SKeyi Gui  * distributed under the License is distributed on an "AS IS" BASIS,
12*055d4590SKeyi Gui  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*055d4590SKeyi Gui  * See the License for the specific language governing permissions and
14*055d4590SKeyi Gui  * limitations under the License.
15*055d4590SKeyi Gui  */
16*055d4590SKeyi Gui 
17*055d4590SKeyi Gui import java.lang.invoke.MethodHandle;
18*055d4590SKeyi Gui import java.lang.invoke.MethodHandles;
19*055d4590SKeyi Gui import java.lang.invoke.MethodHandles.Lookup;
20*055d4590SKeyi Gui import java.lang.invoke.MethodType;
21*055d4590SKeyi Gui 
22*055d4590SKeyi Gui public class Main {
assertEquals(int i1, int i2)23*055d4590SKeyi Gui   public static void assertEquals(int i1, int i2) {
24*055d4590SKeyi Gui   }
25*055d4590SKeyi Gui 
foof(int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m, int n, int o)26*055d4590SKeyi Gui   public int foof(int a, int b, int c, int d,
27*055d4590SKeyi Gui                   int e, int f, int g, int h,
28*055d4590SKeyi Gui                   int i, int j, int k, int l,
29*055d4590SKeyi Gui                   int m, int n, int o) {
30*055d4590SKeyi Gui     return a;
31*055d4590SKeyi Gui   }
32*055d4590SKeyi Gui 
$opt$BasicTest()33*055d4590SKeyi Gui   public static void $opt$BasicTest() throws Throwable {
34*055d4590SKeyi Gui     Main m = null;
35*055d4590SKeyi Gui     // OTH: >= 15 arguments to invokeExact tickles this bug. Fewer, no repro.
36*055d4590SKeyi Gui     assertEquals(42, -42);
37*055d4590SKeyi Gui     m.foof(0, 1, 2, 3,
38*055d4590SKeyi Gui            4, 5, 6, 7,
39*055d4590SKeyi Gui            8, 9, 10, 11,
40*055d4590SKeyi Gui            12, 13, 14);
41*055d4590SKeyi Gui     MethodHandle mh0 = null;
42*055d4590SKeyi Gui     mh0.invokeExact("bad");
43*055d4590SKeyi Gui   }
44*055d4590SKeyi Gui 
$opt$BasicTest2()45*055d4590SKeyi Gui   public static int $opt$BasicTest2() throws Throwable {
46*055d4590SKeyi Gui     Main m = null;
47*055d4590SKeyi Gui     // OTH: >= 15 arguments to invokeExact tickles this bug. Fewer, no repro.
48*055d4590SKeyi Gui     assertEquals(42, -42);
49*055d4590SKeyi Gui     m.foof(0, 1, 2, 3,
50*055d4590SKeyi Gui            4, 5, 6, 7,
51*055d4590SKeyi Gui            8, 9, 10, 11,
52*055d4590SKeyi Gui            12, 13, 14);
53*055d4590SKeyi Gui     MethodHandle mh0 = null;
54*055d4590SKeyi Gui     return (int) mh0.invokeExact("bad");
55*055d4590SKeyi Gui   }
56*055d4590SKeyi Gui 
main(String[] args)57*055d4590SKeyi Gui   public static void main(String[] args) throws Throwable {
58*055d4590SKeyi Gui     $opt$BasicTest();
59*055d4590SKeyi Gui   }
60*055d4590SKeyi Gui }
61