1 /* |
1 /* |
2 * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
52 } |
52 } |
53 static void doboolean(boolean x) throws Throwable { |
53 static void doboolean(boolean x) throws Throwable { |
54 if (DEBUG) System.out.println("boolean=" + x); |
54 if (DEBUG) System.out.println("boolean=" + x); |
55 MethodHandle mh1 = MethodHandles.lookup().findStatic(CLASS, NAME, MethodType.methodType(boolean.class, boolean.class)); |
55 MethodHandle mh1 = MethodHandles.lookup().findStatic(CLASS, NAME, MethodType.methodType(boolean.class, boolean.class)); |
56 MethodHandle mh2 = mh1.asType(MethodType.methodType(boolean.class, Boolean.class)); |
56 MethodHandle mh2 = mh1.asType(MethodType.methodType(boolean.class, Boolean.class)); |
57 boolean a = mh1.<boolean>invokeExact(x); |
57 boolean a = (boolean) mh1.invokeExact(x); |
58 boolean b = mh2.<boolean>invokeExact(Boolean.valueOf(x)); |
58 boolean b = (boolean) mh2.invokeExact(Boolean.valueOf(x)); |
59 assert a == b : a + " != " + b; |
59 assert a == b : a + " != " + b; |
60 } |
60 } |
61 |
61 |
62 // byte |
62 // byte |
63 static void testbyte() throws Throwable { |
63 static void testbyte() throws Throwable { |
78 } |
78 } |
79 static void dobyte(byte x) throws Throwable { |
79 static void dobyte(byte x) throws Throwable { |
80 if (DEBUG) System.out.println("byte=" + x); |
80 if (DEBUG) System.out.println("byte=" + x); |
81 MethodHandle mh1 = MethodHandles.lookup().findStatic(CLASS, NAME, MethodType.methodType(byte.class, byte.class)); |
81 MethodHandle mh1 = MethodHandles.lookup().findStatic(CLASS, NAME, MethodType.methodType(byte.class, byte.class)); |
82 MethodHandle mh2 = mh1.asType(MethodType.methodType(byte.class, Byte.class)); |
82 MethodHandle mh2 = mh1.asType(MethodType.methodType(byte.class, Byte.class)); |
83 byte a = mh1.<byte>invokeExact(x); |
83 byte a = (byte) mh1.invokeExact(x); |
84 byte b = mh2.<byte>invokeExact(Byte.valueOf(x)); |
84 byte b = (byte) mh2.invokeExact(Byte.valueOf(x)); |
85 assert a == b : a + " != " + b; |
85 assert a == b : a + " != " + b; |
86 } |
86 } |
87 |
87 |
88 // char |
88 // char |
89 static void testchar() throws Throwable { |
89 static void testchar() throws Throwable { |
102 } |
102 } |
103 static void dochar(char x) throws Throwable { |
103 static void dochar(char x) throws Throwable { |
104 if (DEBUG) System.out.println("char=" + x); |
104 if (DEBUG) System.out.println("char=" + x); |
105 MethodHandle mh1 = MethodHandles.lookup().findStatic(CLASS, NAME, MethodType.methodType(char.class, char.class)); |
105 MethodHandle mh1 = MethodHandles.lookup().findStatic(CLASS, NAME, MethodType.methodType(char.class, char.class)); |
106 MethodHandle mh2 = mh1.asType(MethodType.methodType(char.class, Character.class)); |
106 MethodHandle mh2 = mh1.asType(MethodType.methodType(char.class, Character.class)); |
107 char a = mh1.<char>invokeExact(x); |
107 char a = (char) mh1.invokeExact(x); |
108 char b = mh2.<char>invokeExact(Character.valueOf(x)); |
108 char b = (char) mh2.invokeExact(Character.valueOf(x)); |
109 assert a == b : a + " != " + b; |
109 assert a == b : a + " != " + b; |
110 } |
110 } |
111 |
111 |
112 // short |
112 // short |
113 static void testshort() throws Throwable { |
113 static void testshort() throws Throwable { |
132 } |
132 } |
133 static void doshort(short x) throws Throwable { |
133 static void doshort(short x) throws Throwable { |
134 if (DEBUG) System.out.println("short=" + x); |
134 if (DEBUG) System.out.println("short=" + x); |
135 MethodHandle mh1 = MethodHandles.lookup().findStatic(CLASS, NAME, MethodType.methodType(short.class, short.class)); |
135 MethodHandle mh1 = MethodHandles.lookup().findStatic(CLASS, NAME, MethodType.methodType(short.class, short.class)); |
136 MethodHandle mh2 = mh1.asType(MethodType.methodType(short.class, Short.class)); |
136 MethodHandle mh2 = mh1.asType(MethodType.methodType(short.class, Short.class)); |
137 short a = mh1.<short>invokeExact(x); |
137 short a = (short) mh1.invokeExact(x); |
138 short b = mh2.<short>invokeExact(Short.valueOf(x)); |
138 short b = (short) mh2.invokeExact(Short.valueOf(x)); |
139 assert a == b : a + " != " + b; |
139 assert a == b : a + " != " + b; |
140 } |
140 } |
141 |
141 |
142 // int |
142 // int |
143 static void testint() throws Throwable { |
143 static void testint() throws Throwable { |
162 } |
162 } |
163 static void doint(int x) throws Throwable { |
163 static void doint(int x) throws Throwable { |
164 if (DEBUG) System.out.println("int=" + x); |
164 if (DEBUG) System.out.println("int=" + x); |
165 MethodHandle mh1 = MethodHandles.lookup().findStatic(CLASS, NAME, MethodType.methodType(int.class, int.class)); |
165 MethodHandle mh1 = MethodHandles.lookup().findStatic(CLASS, NAME, MethodType.methodType(int.class, int.class)); |
166 MethodHandle mh2 = mh1.asType(MethodType.methodType(int.class, Integer.class)); |
166 MethodHandle mh2 = mh1.asType(MethodType.methodType(int.class, Integer.class)); |
167 int a = mh1.<int>invokeExact(x); |
167 int a = (int) mh1.invokeExact(x); |
168 int b = mh2.<int>invokeExact(Integer.valueOf(x)); |
168 int b = (int) mh2.invokeExact(Integer.valueOf(x)); |
169 assert a == b : a + " != " + b; |
169 assert a == b : a + " != " + b; |
170 } |
170 } |
171 |
171 |
172 public static boolean foo(boolean i) { return i; } |
172 public static boolean foo(boolean i) { return i; } |
173 public static byte foo(byte i) { return i; } |
173 public static byte foo(byte i) { return i; } |