提交 b8a229a5 编写于 作者: T twisti

8000989: smaller code changes to make future JSR 292 backports easier

Reviewed-by: jrose
上级 e8344529
...@@ -79,7 +79,7 @@ import com.sun.xml.internal.ws.org.objectweb.asm.Type; ...@@ -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; ...@@ -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; ...@@ -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; ...@@ -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; ...@@ -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; ...@@ -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; ...@@ -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; ...@@ -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; ...@@ -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; ...@@ -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; ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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; ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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; ...@@ -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()); ...@@ -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()); ...@@ -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; ...@@ -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; ...@@ -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; ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册