mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-21 19:44:41 +02:00
8000989: smaller code changes to make future JSR 292 backports easier
Reviewed-by: jrose
This commit is contained in:
parent
d9aab5025e
commit
01d0ba69ce
13 changed files with 52 additions and 39 deletions
|
@ -79,7 +79,7 @@ import com.sun.xml.internal.ws.org.objectweb.asm.Type;
|
||||||
default : throw new InternalError("unexpected xtype: " + xtype);
|
default : throw new InternalError("unexpected xtype: " + xtype);
|
||||||
}
|
}
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
throw new InternalError(t);
|
throw newInternalError(t);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -97,7 +97,7 @@ import com.sun.xml.internal.ws.org.objectweb.asm.Type;
|
||||||
case 'D': return cloneExtendD(type, form, (double) x);
|
case 'D': return cloneExtendD(type, form, (double) x);
|
||||||
}
|
}
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
throw new InternalError(t);
|
throw newInternalError(t);
|
||||||
}
|
}
|
||||||
throw new InternalError("unexpected type: " + xtype);
|
throw new InternalError("unexpected type: " + xtype);
|
||||||
}
|
}
|
||||||
|
@ -115,7 +115,7 @@ import com.sun.xml.internal.ws.org.objectweb.asm.Type;
|
||||||
try {
|
try {
|
||||||
return clone(srcType, form);
|
return clone(srcType, form);
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
throw new InternalError(t);
|
throw newInternalError(t);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -124,7 +124,7 @@ import com.sun.xml.internal.ws.org.objectweb.asm.Type;
|
||||||
try {
|
try {
|
||||||
return clone(newType, form.permuteArguments(1, reorder, basicTypes(newType.parameterList())));
|
return clone(newType, form.permuteArguments(1, reorder, basicTypes(newType.parameterList())));
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
throw new InternalError(t);
|
throw newInternalError(t);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -166,7 +166,7 @@ import com.sun.xml.internal.ws.org.objectweb.asm.Type;
|
||||||
case 'J': return argJ(i);
|
case 'J': return argJ(i);
|
||||||
}
|
}
|
||||||
} catch (Throwable ex) {
|
} catch (Throwable ex) {
|
||||||
throw new InternalError(ex);
|
throw newInternalError(ex);
|
||||||
}
|
}
|
||||||
throw new InternalError("unexpected type: " + speciesData().types+"."+i);
|
throw new InternalError("unexpected type: " + speciesData().types+"."+i);
|
||||||
}
|
}
|
||||||
|
@ -192,7 +192,7 @@ import com.sun.xml.internal.ws.org.objectweb.asm.Type;
|
||||||
try {
|
try {
|
||||||
return (MethodHandle) argL(0);
|
return (MethodHandle) argL(0);
|
||||||
} catch (Throwable ex) {
|
} catch (Throwable ex) {
|
||||||
throw new InternalError(ex);
|
throw newInternalError(ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -464,7 +464,7 @@ import com.sun.xml.internal.ws.org.objectweb.asm.Type;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
throw new InternalError(e);
|
throw newInternalError(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (SpeciesData d : CACHE.values()) {
|
for (SpeciesData d : CACHE.values()) {
|
||||||
|
@ -748,7 +748,7 @@ import com.sun.xml.internal.ws.org.objectweb.asm.Type;
|
||||||
try {
|
try {
|
||||||
return LOOKUP.findGetter(cbmhClass, fieldName, fieldType);
|
return LOOKUP.findGetter(cbmhClass, fieldName, fieldType);
|
||||||
} catch (NoSuchFieldException | IllegalAccessException e) {
|
} catch (NoSuchFieldException | IllegalAccessException e) {
|
||||||
throw new InternalError(e);
|
throw newInternalError(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -776,7 +776,7 @@ import com.sun.xml.internal.ws.org.objectweb.asm.Type;
|
||||||
Field F_SPECIES_DATA = cbmh.getDeclaredField("SPECIES_DATA");
|
Field F_SPECIES_DATA = cbmh.getDeclaredField("SPECIES_DATA");
|
||||||
return (SpeciesData) F_SPECIES_DATA.get(null);
|
return (SpeciesData) F_SPECIES_DATA.get(null);
|
||||||
} catch (ReflectiveOperationException ex) {
|
} catch (ReflectiveOperationException ex) {
|
||||||
throw new InternalError(ex);
|
throw newInternalError(ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -802,7 +802,7 @@ import com.sun.xml.internal.ws.org.objectweb.asm.Type;
|
||||||
try {
|
try {
|
||||||
return linkConstructor(LOOKUP.findConstructor(cbmh, MethodType.fromMethodDescriptorString(makeSignature(types, true), null)));
|
return linkConstructor(LOOKUP.findConstructor(cbmh, MethodType.fromMethodDescriptorString(makeSignature(types, true), null)));
|
||||||
} catch (NoSuchMethodException | IllegalAccessException | IllegalArgumentException | TypeNotPresentException e) {
|
} catch (NoSuchMethodException | IllegalAccessException | IllegalArgumentException | TypeNotPresentException e) {
|
||||||
throw new InternalError(e);
|
throw newInternalError(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -833,7 +833,7 @@ import com.sun.xml.internal.ws.org.objectweb.asm.Type;
|
||||||
linkerMN = MemberName.getFactory().resolveOrFail(REF_invokeStatic, linkerMN, null, NoSuchMethodException.class);
|
linkerMN = MemberName.getFactory().resolveOrFail(REF_invokeStatic, linkerMN, null, NoSuchMethodException.class);
|
||||||
assert(linkerMN.isStatic());
|
assert(linkerMN.isStatic());
|
||||||
} catch (ReflectiveOperationException ex) {
|
} catch (ReflectiveOperationException ex) {
|
||||||
throw new InternalError(ex);
|
throw newInternalError(ex);
|
||||||
}
|
}
|
||||||
// extend arguments array
|
// extend arguments array
|
||||||
Object[] newArgs = Arrays.copyOf(initName.arguments, initName.arguments.length + 1);
|
Object[] newArgs = Arrays.copyOf(initName.arguments, initName.arguments.length + 1);
|
||||||
|
|
|
@ -222,7 +222,7 @@ public class CallSite {
|
||||||
GET_TARGET = IMPL_LOOKUP.
|
GET_TARGET = IMPL_LOOKUP.
|
||||||
findVirtual(CallSite.class, "getTarget", MethodType.methodType(MethodHandle.class));
|
findVirtual(CallSite.class, "getTarget", MethodType.methodType(MethodHandle.class));
|
||||||
} catch (ReflectiveOperationException e) {
|
} catch (ReflectiveOperationException e) {
|
||||||
throw new InternalError(e);
|
throw newInternalError(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -218,7 +218,7 @@ class DirectMethodHandle extends MethodHandle {
|
||||||
try {
|
try {
|
||||||
linker = IMPL_NAMES.resolveOrFail(REF_invokeStatic, linker, null, NoSuchMethodException.class);
|
linker = IMPL_NAMES.resolveOrFail(REF_invokeStatic, linker, null, NoSuchMethodException.class);
|
||||||
} catch (ReflectiveOperationException ex) {
|
} catch (ReflectiveOperationException ex) {
|
||||||
throw new InternalError(ex);
|
throw newInternalError(ex);
|
||||||
}
|
}
|
||||||
final int DMH_THIS = 0;
|
final int DMH_THIS = 0;
|
||||||
final int ARG_BASE = 1;
|
final int ARG_BASE = 1;
|
||||||
|
@ -554,7 +554,7 @@ class DirectMethodHandle extends MethodHandle {
|
||||||
try {
|
try {
|
||||||
linker = IMPL_NAMES.resolveOrFail(REF_invokeVirtual, linker, null, NoSuchMethodException.class);
|
linker = IMPL_NAMES.resolveOrFail(REF_invokeVirtual, linker, null, NoSuchMethodException.class);
|
||||||
} catch (ReflectiveOperationException ex) {
|
} catch (ReflectiveOperationException ex) {
|
||||||
throw new InternalError(ex);
|
throw newInternalError(ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
// What is the external type of the lambda form?
|
// What is the external type of the lambda form?
|
||||||
|
@ -653,7 +653,7 @@ class DirectMethodHandle extends MethodHandle {
|
||||||
nf.resolve();
|
nf.resolve();
|
||||||
}
|
}
|
||||||
} catch (ReflectiveOperationException ex) {
|
} catch (ReflectiveOperationException ex) {
|
||||||
throw new InternalError(ex);
|
throw newInternalError(ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -138,7 +138,7 @@ class InvokerBytecodeGenerator {
|
||||||
DUMP_CLASS_FILES_DIR = dumpDir;
|
DUMP_CLASS_FILES_DIR = dumpDir;
|
||||||
System.out.println("Dumping class files to "+DUMP_CLASS_FILES_DIR+"/...");
|
System.out.println("Dumping class files to "+DUMP_CLASS_FILES_DIR+"/...");
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new InternalError(e);
|
throw newInternalError(e);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
DUMP_CLASS_FILES_COUNTERS = null;
|
DUMP_CLASS_FILES_COUNTERS = null;
|
||||||
|
@ -162,7 +162,7 @@ class InvokerBytecodeGenerator {
|
||||||
file.close();
|
file.close();
|
||||||
return null;
|
return null;
|
||||||
} catch (IOException ex) {
|
} catch (IOException ex) {
|
||||||
throw new InternalError(ex);
|
throw newInternalError(ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -279,7 +279,7 @@ class InvokerBytecodeGenerator {
|
||||||
try {
|
try {
|
||||||
member = MEMBERNAME_FACTORY.resolveOrFail(REF_invokeStatic, member, HOST_CLASS, ReflectiveOperationException.class);
|
member = MEMBERNAME_FACTORY.resolveOrFail(REF_invokeStatic, member, HOST_CLASS, ReflectiveOperationException.class);
|
||||||
} catch (ReflectiveOperationException e) {
|
} catch (ReflectiveOperationException e) {
|
||||||
throw new InternalError(e);
|
throw newInternalError(e);
|
||||||
}
|
}
|
||||||
//System.out.println("resolveInvokerMember => "+member);
|
//System.out.println("resolveInvokerMember => "+member);
|
||||||
return member;
|
return member;
|
||||||
|
|
|
@ -27,6 +27,7 @@ package java.lang.invoke;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import sun.invoke.empty.Empty;
|
import sun.invoke.empty.Empty;
|
||||||
|
import static java.lang.invoke.MethodHandleStatics.*;
|
||||||
import static java.lang.invoke.MethodHandleNatives.Constants.*;
|
import static java.lang.invoke.MethodHandleNatives.Constants.*;
|
||||||
import static java.lang.invoke.MethodHandles.Lookup.IMPL_LOOKUP;
|
import static java.lang.invoke.MethodHandles.Lookup.IMPL_LOOKUP;
|
||||||
import static java.lang.invoke.LambdaForm.*;
|
import static java.lang.invoke.LambdaForm.*;
|
||||||
|
@ -128,9 +129,8 @@ class Invokers {
|
||||||
try {
|
try {
|
||||||
//Lookup.findVirtual(MethodHandle.class, name, type);
|
//Lookup.findVirtual(MethodHandle.class, name, type);
|
||||||
return IMPL_LOOKUP.resolveOrFail(REF_invokeVirtual, MethodHandle.class, name, type);
|
return IMPL_LOOKUP.resolveOrFail(REF_invokeVirtual, MethodHandle.class, name, type);
|
||||||
|
|
||||||
} catch (ReflectiveOperationException ex) {
|
} catch (ReflectiveOperationException ex) {
|
||||||
throw new InternalError("JVM cannot find invoker for "+type, ex);
|
throw newInternalError("JVM cannot find invoker for "+type, ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -176,7 +176,7 @@ class Invokers {
|
||||||
.findVirtual(MethodHandle.class, "asSpreader",
|
.findVirtual(MethodHandle.class, "asSpreader",
|
||||||
MethodType.methodType(MethodHandle.class, Class.class, int.class));
|
MethodType.methodType(MethodHandle.class, Class.class, int.class));
|
||||||
} catch (ReflectiveOperationException ex) {
|
} catch (ReflectiveOperationException ex) {
|
||||||
throw new InternalError(ex);
|
throw newInternalError(ex);
|
||||||
}
|
}
|
||||||
makeSpreader = MethodHandles.insertArguments(makeSpreader, 1, Object[].class, spreadArgCount);
|
makeSpreader = MethodHandles.insertArguments(makeSpreader, 1, Object[].class, spreadArgCount);
|
||||||
vaInvoker = MethodHandles.filterArgument(arrayInvoker, 0, makeSpreader);
|
vaInvoker = MethodHandles.filterArgument(arrayInvoker, 0, makeSpreader);
|
||||||
|
@ -215,7 +215,7 @@ class Invokers {
|
||||||
.findStatic(CallSite.class, "uninitializedCallSite",
|
.findStatic(CallSite.class, "uninitializedCallSite",
|
||||||
MethodType.methodType(Empty.class));
|
MethodType.methodType(Empty.class));
|
||||||
} catch (ReflectiveOperationException ex) {
|
} catch (ReflectiveOperationException ex) {
|
||||||
throw new InternalError(ex);
|
throw newInternalError(ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
invoker = MethodHandles.explicitCastArguments(invoker, MethodType.methodType(targetType.returnType()));
|
invoker = MethodHandles.explicitCastArguments(invoker, MethodType.methodType(targetType.returnType()));
|
||||||
|
@ -389,7 +389,7 @@ class Invokers {
|
||||||
form.genericInvoker = gamh;
|
form.genericInvoker = gamh;
|
||||||
return gamh;
|
return gamh;
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
throw new InternalError("Exception while resolving inexact invoke", ex);
|
throw newInternalError("Exception while resolving inexact invoke", ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -456,7 +456,7 @@ class Invokers {
|
||||||
NF_getCallSiteTarget.resolve();
|
NF_getCallSiteTarget.resolve();
|
||||||
// bound
|
// bound
|
||||||
} catch (ReflectiveOperationException ex) {
|
} catch (ReflectiveOperationException ex) {
|
||||||
throw new InternalError(ex);
|
throw newInternalError(ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -457,7 +457,7 @@ class LambdaForm {
|
||||||
isCompiled = true;
|
isCompiled = true;
|
||||||
return vmentry;
|
return vmentry;
|
||||||
} catch (Error | Exception ex) {
|
} catch (Error | Exception ex) {
|
||||||
throw new InternalError(this.toString(), ex);
|
throw newInternalError(this.toString(), ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1547,7 +1547,7 @@ class LambdaForm {
|
||||||
try {
|
try {
|
||||||
zmem = IMPL_NAMES.resolveOrFail(REF_invokeStatic, zmem, null, NoSuchMethodException.class);
|
zmem = IMPL_NAMES.resolveOrFail(REF_invokeStatic, zmem, null, NoSuchMethodException.class);
|
||||||
} catch (IllegalAccessException|NoSuchMethodException ex) {
|
} catch (IllegalAccessException|NoSuchMethodException ex) {
|
||||||
throw new InternalError(ex);
|
throw newInternalError(ex);
|
||||||
}
|
}
|
||||||
NamedFunction zcon = new NamedFunction(zmem);
|
NamedFunction zcon = new NamedFunction(zmem);
|
||||||
Name n = new Name(zcon).newIndex(0);
|
Name n = new Name(zcon).newIndex(0);
|
||||||
|
|
|
@ -558,7 +558,7 @@ import java.util.Objects;
|
||||||
try {
|
try {
|
||||||
return (MemberName) super.clone();
|
return (MemberName) super.clone();
|
||||||
} catch (CloneNotSupportedException ex) {
|
} catch (CloneNotSupportedException ex) {
|
||||||
throw new InternalError(ex);
|
throw newInternalError(ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1372,7 +1372,7 @@ assertEquals("[three, thee, tee]", asListFix.invoke((Object)argv).toString());
|
||||||
NF_reinvokerTarget = new LambdaForm.NamedFunction(MethodHandle.class
|
NF_reinvokerTarget = new LambdaForm.NamedFunction(MethodHandle.class
|
||||||
.getDeclaredMethod("reinvokerTarget"));
|
.getDeclaredMethod("reinvokerTarget"));
|
||||||
} catch (ReflectiveOperationException ex) {
|
} catch (ReflectiveOperationException ex) {
|
||||||
throw new InternalError(ex);
|
throw newInternalError(ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1397,7 +1397,7 @@ assertEquals("[three, thee, tee]", asListFix.invoke((Object)argv).toString());
|
||||||
try {
|
try {
|
||||||
FORM_OFFSET = UNSAFE.objectFieldOffset(MethodHandle.class.getDeclaredField("form"));
|
FORM_OFFSET = UNSAFE.objectFieldOffset(MethodHandle.class.getDeclaredField("form"));
|
||||||
} catch (ReflectiveOperationException ex) {
|
} catch (ReflectiveOperationException ex) {
|
||||||
throw new InternalError(ex);
|
throw newInternalError(ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -478,7 +478,7 @@ import static java.lang.invoke.MethodHandles.Lookup.IMPL_LOOKUP;
|
||||||
.getDeclaredMethod("checkSpreadArgument", Object.class, int.class));
|
.getDeclaredMethod("checkSpreadArgument", Object.class, int.class));
|
||||||
NF_checkSpreadArgument.resolve();
|
NF_checkSpreadArgument.resolve();
|
||||||
} catch (ReflectiveOperationException ex) {
|
} catch (ReflectiveOperationException ex) {
|
||||||
throw new InternalError(ex);
|
throw newInternalError(ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -93,6 +93,12 @@ import sun.misc.Unsafe;
|
||||||
}
|
}
|
||||||
|
|
||||||
// handy shared exception makers (they simplify the common case code)
|
// handy shared exception makers (they simplify the common case code)
|
||||||
|
/*non-public*/ static InternalError newInternalError(String message, Throwable cause) {
|
||||||
|
return new InternalError(message, cause);
|
||||||
|
}
|
||||||
|
/*non-public*/ static InternalError newInternalError(Throwable cause) {
|
||||||
|
return new InternalError(cause);
|
||||||
|
}
|
||||||
/*non-public*/ static RuntimeException newIllegalStateException(String message) {
|
/*non-public*/ static RuntimeException newIllegalStateException(String message) {
|
||||||
return new IllegalStateException(message);
|
return new IllegalStateException(message);
|
||||||
}
|
}
|
||||||
|
@ -109,7 +115,7 @@ import sun.misc.Unsafe;
|
||||||
return new IllegalArgumentException(message(message, obj, obj2));
|
return new IllegalArgumentException(message(message, obj, obj2));
|
||||||
}
|
}
|
||||||
/*non-public*/ static Error uncaughtException(Exception ex) {
|
/*non-public*/ static Error uncaughtException(Exception ex) {
|
||||||
throw new InternalError("uncaught exception", ex);
|
throw newInternalError("uncaught exception", ex);
|
||||||
}
|
}
|
||||||
static Error NYI() {
|
static Error NYI() {
|
||||||
throw new AssertionError("NYI");
|
throw new AssertionError("NYI");
|
||||||
|
|
|
@ -475,7 +475,7 @@ public class ValueConversions {
|
||||||
.findStatic(THIS_CLASS, "fillNewTypedArray",
|
.findStatic(THIS_CLASS, "fillNewTypedArray",
|
||||||
MethodType.methodType(Object[].class, Object[].class, Integer.class, Object[].class));
|
MethodType.methodType(Object[].class, Object[].class, Integer.class, Object[].class));
|
||||||
} catch (NoSuchMethodException | IllegalAccessException ex) {
|
} catch (NoSuchMethodException | IllegalAccessException ex) {
|
||||||
throw new InternalError("uncaught exception", ex);
|
throw newInternalError("uncaught exception", ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -489,7 +489,7 @@ public class ValueConversions {
|
||||||
COPY_AS_PRIMITIVE_ARRAY = IMPL_LOOKUP.findStatic(THIS_CLASS, "copyAsPrimitiveArray", MethodType.methodType(Object.class, Wrapper.class, Object[].class));
|
COPY_AS_PRIMITIVE_ARRAY = IMPL_LOOKUP.findStatic(THIS_CLASS, "copyAsPrimitiveArray", MethodType.methodType(Object.class, Wrapper.class, Object[].class));
|
||||||
MAKE_LIST = IMPL_LOOKUP.findStatic(THIS_CLASS, "makeList", MethodType.methodType(List.class, Object[].class));
|
MAKE_LIST = IMPL_LOOKUP.findStatic(THIS_CLASS, "makeList", MethodType.methodType(List.class, Object[].class));
|
||||||
} catch (ReflectiveOperationException ex) {
|
} catch (ReflectiveOperationException ex) {
|
||||||
throw new InternalError("uncaught exception", ex);
|
throw newInternalError("uncaught exception", ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -527,9 +527,8 @@ public class ValueConversions {
|
||||||
MethodHandle.class, int.class, MethodHandle.class);
|
MethodHandle.class, int.class, MethodHandle.class);
|
||||||
m.setAccessible(true);
|
m.setAccessible(true);
|
||||||
mh = IMPL_LOOKUP.unreflect(m);
|
mh = IMPL_LOOKUP.unreflect(m);
|
||||||
|
|
||||||
} catch (ReflectiveOperationException | SecurityException ex) {
|
} catch (ReflectiveOperationException | SecurityException ex) {
|
||||||
throw new InternalError(ex);
|
throw newInternalError(ex);
|
||||||
}
|
}
|
||||||
COLLECT_ARGUMENTS = mh;
|
COLLECT_ARGUMENTS = mh;
|
||||||
}
|
}
|
||||||
|
@ -1209,4 +1208,12 @@ public class ValueConversions {
|
||||||
private static MethodHandle buildVarargsList(int nargs) {
|
private static MethodHandle buildVarargsList(int nargs) {
|
||||||
return MethodHandles.filterReturnValue(varargsArray(nargs), LazyStatics.MAKE_LIST);
|
return MethodHandles.filterReturnValue(varargsArray(nargs), LazyStatics.MAKE_LIST);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// handy shared exception makers (they simplify the common case code)
|
||||||
|
private static InternalError newInternalError(String message, Throwable cause) {
|
||||||
|
return new InternalError(message, cause);
|
||||||
|
}
|
||||||
|
private static InternalError newInternalError(Throwable cause) {
|
||||||
|
return new InternalError(cause);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,7 +70,7 @@ public class BigArityTest {
|
||||||
MethodHandles.lookup().unreflect(
|
MethodHandles.lookup().unreflect(
|
||||||
BigArityTest.class.getDeclaredMethod("hashArguments", Object[].class));
|
BigArityTest.class.getDeclaredMethod("hashArguments", Object[].class));
|
||||||
} catch (ReflectiveOperationException ex) {
|
} catch (ReflectiveOperationException ex) {
|
||||||
throw new InternalError(ex);
|
throw new Error(ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
static MethodHandle MH_hashArguments(int arity) {
|
static MethodHandle MH_hashArguments(int arity) {
|
||||||
|
|
|
@ -145,21 +145,21 @@ public class PrivateInvokeTest {
|
||||||
MH_DEBUG_STRING = DIRECT_INVOKER_LOOKUP
|
MH_DEBUG_STRING = DIRECT_INVOKER_LOOKUP
|
||||||
.findVirtual(MethodHandle.class, "debugString", methodType(String.class));
|
.findVirtual(MethodHandle.class, "debugString", methodType(String.class));
|
||||||
} catch (ReflectiveOperationException ex) {
|
} catch (ReflectiveOperationException ex) {
|
||||||
throw new InternalError(ex);
|
throw new Error(ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private Object internalMemberName(MethodHandle mh) {
|
private Object internalMemberName(MethodHandle mh) {
|
||||||
try {
|
try {
|
||||||
return MH_INTERNAL_MEMBER_NAME.invokeExact(mh);
|
return MH_INTERNAL_MEMBER_NAME.invokeExact(mh);
|
||||||
} catch (Throwable ex) {
|
} catch (Throwable ex) {
|
||||||
throw new InternalError(ex);
|
throw new Error(ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private String debugString(MethodHandle mh) {
|
private String debugString(MethodHandle mh) {
|
||||||
try {
|
try {
|
||||||
return (String) MH_DEBUG_STRING.invokeExact(mh);
|
return (String) MH_DEBUG_STRING.invokeExact(mh);
|
||||||
} catch (Throwable ex) {
|
} catch (Throwable ex) {
|
||||||
throw new InternalError(ex);
|
throw new Error(ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private static MethodHandle directInvoker(int refKind, MethodType mtype) {
|
private static MethodHandle directInvoker(int refKind, MethodType mtype) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue