提交 facfd51e 编写于 作者: J jrose

6979327: method handle invocation should use casts instead of type parameters...

6979327: method handle invocation should use casts instead of type parameters to specify return type
Summary: Change result type parameters to result type casts.  (Also, replace private placeholder class InvokeDynamic.)
Reviewed-by: twisti
上级 5150d263
...@@ -36,9 +36,7 @@ AUTO_FILES_JAVA_DIRS = java/dyn sun/dyn ...@@ -36,9 +36,7 @@ AUTO_FILES_JAVA_DIRS = java/dyn sun/dyn
LANGUAGE_VERSION = -source 7 LANGUAGE_VERSION = -source 7
CLASS_VERSION = -target 7 CLASS_VERSION = -target 7
# Actually, it will be less disruptive to compile with the same # Tell the compiler not to accept transitional forms.
# -target option as the rest of the system, and just turn on OTHER_JAVACFLAGS = -XDallowTransitionalJSR292=no
# the specific compiler option we need here:
OTHER_JAVACFLAGS = -XDinvokedynamic
include $(BUILDDIR)/common/Classes.gmk include $(BUILDDIR)/common/Classes.gmk
/*
* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package java.dyn;
/**
* This is a place-holder class. Some HotSpot implementations need to see it.
*/
final class InvokeDynamic {
private InvokeDynamic() { throw new InternalError(); } // do not instantiate
}
...@@ -164,7 +164,7 @@ MethodHandles.Lookup lookup = MethodHandles.lookup(); ...@@ -164,7 +164,7 @@ MethodHandles.Lookup lookup = MethodHandles.lookup();
mt = MethodType.methodType(String.class, char.class, char.class); mt = MethodType.methodType(String.class, char.class, char.class);
mh = lookup.findVirtual(String.class, "replace", mt); mh = lookup.findVirtual(String.class, "replace", mt);
// (Ljava/lang/String;CC)Ljava/lang/String; // (Ljava/lang/String;CC)Ljava/lang/String;
s = mh.<String>invokeExact("daddy",'d','n'); s = (String) mh.invokeExact("daddy",'d','n');
assert(s.equals("nanny")); assert(s.equals("nanny"));
// weakly typed invocation (using MHs.invoke) // weakly typed invocation (using MHs.invoke)
s = (String) mh.invokeWithArguments("sappy", 'p', 'v'); s = (String) mh.invokeWithArguments("sappy", 'p', 'v');
...@@ -183,7 +183,7 @@ assert(x.equals(java.util.Arrays.asList(1,2,3))); ...@@ -183,7 +183,7 @@ assert(x.equals(java.util.Arrays.asList(1,2,3)));
mt = MethodType.methodType(int.class); mt = MethodType.methodType(int.class);
mh = lookup.findVirtual(java.util.List.class, "size", mt); mh = lookup.findVirtual(java.util.List.class, "size", mt);
// (Ljava/util/List;)I // (Ljava/util/List;)I
i = mh.<int>invokeExact(java.util.Arrays.asList(1,2,3)); i = (int) mh.invokeExact(java.util.Arrays.asList(1,2,3));
assert(i == 3); assert(i == 3);
* </pre></blockquote> * </pre></blockquote>
* Each of the above calls generates a single invokevirtual instruction * Each of the above calls generates a single invokevirtual instruction
...@@ -298,7 +298,7 @@ public abstract class MethodHandle ...@@ -298,7 +298,7 @@ public abstract class MethodHandle
* @throws WrongMethodTypeException if the target's type is not identical with the caller's type signature * @throws WrongMethodTypeException if the target's type is not identical with the caller's type signature
* @throws Throwable anything thrown by the underlying method propagates unchanged through the method handle call * @throws Throwable anything thrown by the underlying method propagates unchanged through the method handle call
*/ */
public final native @PolymorphicSignature <R,A> R invokeExact(A... args) throws Throwable; public final native @PolymorphicSignature Object invokeExact(Object... args) throws Throwable;
/** /**
* Invoke the method handle, allowing any caller signature, * Invoke the method handle, allowing any caller signature,
...@@ -327,7 +327,7 @@ public abstract class MethodHandle ...@@ -327,7 +327,7 @@ public abstract class MethodHandle
* @throws WrongMethodTypeException if the target's type cannot be adjusted to the caller's type signature * @throws WrongMethodTypeException if the target's type cannot be adjusted to the caller's type signature
* @throws Throwable anything thrown by the underlying method propagates unchanged through the method handle call * @throws Throwable anything thrown by the underlying method propagates unchanged through the method handle call
*/ */
public final native @PolymorphicSignature <R,A> R invokeGeneric(A... args) throws Throwable; public final native @PolymorphicSignature Object invokeGeneric(Object... args) throws Throwable;
/** /**
* Perform a varargs invocation, passing the arguments in the given array * Perform a varargs invocation, passing the arguments in the given array
......
...@@ -496,7 +496,7 @@ public class AdapterMethodHandle extends BoundMethodHandle { ...@@ -496,7 +496,7 @@ public class AdapterMethodHandle extends BoundMethodHandle {
if (this.type() == newType) if (this.type() == newType)
return this; return this;
try { try {
MethodHandle retyped = (MethodHandle) typeHandler.<MethodHandle>invokeExact(target, newType); MethodHandle retyped = (MethodHandle) typeHandler.invokeExact(target, newType);
// Contract: Must return the desired type, or throw WMT // Contract: Must return the desired type, or throw WMT
if (retyped.type() != newType) if (retyped.type() != newType)
throw new WrongMethodTypeException(retyped.toString()); throw new WrongMethodTypeException(retyped.toString());
......
...@@ -78,7 +78,7 @@ public class CallSiteImpl { ...@@ -78,7 +78,7 @@ public class CallSiteImpl {
} else { } else {
throw new ClassCastException("bootstrap method failed to produce a MethodHandle or CallSite"); throw new ClassCastException("bootstrap method failed to produce a MethodHandle or CallSite");
} }
PRIVATE_INITIALIZE_CALL_SITE.<void>invokeExact(site, name, type, PRIVATE_INITIALIZE_CALL_SITE.invokeExact(site, name, type,
callerMethod, callerBCI); callerMethod, callerBCI);
assert(site.getTarget() != null); assert(site.getTarget() != null);
assert(site.getTarget().type().equals(type)); assert(site.getTarget().type().equals(type));
......
...@@ -303,7 +303,7 @@ class FilterGeneric { ...@@ -303,7 +303,7 @@ class FilterGeneric {
protected Object invoke_C0(Object a0) { return target.invokeExact(filter.invokeExact(a0)); } protected Object invoke_C0(Object a0) { return target.invokeExact(filter.invokeExact(a0)); }
protected Object invoke_C1(Object a0) { return target.invokeExact(a0, filter.invokeExact()); } protected Object invoke_C1(Object a0) { return target.invokeExact(a0, filter.invokeExact()); }
protected Object invoke_Y0(Object a0) { Object[] av = { a0 }; protected Object invoke_Y0(Object a0) { Object[] av = { a0 };
filter.<void>invokeExact(av); return target.invokeExact(av[0]); } filter.invokeExact(av); return target.invokeExact(av[0]); }
} }
static class F2X extends Adapter { static class F2X extends Adapter {
protected F2X(MethodHandle entryPoint) { super(entryPoint); } // to build prototype protected F2X(MethodHandle entryPoint) { super(entryPoint); } // to build prototype
...@@ -320,7 +320,7 @@ class FilterGeneric { ...@@ -320,7 +320,7 @@ class FilterGeneric {
protected Object invoke_C1(Object a0, Object a1) { return target.invokeExact(a0, filter.invokeExact(a1)); } protected Object invoke_C1(Object a0, Object a1) { return target.invokeExact(a0, filter.invokeExact(a1)); }
protected Object invoke_C2(Object a0, Object a1) { return target.invokeExact(a0, a1, filter.invokeExact()); } protected Object invoke_C2(Object a0, Object a1) { return target.invokeExact(a0, a1, filter.invokeExact()); }
protected Object invoke_Y0(Object a0, Object a1) { Object[] av = { a0, a1 }; protected Object invoke_Y0(Object a0, Object a1) { Object[] av = { a0, a1 };
filter.<void>invokeExact(av); return target.invokeExact(av[0], av[1]); } filter.invokeExact(av); return target.invokeExact(av[0], av[1]); }
} }
// */ // */
...@@ -337,7 +337,7 @@ class FilterGeneric { ...@@ -337,7 +337,7 @@ class FilterGeneric {
return target.invokeExact(filter.invokeExact()); } return target.invokeExact(filter.invokeExact()); }
static final Object[] NO_ARGS = { }; static final Object[] NO_ARGS = { };
protected Object invoke_Y0() throws Throwable { protected Object invoke_Y0() throws Throwable {
filter.<void>invokeExact(NO_ARGS); // make the flyby filter.invokeExact(NO_ARGS); // make the flyby
return target.invokeExact(); } return target.invokeExact(); }
} }
...@@ -375,7 +375,7 @@ class genclasses { ...@@ -375,7 +375,7 @@ class genclasses {
" return target.invokeExact(@av@, filter.invokeExact()); }", " return target.invokeExact(@av@, filter.invokeExact()); }",
" protected Object invoke_Y0(@Tvav@) throws Throwable {", " protected Object invoke_Y0(@Tvav@) throws Throwable {",
" Object[] av = { @av@ };", " Object[] av = { @av@ };",
" filter.<void>invokeExact(av); // make the flyby", " filter.invokeExact(av); // make the flyby",
" return target.invokeExact(@av[i]@); }", " return target.invokeExact(@av[i]@); }",
" }", " }",
} }; } };
...@@ -518,7 +518,7 @@ class genclasses { ...@@ -518,7 +518,7 @@ class genclasses {
return target.invokeExact(a0, filter.invokeExact()); } return target.invokeExact(a0, filter.invokeExact()); }
protected Object invoke_Y0(Object a0) throws Throwable { protected Object invoke_Y0(Object a0) throws Throwable {
Object[] av = { a0 }; Object[] av = { a0 };
filter.<void>invokeExact(av); // make the flyby filter.invokeExact(av); // make the flyby
return target.invokeExact(av[0]); } return target.invokeExact(av[0]); }
} }
static class F2 extends Adapter { static class F2 extends Adapter {
...@@ -548,7 +548,7 @@ class genclasses { ...@@ -548,7 +548,7 @@ class genclasses {
return target.invokeExact(a0, a1, filter.invokeExact()); } return target.invokeExact(a0, a1, filter.invokeExact()); }
protected Object invoke_Y0(Object a0, Object a1) throws Throwable { protected Object invoke_Y0(Object a0, Object a1) throws Throwable {
Object[] av = { a0, a1 }; Object[] av = { a0, a1 };
filter.<void>invokeExact(av); // make the flyby filter.invokeExact(av); // make the flyby
return target.invokeExact(av[0], av[1]); } return target.invokeExact(av[0], av[1]); }
} }
static class F3 extends Adapter { static class F3 extends Adapter {
...@@ -585,7 +585,7 @@ class genclasses { ...@@ -585,7 +585,7 @@ class genclasses {
return target.invokeExact(a0, a1, a2, filter.invokeExact()); } return target.invokeExact(a0, a1, a2, filter.invokeExact()); }
protected Object invoke_Y0(Object a0, Object a1, Object a2) throws Throwable { protected Object invoke_Y0(Object a0, Object a1, Object a2) throws Throwable {
Object[] av = { a0, a1, a2 }; Object[] av = { a0, a1, a2 };
filter.<void>invokeExact(av); // make the flyby filter.invokeExact(av); // make the flyby
return target.invokeExact(av[0], av[1], av[2]); } return target.invokeExact(av[0], av[1], av[2]); }
} }
static class F4 extends Adapter { static class F4 extends Adapter {
...@@ -629,7 +629,7 @@ class genclasses { ...@@ -629,7 +629,7 @@ class genclasses {
return target.invokeExact(a0, a1, a2, a3, filter.invokeExact()); } return target.invokeExact(a0, a1, a2, a3, filter.invokeExact()); }
protected Object invoke_Y0(Object a0, Object a1, Object a2, Object a3) throws Throwable { protected Object invoke_Y0(Object a0, Object a1, Object a2, Object a3) throws Throwable {
Object[] av = { a0, a1, a2, a3 }; Object[] av = { a0, a1, a2, a3 };
filter.<void>invokeExact(av); // make the flyby filter.invokeExact(av); // make the flyby
return target.invokeExact(av[0], av[1], av[2], av[3]); } return target.invokeExact(av[0], av[1], av[2], av[3]); }
} }
static class F5 extends Adapter { static class F5 extends Adapter {
...@@ -698,7 +698,7 @@ class genclasses { ...@@ -698,7 +698,7 @@ class genclasses {
protected Object invoke_Y0(Object a0, Object a1, Object a2, Object a3, protected Object invoke_Y0(Object a0, Object a1, Object a2, Object a3,
Object a4) throws Throwable { Object a4) throws Throwable {
Object[] av = { a0, a1, a2, a3, a4 }; Object[] av = { a0, a1, a2, a3, a4 };
filter.<void>invokeExact(av); // make the flyby filter.invokeExact(av); // make the flyby
return target.invokeExact(av[0], av[1], av[2], av[3], av[4]); } return target.invokeExact(av[0], av[1], av[2], av[3], av[4]); }
} }
static class F6 extends Adapter { static class F6 extends Adapter {
...@@ -777,7 +777,7 @@ class genclasses { ...@@ -777,7 +777,7 @@ class genclasses {
protected Object invoke_Y0(Object a0, Object a1, Object a2, Object a3, protected Object invoke_Y0(Object a0, Object a1, Object a2, Object a3,
Object a4, Object a5) throws Throwable { Object a4, Object a5) throws Throwable {
Object[] av = { a0, a1, a2, a3, a4, a5 }; Object[] av = { a0, a1, a2, a3, a4, a5 };
filter.<void>invokeExact(av); // make the flyby filter.invokeExact(av); // make the flyby
return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5]); } return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5]); }
} }
static class F7 extends Adapter { static class F7 extends Adapter {
...@@ -866,7 +866,7 @@ class genclasses { ...@@ -866,7 +866,7 @@ class genclasses {
protected Object invoke_Y0(Object a0, Object a1, Object a2, Object a3, protected Object invoke_Y0(Object a0, Object a1, Object a2, Object a3,
Object a4, Object a5, Object a6) throws Throwable { Object a4, Object a5, Object a6) throws Throwable {
Object[] av = { a0, a1, a2, a3, a4, a5, a6 }; Object[] av = { a0, a1, a2, a3, a4, a5, a6 };
filter.<void>invokeExact(av); // make the flyby filter.invokeExact(av); // make the flyby
return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6]); } return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6]); }
} }
static class F8 extends Adapter { static class F8 extends Adapter {
...@@ -965,7 +965,7 @@ class genclasses { ...@@ -965,7 +965,7 @@ class genclasses {
protected Object invoke_Y0(Object a0, Object a1, Object a2, Object a3, protected Object invoke_Y0(Object a0, Object a1, Object a2, Object a3,
Object a4, Object a5, Object a6, Object a7) throws Throwable { Object a4, Object a5, Object a6, Object a7) throws Throwable {
Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7 }; Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7 };
filter.<void>invokeExact(av); // make the flyby filter.invokeExact(av); // make the flyby
return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7]); } return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7]); }
} }
static class F9 extends Adapter { static class F9 extends Adapter {
...@@ -1104,7 +1104,7 @@ class genclasses { ...@@ -1104,7 +1104,7 @@ class genclasses {
Object a4, Object a5, Object a6, Object a7, Object a4, Object a5, Object a6, Object a7,
Object a8) throws Throwable { Object a8) throws Throwable {
Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7, a8 }; Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7, a8 };
filter.<void>invokeExact(av); // make the flyby filter.invokeExact(av); // make the flyby
return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7], av[8]); } return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7], av[8]); }
} }
static class F10 extends Adapter { static class F10 extends Adapter {
...@@ -1256,7 +1256,7 @@ class genclasses { ...@@ -1256,7 +1256,7 @@ class genclasses {
Object a4, Object a5, Object a6, Object a7, Object a4, Object a5, Object a6, Object a7,
Object a8, Object a9) throws Throwable { Object a8, Object a9) throws Throwable {
Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7, a8, a9 }; Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7, a8, a9 };
filter.<void>invokeExact(av); // make the flyby filter.invokeExact(av); // make the flyby
return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7], av[8], av[9]); } return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7], av[8], av[9]); }
} }
static class F11 extends Adapter { static class F11 extends Adapter {
...@@ -1442,7 +1442,7 @@ class genclasses { ...@@ -1442,7 +1442,7 @@ class genclasses {
Object a4, Object a5, Object a6, Object a7, Object a4, Object a5, Object a6, Object a7,
Object a8, Object a9, Object a10) throws Throwable { Object a8, Object a9, Object a10) throws Throwable {
Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 }; Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 };
filter.<void>invokeExact(av); // make the flyby filter.invokeExact(av); // make the flyby
return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7], av[8], av[9], av[10]); } return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7], av[8], av[9], av[10]); }
} }
static class F12 extends Adapter { static class F12 extends Adapter {
...@@ -1644,7 +1644,7 @@ class genclasses { ...@@ -1644,7 +1644,7 @@ class genclasses {
Object a4, Object a5, Object a6, Object a7, Object a4, Object a5, Object a6, Object a7,
Object a8, Object a9, Object a10, Object a11) throws Throwable { Object a8, Object a9, Object a10, Object a11) throws Throwable {
Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11 }; Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11 };
filter.<void>invokeExact(av); // make the flyby filter.invokeExact(av); // make the flyby
return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7], av[8], av[9], av[10], av[11]); } return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7], av[8], av[9], av[10], av[11]); }
} }
static class F13 extends Adapter { static class F13 extends Adapter {
...@@ -1904,7 +1904,7 @@ class genclasses { ...@@ -1904,7 +1904,7 @@ class genclasses {
Object a8, Object a9, Object a10, Object a11, Object a8, Object a9, Object a10, Object a11,
Object a12) throws Throwable { Object a12) throws Throwable {
Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 }; Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 };
filter.<void>invokeExact(av); // make the flyby filter.invokeExact(av); // make the flyby
return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7], av[8], av[9], av[10], av[11], av[12]); } return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7], av[8], av[9], av[10], av[11], av[12]); }
} }
static class F14 extends Adapter { static class F14 extends Adapter {
...@@ -2183,7 +2183,7 @@ class genclasses { ...@@ -2183,7 +2183,7 @@ class genclasses {
Object a8, Object a9, Object a10, Object a11, Object a8, Object a9, Object a10, Object a11,
Object a12, Object a13) throws Throwable { Object a12, Object a13) throws Throwable {
Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 }; Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 };
filter.<void>invokeExact(av); // make the flyby filter.invokeExact(av); // make the flyby
return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7], av[8], av[9], av[10], av[11], av[12], av[13]); } return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7], av[8], av[9], av[10], av[11], av[12], av[13]); }
} }
static class F15 extends Adapter { static class F15 extends Adapter {
...@@ -2481,7 +2481,7 @@ class genclasses { ...@@ -2481,7 +2481,7 @@ class genclasses {
Object a8, Object a9, Object a10, Object a11, Object a8, Object a9, Object a10, Object a11,
Object a12, Object a13, Object a14) throws Throwable { Object a12, Object a13, Object a14) throws Throwable {
Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 }; Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 };
filter.<void>invokeExact(av); // make the flyby filter.invokeExact(av); // make the flyby
return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7], av[8], av[9], av[10], av[11], av[12], av[13], av[14]); } return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7], av[8], av[9], av[10], av[11], av[12], av[13], av[14]); }
} }
static class F16 extends Adapter { static class F16 extends Adapter {
...@@ -2798,7 +2798,7 @@ class genclasses { ...@@ -2798,7 +2798,7 @@ class genclasses {
Object a8, Object a9, Object a10, Object a11, Object a8, Object a9, Object a10, Object a11,
Object a12, Object a13, Object a14, Object a15) throws Throwable { Object a12, Object a13, Object a14, Object a15) throws Throwable {
Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 }; Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 };
filter.<void>invokeExact(av); // make the flyby filter.invokeExact(av); // make the flyby
return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7], av[8], av[9], av[10], av[11], av[12], av[13], av[14], av[15]); } return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7], av[8], av[9], av[10], av[11], av[12], av[13], av[14], av[15]); }
} }
static class F17 extends Adapter { static class F17 extends Adapter {
...@@ -3188,7 +3188,7 @@ class genclasses { ...@@ -3188,7 +3188,7 @@ class genclasses {
Object a12, Object a13, Object a14, Object a15, Object a12, Object a13, Object a14, Object a15,
Object a16) throws Throwable { Object a16) throws Throwable {
Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 }; Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 };
filter.<void>invokeExact(av); // make the flyby filter.invokeExact(av); // make the flyby
return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7], av[8], av[9], av[10], av[11], av[12], av[13], av[14], av[15], av[16]); } return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7], av[8], av[9], av[10], av[11], av[12], av[13], av[14], av[15], av[16]); }
} }
static class F18 extends Adapter { static class F18 extends Adapter {
...@@ -3600,7 +3600,7 @@ class genclasses { ...@@ -3600,7 +3600,7 @@ class genclasses {
Object a12, Object a13, Object a14, Object a15, Object a12, Object a13, Object a14, Object a15,
Object a16, Object a17) throws Throwable { Object a16, Object a17) throws Throwable {
Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17 }; Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17 };
filter.<void>invokeExact(av); // make the flyby filter.invokeExact(av); // make the flyby
return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7], av[8], av[9], av[10], av[11], av[12], av[13], av[14], av[15], av[16], av[17]); } return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7], av[8], av[9], av[10], av[11], av[12], av[13], av[14], av[15], av[16], av[17]); }
} }
static class F19 extends Adapter { static class F19 extends Adapter {
...@@ -4034,7 +4034,7 @@ class genclasses { ...@@ -4034,7 +4034,7 @@ class genclasses {
Object a12, Object a13, Object a14, Object a15, Object a12, Object a13, Object a14, Object a15,
Object a16, Object a17, Object a18) throws Throwable { Object a16, Object a17, Object a18) throws Throwable {
Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18 }; Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18 };
filter.<void>invokeExact(av); // make the flyby filter.invokeExact(av); // make the flyby
return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7], av[8], av[9], av[10], av[11], av[12], av[13], av[14], av[15], av[16], av[17], av[18]); } return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7], av[8], av[9], av[10], av[11], av[12], av[13], av[14], av[15], av[16], av[17], av[18]); }
} }
static class F20 extends Adapter { static class F20 extends Adapter {
...@@ -4490,7 +4490,7 @@ class genclasses { ...@@ -4490,7 +4490,7 @@ class genclasses {
Object a12, Object a13, Object a14, Object a15, Object a12, Object a13, Object a14, Object a15,
Object a16, Object a17, Object a18, Object a19) throws Throwable { Object a16, Object a17, Object a18, Object a19) throws Throwable {
Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19 }; Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19 };
filter.<void>invokeExact(av); // make the flyby filter.invokeExact(av); // make the flyby
return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7], av[8], av[9], av[10], av[11], av[12], av[13], av[14], av[15], av[16], av[17], av[18], av[19]); } return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7], av[8], av[9], av[10], av[11], av[12], av[13], av[14], av[15], av[16], av[17], av[18], av[19]); }
} }
} }
...@@ -245,52 +245,52 @@ public abstract class MethodHandleImpl { ...@@ -245,52 +245,52 @@ public abstract class MethodHandleImpl {
} }
private C invoke_V(Object... av) throws Throwable { private C invoke_V(Object... av) throws Throwable {
C obj = allocate(); C obj = allocate();
rawConstructor.<void>invokeExact((Object)obj, av); rawConstructor.invokeExact((Object)obj, av);
return obj; return obj;
} }
private C invoke_L0() throws Throwable { private C invoke_L0() throws Throwable {
C obj = allocate(); C obj = allocate();
rawConstructor.<void>invokeExact((Object)obj); rawConstructor.invokeExact((Object)obj);
return obj; return obj;
} }
private C invoke_L1(Object a0) throws Throwable { private C invoke_L1(Object a0) throws Throwable {
C obj = allocate(); C obj = allocate();
rawConstructor.<void>invokeExact((Object)obj, a0); rawConstructor.invokeExact((Object)obj, a0);
return obj; return obj;
} }
private C invoke_L2(Object a0, Object a1) throws Throwable { private C invoke_L2(Object a0, Object a1) throws Throwable {
C obj = allocate(); C obj = allocate();
rawConstructor.<void>invokeExact((Object)obj, a0, a1); rawConstructor.invokeExact((Object)obj, a0, a1);
return obj; return obj;
} }
private C invoke_L3(Object a0, Object a1, Object a2) throws Throwable { private C invoke_L3(Object a0, Object a1, Object a2) throws Throwable {
C obj = allocate(); C obj = allocate();
rawConstructor.<void>invokeExact((Object)obj, a0, a1, a2); rawConstructor.invokeExact((Object)obj, a0, a1, a2);
return obj; return obj;
} }
private C invoke_L4(Object a0, Object a1, Object a2, Object a3) throws Throwable { private C invoke_L4(Object a0, Object a1, Object a2, Object a3) throws Throwable {
C obj = allocate(); C obj = allocate();
rawConstructor.<void>invokeExact((Object)obj, a0, a1, a2, a3); rawConstructor.invokeExact((Object)obj, a0, a1, a2, a3);
return obj; return obj;
} }
private C invoke_L5(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { private C invoke_L5(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable {
C obj = allocate(); C obj = allocate();
rawConstructor.<void>invokeExact((Object)obj, a0, a1, a2, a3, a4); rawConstructor.invokeExact((Object)obj, a0, a1, a2, a3, a4);
return obj; return obj;
} }
private C invoke_L6(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { private C invoke_L6(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable {
C obj = allocate(); C obj = allocate();
rawConstructor.<void>invokeExact((Object)obj, a0, a1, a2, a3, a4, a5); rawConstructor.invokeExact((Object)obj, a0, a1, a2, a3, a4, a5);
return obj; return obj;
} }
private C invoke_L7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { private C invoke_L7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable {
C obj = allocate(); C obj = allocate();
rawConstructor.<void>invokeExact((Object)obj, a0, a1, a2, a3, a4, a5, a6); rawConstructor.invokeExact((Object)obj, a0, a1, a2, a3, a4, a5, a6);
return obj; return obj;
} }
private C invoke_L8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { private C invoke_L8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable {
C obj = allocate(); C obj = allocate();
rawConstructor.<void>invokeExact((Object)obj, a0, a1, a2, a3, a4, a5, a6, a7); rawConstructor.invokeExact((Object)obj, a0, a1, a2, a3, a4, a5, a6, a7);
return obj; return obj;
} }
static MethodHandle[] makeInvokes() { static MethodHandle[] makeInvokes() {
...@@ -951,54 +951,54 @@ public abstract class MethodHandleImpl { ...@@ -951,54 +951,54 @@ public abstract class MethodHandleImpl {
return addTypeString(target, this); return addTypeString(target, this);
} }
private Object invoke_V(Object... av) throws Throwable { private Object invoke_V(Object... av) throws Throwable {
if (test.<boolean>invokeExact(av)) if ((boolean) test.invokeExact(av))
return target.<Object>invokeExact(av); return target.invokeExact(av);
return fallback.<Object>invokeExact(av); return fallback.invokeExact(av);
} }
private Object invoke_L0() throws Throwable { private Object invoke_L0() throws Throwable {
if (test.<boolean>invokeExact()) if ((boolean) test.invokeExact())
return target.<Object>invokeExact(); return target.invokeExact();
return fallback.<Object>invokeExact(); return fallback.invokeExact();
} }
private Object invoke_L1(Object a0) throws Throwable { private Object invoke_L1(Object a0) throws Throwable {
if (test.<boolean>invokeExact(a0)) if ((boolean) test.invokeExact(a0))
return target.<Object>invokeExact(a0); return target.invokeExact(a0);
return fallback.<Object>invokeExact(a0); return fallback.invokeExact(a0);
} }
private Object invoke_L2(Object a0, Object a1) throws Throwable { private Object invoke_L2(Object a0, Object a1) throws Throwable {
if (test.<boolean>invokeExact(a0, a1)) if ((boolean) test.invokeExact(a0, a1))
return target.<Object>invokeExact(a0, a1); return target.invokeExact(a0, a1);
return fallback.<Object>invokeExact(a0, a1); return fallback.invokeExact(a0, a1);
} }
private Object invoke_L3(Object a0, Object a1, Object a2) throws Throwable { private Object invoke_L3(Object a0, Object a1, Object a2) throws Throwable {
if (test.<boolean>invokeExact(a0, a1, a2)) if ((boolean) test.invokeExact(a0, a1, a2))
return target.<Object>invokeExact(a0, a1, a2); return target.invokeExact(a0, a1, a2);
return fallback.<Object>invokeExact(a0, a1, a2); return fallback.invokeExact(a0, a1, a2);
} }
private Object invoke_L4(Object a0, Object a1, Object a2, Object a3) throws Throwable { private Object invoke_L4(Object a0, Object a1, Object a2, Object a3) throws Throwable {
if (test.<boolean>invokeExact(a0, a1, a2, a3)) if ((boolean) test.invokeExact(a0, a1, a2, a3))
return target.<Object>invokeExact(a0, a1, a2, a3); return target.invokeExact(a0, a1, a2, a3);
return fallback.<Object>invokeExact(a0, a1, a2, a3); return fallback.invokeExact(a0, a1, a2, a3);
} }
private Object invoke_L5(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { private Object invoke_L5(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable {
if (test.<boolean>invokeExact(a0, a1, a2, a3, a4)) if ((boolean) test.invokeExact(a0, a1, a2, a3, a4))
return target.<Object>invokeExact(a0, a1, a2, a3, a4); return target.invokeExact(a0, a1, a2, a3, a4);
return fallback.<Object>invokeExact(a0, a1, a2, a3, a4); return fallback.invokeExact(a0, a1, a2, a3, a4);
} }
private Object invoke_L6(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { private Object invoke_L6(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable {
if (test.<boolean>invokeExact(a0, a1, a2, a3, a4, a5)) if ((boolean) test.invokeExact(a0, a1, a2, a3, a4, a5))
return target.<Object>invokeExact(a0, a1, a2, a3, a4, a5); return target.invokeExact(a0, a1, a2, a3, a4, a5);
return fallback.<Object>invokeExact(a0, a1, a2, a3, a4, a5); return fallback.invokeExact(a0, a1, a2, a3, a4, a5);
} }
private Object invoke_L7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { private Object invoke_L7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable {
if (test.<boolean>invokeExact(a0, a1, a2, a3, a4, a5, a6)) if ((boolean) test.invokeExact(a0, a1, a2, a3, a4, a5, a6))
return target.<Object>invokeExact(a0, a1, a2, a3, a4, a5, a6); return target.invokeExact(a0, a1, a2, a3, a4, a5, a6);
return fallback.<Object>invokeExact(a0, a1, a2, a3, a4, a5, a6); return fallback.invokeExact(a0, a1, a2, a3, a4, a5, a6);
} }
private Object invoke_L8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { private Object invoke_L8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable {
if (test.<boolean>invokeExact(a0, a1, a2, a3, a4, a5, a6, a7)) if ((boolean) test.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7))
return target.<Object>invokeExact(a0, a1, a2, a3, a4, a5, a6, a7); return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7);
return fallback.<Object>invokeExact(a0, a1, a2, a3, a4, a5, a6, a7); return fallback.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7);
} }
static MethodHandle[] makeInvokes() { static MethodHandle[] makeInvokes() {
ArrayList<MethodHandle> invokes = new ArrayList<MethodHandle>(); ArrayList<MethodHandle> invokes = new ArrayList<MethodHandle>();
...@@ -1058,82 +1058,82 @@ public abstract class MethodHandleImpl { ...@@ -1058,82 +1058,82 @@ public abstract class MethodHandleImpl {
} }
private Object invoke_V(Object... av) throws Throwable { private Object invoke_V(Object... av) throws Throwable {
try { try {
return target.<Object>invokeExact(av); return target.invokeExact(av);
} catch (Throwable t) { } catch (Throwable t) {
if (!exType.isInstance(t)) throw t; if (!exType.isInstance(t)) throw t;
return catcher.<Object>invokeExact(t, av); return catcher.invokeExact(t, av);
} }
} }
private Object invoke_L0() throws Throwable { private Object invoke_L0() throws Throwable {
try { try {
return target.<Object>invokeExact(); return target.invokeExact();
} catch (Throwable t) { } catch (Throwable t) {
if (!exType.isInstance(t)) throw t; if (!exType.isInstance(t)) throw t;
return catcher.<Object>invokeExact(t); return catcher.invokeExact(t);
} }
} }
private Object invoke_L1(Object a0) throws Throwable { private Object invoke_L1(Object a0) throws Throwable {
try { try {
return target.<Object>invokeExact(a0); return target.invokeExact(a0);
} catch (Throwable t) { } catch (Throwable t) {
if (!exType.isInstance(t)) throw t; if (!exType.isInstance(t)) throw t;
return catcher.<Object>invokeExact(t, a0); return catcher.invokeExact(t, a0);
} }
} }
private Object invoke_L2(Object a0, Object a1) throws Throwable { private Object invoke_L2(Object a0, Object a1) throws Throwable {
try { try {
return target.<Object>invokeExact(a0, a1); return target.invokeExact(a0, a1);
} catch (Throwable t) { } catch (Throwable t) {
if (!exType.isInstance(t)) throw t; if (!exType.isInstance(t)) throw t;
return catcher.<Object>invokeExact(t, a0, a1); return catcher.invokeExact(t, a0, a1);
} }
} }
private Object invoke_L3(Object a0, Object a1, Object a2) throws Throwable { private Object invoke_L3(Object a0, Object a1, Object a2) throws Throwable {
try { try {
return target.<Object>invokeExact(a0, a1, a2); return target.invokeExact(a0, a1, a2);
} catch (Throwable t) { } catch (Throwable t) {
if (!exType.isInstance(t)) throw t; if (!exType.isInstance(t)) throw t;
return catcher.<Object>invokeExact(t, a0, a1, a2); return catcher.invokeExact(t, a0, a1, a2);
} }
} }
private Object invoke_L4(Object a0, Object a1, Object a2, Object a3) throws Throwable { private Object invoke_L4(Object a0, Object a1, Object a2, Object a3) throws Throwable {
try { try {
return target.<Object>invokeExact(a0, a1, a2, a3); return target.invokeExact(a0, a1, a2, a3);
} catch (Throwable t) { } catch (Throwable t) {
if (!exType.isInstance(t)) throw t; if (!exType.isInstance(t)) throw t;
return catcher.<Object>invokeExact(t, a0, a1, a2, a3); return catcher.invokeExact(t, a0, a1, a2, a3);
} }
} }
private Object invoke_L5(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { private Object invoke_L5(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable {
try { try {
return target.<Object>invokeExact(a0, a1, a2, a3, a4); return target.invokeExact(a0, a1, a2, a3, a4);
} catch (Throwable t) { } catch (Throwable t) {
if (!exType.isInstance(t)) throw t; if (!exType.isInstance(t)) throw t;
return catcher.<Object>invokeExact(t, a0, a1, a2, a3, a4); return catcher.invokeExact(t, a0, a1, a2, a3, a4);
} }
} }
private Object invoke_L6(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { private Object invoke_L6(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable {
try { try {
return target.<Object>invokeExact(a0, a1, a2, a3, a4, a5); return target.invokeExact(a0, a1, a2, a3, a4, a5);
} catch (Throwable t) { } catch (Throwable t) {
if (!exType.isInstance(t)) throw t; if (!exType.isInstance(t)) throw t;
return catcher.<Object>invokeExact(t, a0, a1, a2, a3, a4, a5); return catcher.invokeExact(t, a0, a1, a2, a3, a4, a5);
} }
} }
private Object invoke_L7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { private Object invoke_L7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable {
try { try {
return target.<Object>invokeExact(a0, a1, a2, a3, a4, a5, a6); return target.invokeExact(a0, a1, a2, a3, a4, a5, a6);
} catch (Throwable t) { } catch (Throwable t) {
if (!exType.isInstance(t)) throw t; if (!exType.isInstance(t)) throw t;
return catcher.<Object>invokeExact(t, a0, a1, a2, a3, a4, a5, a6); return catcher.invokeExact(t, a0, a1, a2, a3, a4, a5, a6);
} }
} }
private Object invoke_L8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { private Object invoke_L8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable {
try { try {
return target.<Object>invokeExact(a0, a1, a2, a3, a4, a5, a6, a7); return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7);
} catch (Throwable t) { } catch (Throwable t) {
if (!exType.isInstance(t)) throw t; if (!exType.isInstance(t)) throw t;
return catcher.<Object>invokeExact(t, a0, a1, a2, a3, a4, a5, a6, a7); return catcher.invokeExact(t, a0, a1, a2, a3, a4, a5, a6, a7);
} }
} }
static MethodHandle[] makeInvokes() { static MethodHandle[] makeInvokes() {
......
...@@ -367,33 +367,33 @@ class ToGeneric { ...@@ -367,33 +367,33 @@ class ToGeneric {
// { return new ThisType(entryPoint, convert, target); } // { return new ThisType(entryPoint, convert, target); }
// Code to run when the arguments (<= 4) have all been boxed. // Code to run when the arguments (<= 4) have all been boxed.
protected Object target() throws Throwable { return invoker.<Object>invokeExact(target); } protected Object target() throws Throwable { return invoker.invokeExact(target); }
protected Object target(Object a0) throws Throwable { return invoker.<Object>invokeExact(target, a0); } protected Object target(Object a0) throws Throwable { return invoker.invokeExact(target, a0); }
protected Object target(Object a0, Object a1) protected Object target(Object a0, Object a1)
throws Throwable { return invoker.<Object>invokeExact(target, a0, a1); } throws Throwable { return invoker.invokeExact(target, a0, a1); }
protected Object target(Object a0, Object a1, Object a2) protected Object target(Object a0, Object a1, Object a2)
throws Throwable { return invoker.<Object>invokeExact(target, a0, a1, a2); } throws Throwable { return invoker.invokeExact(target, a0, a1, a2); }
protected Object target(Object a0, Object a1, Object a2, Object a3) protected Object target(Object a0, Object a1, Object a2, Object a3)
throws Throwable { return invoker.<Object>invokeExact(target, a0, a1, a2, a3); } throws Throwable { return invoker.invokeExact(target, a0, a1, a2, a3); }
/* /*
protected Object target_0(Object... av) throws Throwable { return invoker.<Object>invokeExact(target, av); } protected Object target_0(Object... av) throws Throwable { return invoker.invokeExact(target, av); }
protected Object target_1(Object a0, Object... av) protected Object target_1(Object a0, Object... av)
throws Throwable { return invoker.<Object>invokeExact(target, a0, (Object)av); } throws Throwable { return invoker.invokeExact(target, a0, (Object)av); }
protected Object target_2(Object a0, Object a1, Object... av) protected Object target_2(Object a0, Object a1, Object... av)
throws Throwable { return invoker.<Object>invokeExact(target, a0, a1, (Object)av); } throws Throwable { return invoker.invokeExact(target, a0, a1, (Object)av); }
protected Object target_3(Object a0, Object a1, Object a2, Object... av) protected Object target_3(Object a0, Object a1, Object a2, Object... av)
throws Throwable { return invoker.<Object>invokeExact(target, a0, a1, a2, (Object)av); } throws Throwable { return invoker.invokeExact(target, a0, a1, a2, (Object)av); }
protected Object target_4(Object a0, Object a1, Object a2, Object a3, Object... av) protected Object target_4(Object a0, Object a1, Object a2, Object a3, Object... av)
throws Throwable { return invoker.<Object>invokeExact(target, a0, a1, a2, a3, (Object)av); } throws Throwable { return invoker.invokeExact(target, a0, a1, a2, a3, (Object)av); }
// */ // */
// (For more than 4 arguments, generate the code in the adapter itself.) // (For more than 4 arguments, generate the code in the adapter itself.)
// Code to run when the generic target has finished and produced a value. // Code to run when the generic target has finished and produced a value.
protected Object return_L(Object res) throws Throwable { return convert.<Object>invokeExact(res); } protected Object return_L(Object res) throws Throwable { return (Object)convert.invokeExact(res); }
protected int return_I(Object res) throws Throwable { return convert.<int >invokeExact(res); } protected int return_I(Object res) throws Throwable { return (int) convert.invokeExact(res); }
protected long return_J(Object res) throws Throwable { return convert.<long >invokeExact(res); } protected long return_J(Object res) throws Throwable { return (long) convert.invokeExact(res); }
protected float return_F(Object res) throws Throwable { return convert.<float >invokeExact(res); } protected float return_F(Object res) throws Throwable { return (float) convert.invokeExact(res); }
protected double return_D(Object res) throws Throwable { return convert.<double>invokeExact(res); } protected double return_D(Object res) throws Throwable { return (double)convert.invokeExact(res); }
static private final String CLASS_PREFIX; // "sun.dyn.ToGeneric$" static private final String CLASS_PREFIX; // "sun.dyn.ToGeneric$"
static { static {
...@@ -420,7 +420,7 @@ class ToGeneric { ...@@ -420,7 +420,7 @@ class ToGeneric {
protected A1(MethodHandle entryPoint) { super(entryPoint); } // to build prototype protected A1(MethodHandle entryPoint) { super(entryPoint); } // to build prototype
protected A1(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); } protected A1(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); }
protected A1 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A1(e, i, c, t); } protected A1 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A1(e, i, c, t); }
protected Object target(Object a0) throws Throwable { return invoker.<Object>invokeExact(target, a0); } protected Object target(Object a0) throws Throwable { return invoker.invokeExact(target, a0); }
protected Object targetA1(Object a0) throws Throwable { return target(a0); } protected Object targetA1(Object a0) throws Throwable { return target(a0); }
protected Object targetA1(int a0) throws Throwable { return target(a0); } protected Object targetA1(int a0) throws Throwable { return target(a0); }
protected Object targetA1(long a0) throws Throwable { return target(a0); } protected Object targetA1(long a0) throws Throwable { return target(a0); }
...@@ -458,7 +458,7 @@ class genclasses { ...@@ -458,7 +458,7 @@ class genclasses {
" protected @cat@(MethodHandle entryPoint) { super(entryPoint); } // to build prototype", " protected @cat@(MethodHandle entryPoint) { super(entryPoint); } // to build prototype",
" protected @cat@(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); }", " protected @cat@(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); }",
" protected @cat@ makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new @cat@(e, i, c, t); }", " protected @cat@ makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new @cat@(e, i, c, t); }",
" protected Object target(@Ovav@) throws Throwable { return invoker.<Object>invokeExact(target, @av@); }", " protected Object target(@Ovav@) throws Throwable { return invoker.invokeExact(target, @av@); }",
" //@each-Tv@", " //@each-Tv@",
" protected Object target@cat@(@Tvav@) throws Throwable { return target(@av@); }", " protected Object target@cat@(@Tvav@) throws Throwable { return target(@av@); }",
" //@end-Tv@", " //@end-Tv@",
...@@ -618,7 +618,7 @@ class genclasses { ...@@ -618,7 +618,7 @@ class genclasses {
protected A0(MethodHandle entryPoint) { super(entryPoint); } // to build prototype protected A0(MethodHandle entryPoint) { super(entryPoint); } // to build prototype
protected A0(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); } protected A0(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); }
protected A0 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A0(e, i, c, t); } protected A0 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A0(e, i, c, t); }
protected Object target() throws Throwable { return invoker.<Object>invokeExact(target); } protected Object target() throws Throwable { return invoker.invokeExact(target); }
protected Object targetA0() throws Throwable { return target(); } protected Object targetA0() throws Throwable { return target(); }
protected Object invoke_L() throws Throwable { return return_L(targetA0()); } protected Object invoke_L() throws Throwable { return return_L(targetA0()); }
protected int invoke_I() throws Throwable { return return_I(targetA0()); } protected int invoke_I() throws Throwable { return return_I(targetA0()); }
...@@ -630,7 +630,7 @@ class genclasses { ...@@ -630,7 +630,7 @@ class genclasses {
protected A1(MethodHandle entryPoint) { super(entryPoint); } // to build prototype protected A1(MethodHandle entryPoint) { super(entryPoint); } // to build prototype
protected A1(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); } protected A1(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); }
protected A1 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A1(e, i, c, t); } protected A1 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A1(e, i, c, t); }
protected Object target(Object a0) throws Throwable { return invoker.<Object>invokeExact(target, a0); } protected Object target(Object a0) throws Throwable { return invoker.invokeExact(target, a0); }
protected Object targetA1(Object a0) throws Throwable { return target(a0); } protected Object targetA1(Object a0) throws Throwable { return target(a0); }
protected Object targetA1(int a0) throws Throwable { return target(a0); } protected Object targetA1(int a0) throws Throwable { return target(a0); }
protected Object targetA1(long a0) throws Throwable { return target(a0); } protected Object targetA1(long a0) throws Throwable { return target(a0); }
...@@ -654,7 +654,7 @@ class genclasses { ...@@ -654,7 +654,7 @@ class genclasses {
protected A2(MethodHandle entryPoint) { super(entryPoint); } // to build prototype protected A2(MethodHandle entryPoint) { super(entryPoint); } // to build prototype
protected A2(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); } protected A2(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); }
protected A2 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A2(e, i, c, t); } protected A2 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A2(e, i, c, t); }
protected Object target(Object a0, Object a1) throws Throwable { return invoker.<Object>invokeExact(target, a0, a1); } protected Object target(Object a0, Object a1) throws Throwable { return invoker.invokeExact(target, a0, a1); }
protected Object targetA2(Object a0, Object a1) throws Throwable { return target(a0, a1); } protected Object targetA2(Object a0, Object a1) throws Throwable { return target(a0, a1); }
protected Object targetA2(Object a0, int a1) throws Throwable { return target(a0, a1); } protected Object targetA2(Object a0, int a1) throws Throwable { return target(a0, a1); }
protected Object targetA2(int a0, int a1) throws Throwable { return target(a0, a1); } protected Object targetA2(int a0, int a1) throws Throwable { return target(a0, a1); }
...@@ -690,7 +690,7 @@ class genclasses { ...@@ -690,7 +690,7 @@ class genclasses {
protected A3(MethodHandle entryPoint) { super(entryPoint); } // to build prototype protected A3(MethodHandle entryPoint) { super(entryPoint); } // to build prototype
protected A3(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); } protected A3(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); }
protected A3 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A3(e, i, c, t); } protected A3 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A3(e, i, c, t); }
protected Object target(Object a0, Object a1, Object a2) throws Throwable { return invoker.<Object>invokeExact(target, a0, a1, a2); } protected Object target(Object a0, Object a1, Object a2) throws Throwable { return invoker.invokeExact(target, a0, a1, a2); }
protected Object targetA3(Object a0, Object a1, Object a2) throws Throwable { return target(a0, a1, a2); } protected Object targetA3(Object a0, Object a1, Object a2) throws Throwable { return target(a0, a1, a2); }
protected Object targetA3(Object a0, Object a1, int a2) throws Throwable { return target(a0, a1, a2); } protected Object targetA3(Object a0, Object a1, int a2) throws Throwable { return target(a0, a1, a2); }
protected Object targetA3(Object a0, int a1, int a2) throws Throwable { return target(a0, a1, a2); } protected Object targetA3(Object a0, int a1, int a2) throws Throwable { return target(a0, a1, a2); }
...@@ -739,7 +739,7 @@ class genclasses { ...@@ -739,7 +739,7 @@ class genclasses {
protected A4(MethodHandle entryPoint) { super(entryPoint); } // to build prototype protected A4(MethodHandle entryPoint) { super(entryPoint); } // to build prototype
protected A4(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); } protected A4(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); }
protected A4 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A4(e, i, c, t); } protected A4 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A4(e, i, c, t); }
protected Object target(Object a0, Object a1, Object a2, Object a3) throws Throwable { return invoker.<Object>invokeExact(target, a0, a1, a2, a3); } protected Object target(Object a0, Object a1, Object a2, Object a3) throws Throwable { return invoker.invokeExact(target, a0, a1, a2, a3); }
protected Object targetA4(Object a0, Object a1, Object a2, Object a3) throws Throwable { return target(a0, a1, a2, a3); } protected Object targetA4(Object a0, Object a1, Object a2, Object a3) throws Throwable { return target(a0, a1, a2, a3); }
protected Object targetA4(Object a0, Object a1, Object a2, int a3) throws Throwable { return target(a0, a1, a2, a3); } protected Object targetA4(Object a0, Object a1, Object a2, int a3) throws Throwable { return target(a0, a1, a2, a3); }
protected Object targetA4(Object a0, Object a1, int a2, int a3) throws Throwable { return target(a0, a1, a2, a3); } protected Object targetA4(Object a0, Object a1, int a2, int a3) throws Throwable { return target(a0, a1, a2, a3); }
...@@ -781,7 +781,7 @@ class genclasses { ...@@ -781,7 +781,7 @@ class genclasses {
protected A5(MethodHandle entryPoint) { super(entryPoint); } // to build prototype protected A5(MethodHandle entryPoint) { super(entryPoint); } // to build prototype
protected A5(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); } protected A5(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); }
protected A5 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A5(e, i, c, t); } protected A5 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A5(e, i, c, t); }
protected Object target(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { return invoker.<Object>invokeExact(target, a0, a1, a2, a3, a4); } protected Object target(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { return invoker.invokeExact(target, a0, a1, a2, a3, a4); }
protected Object targetA5(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { return target(a0, a1, a2, a3, a4); } protected Object targetA5(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { return target(a0, a1, a2, a3, a4); }
protected Object targetA5(Object a0, Object a1, Object a2, Object a3, int a4) throws Throwable { return target(a0, a1, a2, a3, a4); } protected Object targetA5(Object a0, Object a1, Object a2, Object a3, int a4) throws Throwable { return target(a0, a1, a2, a3, a4); }
protected Object targetA5(Object a0, Object a1, Object a2, int a3, int a4) throws Throwable { return target(a0, a1, a2, a3, a4); } protected Object targetA5(Object a0, Object a1, Object a2, int a3, int a4) throws Throwable { return target(a0, a1, a2, a3, a4); }
...@@ -832,7 +832,7 @@ class genclasses { ...@@ -832,7 +832,7 @@ class genclasses {
protected A6(MethodHandle entryPoint) { super(entryPoint); } // to build prototype protected A6(MethodHandle entryPoint) { super(entryPoint); } // to build prototype
protected A6(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); } protected A6(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); }
protected A6 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A6(e, i, c, t); } protected A6 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A6(e, i, c, t); }
protected Object target(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { return invoker.<Object>invokeExact(target, a0, a1, a2, a3, a4, a5); } protected Object target(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { return invoker.invokeExact(target, a0, a1, a2, a3, a4, a5); }
protected Object targetA6(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { return target(a0, a1, a2, a3, a4, a5); } protected Object targetA6(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { return target(a0, a1, a2, a3, a4, a5); }
protected Object targetA6(Object a0, Object a1, Object a2, Object a3, Object a4, long a5) throws Throwable { return target(a0, a1, a2, a3, a4, a5); } protected Object targetA6(Object a0, Object a1, Object a2, Object a3, Object a4, long a5) throws Throwable { return target(a0, a1, a2, a3, a4, a5); }
protected Object targetA6(Object a0, Object a1, Object a2, Object a3, long a4, long a5) throws Throwable { return target(a0, a1, a2, a3, a4, a5); } protected Object targetA6(Object a0, Object a1, Object a2, Object a3, long a4, long a5) throws Throwable { return target(a0, a1, a2, a3, a4, a5); }
...@@ -866,7 +866,7 @@ class genclasses { ...@@ -866,7 +866,7 @@ class genclasses {
protected A7(MethodHandle entryPoint) { super(entryPoint); } // to build prototype protected A7(MethodHandle entryPoint) { super(entryPoint); } // to build prototype
protected A7(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); } protected A7(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); }
protected A7 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A7(e, i, c, t); } protected A7 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A7(e, i, c, t); }
protected Object target(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { return invoker.<Object>invokeExact(target, a0, a1, a2, a3, a4, a5, a6); } protected Object target(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { return invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6); }
protected Object targetA7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6); } protected Object targetA7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6); }
protected Object targetA7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, long a6) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6); } protected Object targetA7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, long a6) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6); }
protected Object targetA7(Object a0, Object a1, Object a2, Object a3, Object a4, long a5, long a6) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6); } protected Object targetA7(Object a0, Object a1, Object a2, Object a3, Object a4, long a5, long a6) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6); }
...@@ -904,7 +904,7 @@ class genclasses { ...@@ -904,7 +904,7 @@ class genclasses {
protected A8(MethodHandle entryPoint) { super(entryPoint); } // to build prototype protected A8(MethodHandle entryPoint) { super(entryPoint); } // to build prototype
protected A8(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); } protected A8(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); }
protected A8 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A8(e, i, c, t); } protected A8 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A8(e, i, c, t); }
protected Object target(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { return invoker.<Object>invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7); } protected Object target(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { return invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7); }
protected Object targetA8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7); } protected Object targetA8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7); }
protected Object targetA8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, long a7) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7); } protected Object targetA8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, long a7) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7); }
protected Object targetA8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, long a6, long a7) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7); } protected Object targetA8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, long a6, long a7) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7); }
...@@ -946,7 +946,7 @@ class genclasses { ...@@ -946,7 +946,7 @@ class genclasses {
protected A9(MethodHandle entryPoint) { super(entryPoint); } // to build prototype protected A9(MethodHandle entryPoint) { super(entryPoint); } // to build prototype
protected A9(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); } protected A9(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); }
protected A9 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A9(e, i, c, t); } protected A9 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A9(e, i, c, t); }
protected Object target(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) throws Throwable { return invoker.<Object>invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8); } protected Object target(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) throws Throwable { return invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8); }
protected Object targetA9(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8); } protected Object targetA9(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8); }
protected Object targetA9(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, long a8) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8); } protected Object targetA9(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, long a8) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8); }
protected Object targetA9(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, long a7, long a8) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8); } protected Object targetA9(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, long a7, long a8) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8); }
...@@ -992,7 +992,7 @@ class genclasses { ...@@ -992,7 +992,7 @@ class genclasses {
protected A10(MethodHandle entryPoint) { super(entryPoint); } // to build prototype protected A10(MethodHandle entryPoint) { super(entryPoint); } // to build prototype
protected A10(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); } protected A10(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); }
protected A10 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A10(e, i, c, t); } protected A10 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A10(e, i, c, t); }
protected Object target(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object a9) throws Throwable { return invoker.<Object>invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); } protected Object target(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object a9) throws Throwable { return invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); }
protected Object targetA10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object a9) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); } protected Object targetA10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object a9) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); }
protected Object targetA10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, long a9) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); } protected Object targetA10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, long a9) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); }
protected Object targetA10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, long a8, long a9) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); } protected Object targetA10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, long a8, long a9) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); }
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
/* @test /* @test
* @summary unit tests for java.dyn.MethodHandle.invokeGeneric * @summary unit tests for java.dyn.MethodHandle.invokeGeneric
* @compile -target 7 InvokeGenericTest.java * @compile -XDallowTransitionalJSR292=no -target 7 InvokeGenericTest.java
* @run junit/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableMethodHandles test.java.dyn.InvokeGenericTest * @run junit/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableMethodHandles test.java.dyn.InvokeGenericTest
*/ */
...@@ -350,7 +350,7 @@ public class InvokeGenericTest { ...@@ -350,7 +350,7 @@ public class InvokeGenericTest {
String[] args = { "one", "two" }; String[] args = { "one", "two" };
MethodHandle mh = callable(Object.class, String.class); MethodHandle mh = callable(Object.class, String.class);
Object res; List resl; Object res; List resl;
res = resl = (List) mh.<List>invokeGeneric((String)args[0], (Object)args[1]); res = resl = (List) mh.invokeGeneric((String)args[0], (Object)args[1]);
//System.out.println(res); //System.out.println(res);
assertEquals(Arrays.asList(args), res); assertEquals(Arrays.asList(args), res);
} }
...@@ -476,7 +476,7 @@ public class InvokeGenericTest { ...@@ -476,7 +476,7 @@ public class InvokeGenericTest {
Integer[] args = { 1, 2 }; Integer[] args = { 1, 2 };
MethodHandle mh = callable(Object.class, int.class); MethodHandle mh = callable(Object.class, int.class);
Object res; List resl; Object res; List resl;
res = resl = (List) mh.<List>invokeGeneric((int)args[0], (Object)args[1]); res = resl = (List) mh.invokeGeneric((int)args[0], (Object)args[1]);
//System.out.println(res); //System.out.println(res);
assertEquals(Arrays.asList(args), res); assertEquals(Arrays.asList(args), res);
} }
......
...@@ -95,11 +95,11 @@ MethodHandle CONCAT_3 = LOOKUP.findVirtual(String.class, ...@@ -95,11 +95,11 @@ MethodHandle CONCAT_3 = LOOKUP.findVirtual(String.class,
MethodHandle HASHCODE_3 = LOOKUP.findVirtual(Object.class, MethodHandle HASHCODE_3 = LOOKUP.findVirtual(Object.class,
"hashCode", methodType(int.class)); "hashCode", methodType(int.class));
//assertEquals("xy", (String) CONCAT_1.invokeExact("x", "y")); //assertEquals("xy", (String) CONCAT_1.invokeExact("x", "y"));
assertEquals("xy", (String) CONCAT_2.<String>invokeExact("x", "y")); assertEquals("xy", (String) CONCAT_2.invokeExact("x", "y"));
assertEquals("xy", (String) CONCAT_3.<String>invokeExact("x", "y")); assertEquals("xy", (String) CONCAT_3.invokeExact("x", "y"));
//assertEquals("xy".hashCode(), (int) HASHCODE_1.<int>invokeExact((Object)"xy")); //assertEquals("xy".hashCode(), (int) HASHCODE_1.invokeExact((Object)"xy"));
assertEquals("xy".hashCode(), (int) HASHCODE_2.<int>invokeExact((Object)"xy")); assertEquals("xy".hashCode(), (int) HASHCODE_2.invokeExact((Object)"xy"));
assertEquals("xy".hashCode(), (int) HASHCODE_3.<int>invokeExact((Object)"xy")); assertEquals("xy".hashCode(), (int) HASHCODE_3.invokeExact((Object)"xy"));
{} {}
} }
@Test public void testDropArguments() throws Throwable { @Test public void testDropArguments() throws Throwable {
......
...@@ -25,8 +25,8 @@ ...@@ -25,8 +25,8 @@
/* @test /* @test
* @summary unit tests for java.dyn.MethodHandles * @summary unit tests for java.dyn.MethodHandles
* @compile -XDinvokedynamic MethodHandlesTest.java * @compile -source 7 -target 7 -XDallowTransitionalJSR292=no MethodHandlesTest.java
* @run junit/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableInvokeDynamic test.java.dyn.MethodHandlesTest * @run junit/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableMethodHandles test.java.dyn.MethodHandlesTest
*/ */
package test.java.dyn; package test.java.dyn;
...@@ -891,12 +891,12 @@ public class MethodHandlesTest { ...@@ -891,12 +891,12 @@ public class MethodHandlesTest {
for (int i = 0; i <= 1; i++) { for (int i = 0; i <= 1; i++) {
if (isStatic) { if (isStatic) {
if (type == int.class) if (type == int.class)
sawValue = mh.<int>invokeExact(); // do these exactly sawValue = (int) mh.invokeExact(); // do these exactly
else else
sawValue = mh.invokeExact(); sawValue = mh.invokeExact();
} else { } else {
if (type == int.class) if (type == int.class)
sawValue = mh.<int>invokeExact((Object) fields); sawValue = (int) mh.invokeExact((Object) fields);
else else
sawValue = mh.invokeExact((Object) fields); sawValue = mh.invokeExact((Object) fields);
} }
...@@ -965,14 +965,14 @@ public class MethodHandlesTest { ...@@ -965,14 +965,14 @@ public class MethodHandlesTest {
Object putValue = randomArg(type); Object putValue = randomArg(type);
if (isStatic) { if (isStatic) {
if (type == int.class) if (type == int.class)
mh.<void>invokeExact((int)(Integer)putValue); // do these exactly mh.invokeExact((int)putValue); // do these exactly
else else
mh.<void>invokeExact(putValue); mh.invokeExact(putValue);
} else { } else {
if (type == int.class) if (type == int.class)
mh.<void>invokeExact((Object) fields, (int)(Integer)putValue); mh.invokeExact((Object) fields, (int)putValue);
else else
mh.<void>invokeExact((Object) fields, putValue); mh.invokeExact((Object) fields, putValue);
} }
assertEquals(f.get(fields), putValue); assertEquals(f.get(fields), putValue);
} }
...@@ -1038,11 +1038,11 @@ public class MethodHandlesTest { ...@@ -1038,11 +1038,11 @@ public class MethodHandlesTest {
model.set(i, random); model.set(i, random);
if (testSetter) { if (testSetter) {
if (elemType == int.class) if (elemType == int.class)
mh.<void>invokeExact((int[]) array, i, (int)(Integer)random); mh.invokeExact((int[]) array, i, (int)random);
else if (elemType == boolean.class) else if (elemType == boolean.class)
mh.<void>invokeExact((boolean[]) array, i, (boolean)(Boolean)random); mh.invokeExact((boolean[]) array, i, (boolean)random);
else else
mh.<void>invokeExact(array, i, random); mh.invokeExact(array, i, random);
assertEquals(model, array2list(array)); assertEquals(model, array2list(array));
} else { } else {
Array.set(array, i, random); Array.set(array, i, random);
...@@ -1058,9 +1058,9 @@ public class MethodHandlesTest { ...@@ -1058,9 +1058,9 @@ public class MethodHandlesTest {
if (!testSetter) { if (!testSetter) {
expValue = sawValue; expValue = sawValue;
if (elemType == int.class) if (elemType == int.class)
sawValue = mh.<int>invokeExact((int[]) array, i); sawValue = (int) mh.invokeExact((int[]) array, i);
else if (elemType == boolean.class) else if (elemType == boolean.class)
sawValue = mh.<boolean>invokeExact((boolean[]) array, i); sawValue = (boolean) mh.invokeExact((boolean[]) array, i);
else else
sawValue = mh.invokeExact(array, i); sawValue = mh.invokeExact(array, i);
assertEquals(sawValue, expValue); assertEquals(sawValue, expValue);
...@@ -1355,15 +1355,15 @@ public class MethodHandlesTest { ...@@ -1355,15 +1355,15 @@ public class MethodHandlesTest {
assertArrayEquals(args, check); assertArrayEquals(args, check);
switch (nargs) { switch (nargs) {
case 0: case 0:
check = target.<Object[]>invokeExact(); check = (Object[]) target.invokeExact();
assertArrayEquals(args, check); assertArrayEquals(args, check);
break; break;
case 1: case 1:
check = target.<Object[]>invokeExact(args[0]); check = (Object[]) target.invokeExact(args[0]);
assertArrayEquals(args, check); assertArrayEquals(args, check);
break; break;
case 2: case 2:
check = target.<Object[]>invokeExact(args[0], args[1]); check = (Object[]) target.invokeExact(args[0], args[1]);
assertArrayEquals(args, check); assertArrayEquals(args, check);
break; break;
} }
...@@ -1377,8 +1377,11 @@ public class MethodHandlesTest { ...@@ -1377,8 +1377,11 @@ public class MethodHandlesTest {
MethodHandle result = MethodHandles.spreadArguments(target2, newType); MethodHandle result = MethodHandles.spreadArguments(target2, newType);
Object[] returnValue; Object[] returnValue;
if (pos == 0) { if (pos == 0) {
Object rawRetVal = result.invokeExact(args); // In the following line, the first cast implies
returnValue = (Object[]) rawRetVal; // normal Object return value for the MH call (Object[])->Object,
// while the second cast dynamically converts to an Object array.
// Such a double cast is typical of MH.invokeExact.
returnValue = (Object[]) (Object) result.invokeExact(args);
} else { } else {
Object[] args1 = Arrays.copyOfRange(args, 0, pos+1); Object[] args1 = Arrays.copyOfRange(args, 0, pos+1);
args1[pos] = Arrays.copyOfRange(args, pos, args.length); args1[pos] = Arrays.copyOfRange(args, pos, args.length);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册