summaryrefslogtreecommitdiff
path: root/test/953-invoke-polymorphic-compiler/src/Main.java
diff options
context:
space:
mode:
Diffstat (limited to 'test/953-invoke-polymorphic-compiler/src/Main.java')
-rw-r--r--test/953-invoke-polymorphic-compiler/src/Main.java374
1 files changed, 0 insertions, 374 deletions
diff --git a/test/953-invoke-polymorphic-compiler/src/Main.java b/test/953-invoke-polymorphic-compiler/src/Main.java
deleted file mode 100644
index 20a8fec112..0000000000
--- a/test/953-invoke-polymorphic-compiler/src/Main.java
+++ /dev/null
@@ -1,374 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.lang.invoke.MethodHandle;
-import java.lang.invoke.MethodHandles;
-import java.lang.invoke.MethodHandles.Lookup;
-import java.lang.invoke.MethodType;
-import java.lang.invoke.WrongMethodTypeException;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.nio.charset.Charset;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-public class Main {
- public static void assertTrue(boolean value) {
- if (!value) {
- throw new AssertionError("assertTrue value: " + value);
- }
- }
-
- public static void assertFalse(boolean value) {
- if (value) {
- throw new AssertionError("assertTrue value: " + value);
- }
- }
-
- public static void assertEquals(int i1, int i2) {
- if (i1 == i2) { return; }
- throw new AssertionError("assertEquals i1: " + i1 + ", i2: " + i2);
- }
-
- public static void assertEquals(long i1, long i2) {
- if (i1 == i2) { return; }
- throw new AssertionError("assertEquals l1: " + i1 + ", l2: " + i2);
- }
-
- public static void assertEquals(Object o, Object p) {
- if (o == p) { return; }
- if (o != null && p != null && o.equals(p)) { return; }
- throw new AssertionError("assertEquals: o1: " + o + ", o2: " + p);
- }
-
- public static void assertEquals(String s1, String s2) {
- if (s1 == s2) {
- return;
- }
-
- if (s1 != null && s2 != null && s1.equals(s2)) {
- return;
- }
-
- throw new AssertionError("assertEquals s1: " + s1 + ", s2: " + s2);
- }
-
- public static void fail() {
- System.err.println("fail");
- Thread.dumpStack();
- }
-
- public static void fail(String message) {
- System.err.println("fail: " + message);
- Thread.dumpStack();
- }
-
- public static int Min2Print2(int a, int b) {
- int[] values = new int[] { a, b };
- System.err.println("Running Main.Min2Print2(" + Arrays.toString(values) + ")");
- return a > b ? a : b;
- }
-
- public static int Min2Print3(int a, int b, int c) {
- int[] values = new int[] { a, b, c };
- System.err.println("Running Main.Min2Print3(" + Arrays.toString(values) + ")");
- return a > b ? a : b;
- }
-
- public static int Min2Print6(int a, int b, int c, int d, int e, int f) {
- int[] values = new int[] { a, b, c, d, e, f };
- System.err.println("Running Main.Min2Print6(" + Arrays.toString(values) + ")");
- return a > b ? a : b;
- }
-
- public static int Min2Print26(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, int p,
- int q, int r, int s, int t,
- int u, int v, int w, int x,
- int y, int z) {
- int[] values = new int[] { a, b, c, d, e, f, g, h, i, j, k, l, m,
- n, o, p, q, r, s, t, u, v, w, x, y, z };
- System.err.println("Running Main.Min2Print26(" + Arrays.toString(values) + ")");
- return a > b ? a : b;
- }
-
- public static void $opt$BasicTest() throws Throwable {
- MethodHandle mh;
- mh = MethodHandles.lookup().findStatic(
- Main.class, "Min2Print2", MethodType.methodType(int.class, int.class, int.class));
- assertEquals((int) mh.invokeExact(33, -4), 33);
- assertEquals((int) mh.invokeExact(-4, 33), 33);
-
- mh = MethodHandles.lookup().findStatic(
- Main.class, "Min2Print3",
- MethodType.methodType(int.class, int.class, int.class, int.class));
- assertEquals((int) mh.invokeExact(33, -4, 17), 33);
- assertEquals((int) mh.invokeExact(-4, 17, 33), 17);
- assertEquals((int) mh.invokeExact(17, 33, -4), 33);
-
- mh = MethodHandles.lookup().findStatic(
- Main.class, "Min2Print6",
- MethodType.methodType(
- int.class, int.class, int.class, int.class, int.class, int.class, int.class));
- assertEquals((int) mh.invokeExact(33, -4, 77, 88, 99, 111), 33);
- try {
- // Too few arguments
- assertEquals((int) mh.invokeExact(33, -4, 77, 88), 33);
- fail("No WMTE for too few arguments");
- } catch (WrongMethodTypeException e) {}
- try {
- // Too many arguments
- assertEquals((int) mh.invokeExact(33, -4, 77, 88, 89, 90, 91), 33);
- fail("No WMTE for too many arguments");
- } catch (WrongMethodTypeException e) {}
- assertEquals((int) mh.invokeExact(-4, 77, 88, 99, 111, 33), 77);
- assertEquals((int) mh.invokeExact(77, 88, 99, 111, 33, -4), 88);
- assertEquals((int) mh.invokeExact(88, 99, 111, 33, -4, 77), 99);
- assertEquals((int) mh.invokeExact(99, 111, 33, -4, 77, 88), 111);
- assertEquals((int) mh.invokeExact(111, 33, -4, 77, 88, 99), 111);
-
- // A preposterous number of arguments.
- mh = MethodHandles.lookup().findStatic(
- Main.class, "Min2Print26",
- MethodType.methodType(
- // Return-type
- int.class,
- // Arguments
- int.class, int.class, int.class, int.class, int.class, int.class, int.class, int.class,
- int.class, int.class, int.class, int.class, int.class, int.class, int.class, int.class,
- int.class, int.class, int.class, int.class, int.class, int.class, int.class, int.class,
- int.class, int.class));
- assertEquals(1, (int) mh.invokeExact(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25));
- assertEquals(25, (int) mh.invokeExact(25, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24));
- assertEquals(25, (int) mh.invokeExact(24, 25, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23));
-
- try {
- // Wrong argument type
- mh.invokeExact("a");
- fail("No WMTE for wrong arguments");
- } catch (WrongMethodTypeException wmte) {}
-
- try {
- // Invoke on null handle.
- MethodHandle mh0 = null;
- mh0.invokeExact("bad");
- fail("No NPE for you");
- } catch (NullPointerException npe) {}
-
- System.err.println("BasicTest done.");
- }
-
- private static boolean And(boolean lhs, boolean rhs) {
- return lhs & rhs;
- }
-
- private static boolean Xor(boolean lhs, boolean rhs) {
- return lhs ^ rhs;
- }
-
- private static String Multiply(String value, int n) {
- String result = "";
- for (int i = 0; i < n; ++i) {
- result = value + result;
- }
- return result;
- }
-
- private static byte Multiply(byte value, byte n) {
- return (byte)(value * n);
- }
-
- private static short Multiply(short value, short n) {
- return (short)(value * n);
- }
-
- private static int Multiply(int value, int n) {
- return value * n;
- }
-
- private static long Multiply(long value, long n) {
- return value * n;
- }
-
- private static float Multiply(float value, float n) {
- return value * n;
- }
-
- private static double Multiply(double value, double n) {
- return value * n;
- }
-
- private static char Next(char c) {
- return (char)(c + 1);
- }
-
- public static void $opt$ReturnBooleanTest() throws Throwable {
- MethodHandles.Lookup lookup = MethodHandles.lookup();
- MethodHandle mh =
- lookup.findStatic(Main.class, "And",
- MethodType.methodType(boolean.class, boolean.class, boolean.class));
- assertEquals(true, (boolean) mh.invokeExact(true, true));
- assertEquals(false, (boolean) mh.invokeExact(true, false));
- assertEquals(false, (boolean) mh.invokeExact(false, true));
- assertEquals(false, (boolean) mh.invokeExact(false, false));
- assertEquals(true, (boolean) mh.invoke(true, true));
- assertEquals(false, (boolean) mh.invoke(true, false));
- assertEquals(false, (boolean) mh.invoke(false, true));
- assertEquals(false, (boolean) mh.invoke(false, false));
-
- mh = lookup.findStatic(Main.class, "Xor",
- MethodType.methodType(boolean.class, boolean.class, boolean.class));
- assertEquals(false, (boolean) mh.invokeExact(true, true));
- assertEquals(true, (boolean) mh.invokeExact(true, false));
- assertEquals(true, (boolean) mh.invokeExact(false, true));
- assertEquals(false, (boolean) mh.invokeExact(false, false));
- assertEquals(false, (boolean) mh.invoke(true, true));
- assertEquals(true, (boolean) mh.invoke(true, false));
- assertEquals(true, (boolean) mh.invoke(false, true));
- assertEquals(false, (boolean) mh.invoke(false, false));
-
- System.err.println("$opt$ReturnBooleanTest done.");
- }
-
- public static void $opt$ReturnCharTest() throws Throwable {
- MethodHandles.Lookup lookup = MethodHandles.lookup();
- MethodHandle mh = lookup.findStatic(Main.class, "Next",
- MethodType.methodType(char.class, char.class));
- assertEquals('B', (char) mh.invokeExact('A'));
- assertEquals((char) -55, (char) mh.invokeExact((char) -56));
- System.err.println("$opt$ReturnCharTest done.");
- }
-
- public static void $opt$ReturnByteTest() throws Throwable {
- MethodHandles.Lookup lookup = MethodHandles.lookup();
- MethodHandle mh = lookup.findStatic(Main.class, "Multiply",
- MethodType.methodType(byte.class, byte.class, byte.class));
- assertEquals((byte) 30, (byte) mh.invokeExact((byte) 10, (byte) 3));
- assertEquals((byte) -90, (byte) mh.invoke((byte) -10, (byte) 9));
- System.err.println("$opt$ReturnByteTest done.");
- }
-
- public static void $opt$ReturnShortTest() throws Throwable {
- MethodHandles.Lookup lookup = MethodHandles.lookup();
- MethodHandle mh = lookup.findStatic(Main.class, "Multiply",
- MethodType.methodType(short.class, short.class, short.class));
- assertEquals((short) 3000, (short) mh.invokeExact((short) 1000, (short) 3));
- assertEquals((short) -3000, (short) mh.invoke((short) -1000, (short) 3));
- System.err.println("$opt$ReturnShortTest done.");
- }
-
- public static void $opt$ReturnIntTest() throws Throwable {
- MethodHandles.Lookup lookup = MethodHandles.lookup();
- MethodHandle mh = lookup.findStatic(Main.class, "Multiply",
- MethodType.methodType(int.class, int.class, int.class));
- assertEquals(3_000_000, (int) mh.invokeExact(1_000_000, 3));
- assertEquals(-3_000_000, (int) mh.invoke(-1_000, 3_000));
- System.err.println("$opt$ReturnIntTest done.");
- }
-
- public static void $opt$ReturnLongTest() throws Throwable {
- MethodHandles.Lookup lookup = MethodHandles.lookup();
- MethodHandle mh = lookup.findStatic(Main.class, "Multiply",
- MethodType.methodType(long.class, long.class, long.class));
- assertEquals(4_294_967_295_000L, (long) mh.invokeExact(1000L, 4_294_967_295L));
- assertEquals(-4_294_967_295_000L, (long) mh.invoke(-1000L, 4_294_967_295L));
- System.err.println("$opt$ReturnLongTest done.");
- }
-
- public static void $opt$ReturnFloatTest() throws Throwable {
- MethodHandles.Lookup lookup = MethodHandles.lookup();
- MethodHandle mh = lookup.findStatic(Main.class, "Multiply",
- MethodType.methodType(float.class, float.class, float.class));
- assertEquals(3.0F, (float) mh.invokeExact(1000.0F, 3e-3F));
- assertEquals(-3.0F, (float) mh.invoke(-1000.0F, 3e-3F));
- System.err.println("$opt$ReturnFloatTest done.");
- }
-
- public static void $opt$ReturnDoubleTest() throws Throwable {
- MethodHandles.Lookup lookup = MethodHandles.lookup();
- MethodHandle mh = lookup.findStatic(Main.class, "Multiply",
- MethodType.methodType(double.class, double.class, double.class));
- assertEquals(3033000.0, (double) mh.invokeExact(1000.0, 3.033e3));
- assertEquals(-3033000.0, (double) mh.invoke(-1000.0, 3.033e3));
- System.err.println("$opt$ReturnDoubleTest done.");
- }
-
- public static void $opt$ReturnStringTest() throws Throwable {
- MethodHandles.Lookup lookup = MethodHandles.lookup();
- MethodHandle mh = lookup.findStatic(Main.class, "Multiply",
- MethodType.methodType(String.class, String.class, int.class));
- assertEquals("100010001000", (String) mh.invokeExact("1000", 3));
- assertEquals("100010001000", (String) mh.invoke("1000", 3));
- System.err.println("$opt$ReturnStringTest done.");
- }
-
- public static void ReturnValuesTest() throws Throwable {
- $opt$ReturnBooleanTest();
- $opt$ReturnCharTest();
- $opt$ReturnByteTest();
- $opt$ReturnShortTest();
- $opt$ReturnIntTest();
- $opt$ReturnLongTest();
- $opt$ReturnFloatTest();
- $opt$ReturnDoubleTest();
- $opt$ReturnStringTest();
- System.err.println("ReturnValuesTest done.");
- }
-
- static class ValueHolder {
- public boolean m_z;
- public static boolean s_z;
- }
-
- public static void $opt$AccessorsTest() throws Throwable {
- ValueHolder valueHolder = new ValueHolder();
- MethodHandles.Lookup lookup = MethodHandles.lookup();
-
- MethodHandle setMember = lookup.findSetter(ValueHolder.class, "m_z", boolean.class);
- MethodHandle getMember = lookup.findGetter(ValueHolder.class, "m_z", boolean.class);
- MethodHandle setStatic = lookup.findStaticSetter(ValueHolder.class, "s_z", boolean.class);
- MethodHandle getStatic = lookup.findStaticGetter(ValueHolder.class, "s_z", boolean.class);
-
- boolean [] values = { false, true, false, true, false };
- for (boolean value : values) {
- assertEquals((boolean) getStatic.invoke(), ValueHolder.s_z);
- setStatic.invoke(value);
- ValueHolder.s_z = value;
- assertEquals(ValueHolder.s_z, value);
- assertEquals((boolean) getStatic.invoke(), value);
-
- assertEquals((boolean) getMember.invoke(valueHolder), valueHolder.m_z);
- setMember.invoke(valueHolder, value);
- valueHolder.m_z = value;
- assertEquals(valueHolder.m_z, value);
- assertEquals((boolean) getMember.invoke(valueHolder), value);
- }
- }
-
- public static void main(String[] args) throws Throwable {
- $opt$BasicTest();
- ReturnValuesTest();
- $opt$AccessorsTest();
- }
-}