1*055d4590SKeyi Gui /* 2*055d4590SKeyi Gui * Copyright (C) 2017 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 19*055d4590SKeyi Gui public class TestInvokePolymorphic { testInvokeVoidReturnNoArgs(MethodHandle mh)20*055d4590SKeyi Gui public static void testInvokeVoidReturnNoArgs(MethodHandle mh) throws Throwable { 21*055d4590SKeyi Gui mh.invoke(); 22*055d4590SKeyi Gui } 23*055d4590SKeyi Gui testInvokeExactVoidReturnNoArgs(MethodHandle mh)24*055d4590SKeyi Gui public static void testInvokeExactVoidReturnNoArgs(MethodHandle mh) throws Throwable { 25*055d4590SKeyi Gui mh.invokeExact(); 26*055d4590SKeyi Gui } 27*055d4590SKeyi Gui testInvokeIntReturnNoArgs(MethodHandle mh)28*055d4590SKeyi Gui public static int testInvokeIntReturnNoArgs(MethodHandle mh) throws Throwable { 29*055d4590SKeyi Gui return (int) mh.invoke(); 30*055d4590SKeyi Gui } 31*055d4590SKeyi Gui testInvokeExactIntReturnNoArgs(MethodHandle mh)32*055d4590SKeyi Gui public static int testInvokeExactIntReturnNoArgs(MethodHandle mh) throws Throwable { 33*055d4590SKeyi Gui return (int) mh.invokeExact(); 34*055d4590SKeyi Gui } 35*055d4590SKeyi Gui testInvokeLongReturnNoArgs(MethodHandle mh)36*055d4590SKeyi Gui public static long testInvokeLongReturnNoArgs(MethodHandle mh) throws Throwable { 37*055d4590SKeyi Gui return (long) mh.invoke(); 38*055d4590SKeyi Gui } 39*055d4590SKeyi Gui testInvokeExactLongReturnNoArgs(MethodHandle mh)40*055d4590SKeyi Gui public static long testInvokeExactLongReturnNoArgs(MethodHandle mh) throws Throwable { 41*055d4590SKeyi Gui return (long) mh.invokeExact(); 42*055d4590SKeyi Gui } 43*055d4590SKeyi Gui testInvokeDoubleReturnNoArgs(MethodHandle mh)44*055d4590SKeyi Gui public static double testInvokeDoubleReturnNoArgs(MethodHandle mh) throws Throwable { 45*055d4590SKeyi Gui return (double) mh.invoke(); 46*055d4590SKeyi Gui } 47*055d4590SKeyi Gui testInvokeExactDoubleReturnNoArgs(MethodHandle mh)48*055d4590SKeyi Gui public static double testInvokeExactDoubleReturnNoArgs(MethodHandle mh) throws Throwable { 49*055d4590SKeyi Gui return (double) mh.invokeExact(); 50*055d4590SKeyi Gui } 51*055d4590SKeyi Gui testInvokeDoubleReturn2Arguments(MethodHandle mh, Object o, long l)52*055d4590SKeyi Gui public static double testInvokeDoubleReturn2Arguments(MethodHandle mh, Object o, long l) 53*055d4590SKeyi Gui throws Throwable { 54*055d4590SKeyi Gui return (double) mh.invoke(o, l); 55*055d4590SKeyi Gui } 56*055d4590SKeyi Gui testInvokeExactDoubleReturn2Arguments(MethodHandle mh, Object o, long l)57*055d4590SKeyi Gui public static double testInvokeExactDoubleReturn2Arguments(MethodHandle mh, Object o, long l) 58*055d4590SKeyi Gui throws Throwable { 59*055d4590SKeyi Gui return (double) mh.invokeExact(o, l); 60*055d4590SKeyi Gui } 61*055d4590SKeyi Gui testInvokeVoidReturn3IntArguments(MethodHandle mh, int x, int y, int z)62*055d4590SKeyi Gui public static void testInvokeVoidReturn3IntArguments(MethodHandle mh, int x, int y, int z) 63*055d4590SKeyi Gui throws Throwable { 64*055d4590SKeyi Gui mh.invoke( x, y, z); 65*055d4590SKeyi Gui } 66*055d4590SKeyi Gui testInvokeExactVoidReturn3IntArguments(MethodHandle mh, int x, int y, int z)67*055d4590SKeyi Gui public static void testInvokeExactVoidReturn3IntArguments(MethodHandle mh, int x, int y, int z) 68*055d4590SKeyi Gui throws Throwable { 69*055d4590SKeyi Gui mh.invokeExact(x, y, z); 70*055d4590SKeyi Gui } 71*055d4590SKeyi Gui testInvokeVoidReturn3Arguments(MethodHandle mh, Object o, long l, double d)72*055d4590SKeyi Gui public static void testInvokeVoidReturn3Arguments(MethodHandle mh, Object o, long l, double d) 73*055d4590SKeyi Gui throws Throwable { 74*055d4590SKeyi Gui mh.invoke(o, l, d); 75*055d4590SKeyi Gui } 76*055d4590SKeyi Gui testInvokeExactVoidReturn3Arguments(MethodHandle mh, Object o, long l, double d)77*055d4590SKeyi Gui public static void testInvokeExactVoidReturn3Arguments(MethodHandle mh, Object o, long l, 78*055d4590SKeyi Gui double d) throws Throwable { 79*055d4590SKeyi Gui mh.invokeExact(o, l, d); 80*055d4590SKeyi Gui } 81*055d4590SKeyi Gui testInvokeIntReturn5Arguments(MethodHandle mh, Object o, long l, double d, float f, String s)82*055d4590SKeyi Gui public static int testInvokeIntReturn5Arguments(MethodHandle mh, Object o, long l, double d, 83*055d4590SKeyi Gui float f, String s) throws Throwable { 84*055d4590SKeyi Gui return (int) mh.invoke(o, l, d, f, s); 85*055d4590SKeyi Gui } 86*055d4590SKeyi Gui testInvokeExactIntReturn5Arguments(MethodHandle mh, Object o, long l, double d, float f, String s)87*055d4590SKeyi Gui public static int testInvokeExactIntReturn5Arguments(MethodHandle mh, Object o, long l, 88*055d4590SKeyi Gui double d, float f, String s) 89*055d4590SKeyi Gui throws Throwable { 90*055d4590SKeyi Gui return (int) mh.invokeExact(o, l, d, f, s); 91*055d4590SKeyi Gui } 92*055d4590SKeyi Gui } 93