From d9aab5025ed57d0f721e19731f4482a81338586d Mon Sep 17 00:00:00 2001 From: David Katleman Date: Thu, 18 Oct 2012 11:09:00 -0700 Subject: [PATCH 1/3] Added tag jdk8-b61 for changeset 1a8b3b760f60 --- jdk/.hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/jdk/.hgtags b/jdk/.hgtags index 804a1e63a0c..c0a4c320b0f 100644 --- a/jdk/.hgtags +++ b/jdk/.hgtags @@ -182,3 +182,4 @@ e8569a473cee7f4955bd9e76a9bdf6c6a07ced27 jdk8-b52 d94613ac03d8de375ef60493e2bb76dbd30d875d jdk8-b58 abad1f417bd3df4296631fc943cd3b7f5062c88a jdk8-b59 cec8fa02f15634acd7d02d04b0b2d8c044cdbaaa jdk8-b60 +61ddb3fd000a09ab05bff1940b0ac211661e94cf jdk8-b61 From 01d0ba69cedc8f397c089be257fa8e8cf2f4f4ef Mon Sep 17 00:00:00 2001 From: Christian Thalinger Date: Fri, 19 Oct 2012 17:04:35 -0700 Subject: [PATCH 2/3] 8000989: smaller code changes to make future JSR 292 backports easier Reviewed-by: jrose --- .../java/lang/invoke/BoundMethodHandle.java | 22 +++++++++---------- .../classes/java/lang/invoke/CallSite.java | 2 +- .../java/lang/invoke/DirectMethodHandle.java | 6 ++--- .../lang/invoke/InvokerBytecodeGenerator.java | 6 ++--- .../classes/java/lang/invoke/Invokers.java | 12 +++++----- .../classes/java/lang/invoke/LambdaForm.java | 4 ++-- .../classes/java/lang/invoke/MemberName.java | 2 +- .../java/lang/invoke/MethodHandle.java | 4 ++-- .../java/lang/invoke/MethodHandleImpl.java | 2 +- .../java/lang/invoke/MethodHandleStatics.java | 8 ++++++- .../sun/invoke/util/ValueConversions.java | 15 +++++++++---- jdk/test/java/lang/invoke/BigArityTest.java | 2 +- .../java/lang/invoke/PrivateInvokeTest.java | 6 ++--- 13 files changed, 52 insertions(+), 39 deletions(-) diff --git a/jdk/src/share/classes/java/lang/invoke/BoundMethodHandle.java b/jdk/src/share/classes/java/lang/invoke/BoundMethodHandle.java index 4071305abc5..dfc6e9d41fe 100644 --- a/jdk/src/share/classes/java/lang/invoke/BoundMethodHandle.java +++ b/jdk/src/share/classes/java/lang/invoke/BoundMethodHandle.java @@ -79,7 +79,7 @@ import com.sun.xml.internal.ws.org.objectweb.asm.Type; default : throw new InternalError("unexpected xtype: " + xtype); } } 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); } } catch (Throwable t) { - throw new InternalError(t); + throw newInternalError(t); } throw new InternalError("unexpected type: " + xtype); } @@ -115,7 +115,7 @@ import com.sun.xml.internal.ws.org.objectweb.asm.Type; try { return clone(srcType, form); } 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 { return clone(newType, form.permuteArguments(1, reorder, basicTypes(newType.parameterList()))); } 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); } } catch (Throwable ex) { - throw new InternalError(ex); + throw newInternalError(ex); } throw new InternalError("unexpected type: " + speciesData().types+"."+i); } @@ -192,7 +192,7 @@ import com.sun.xml.internal.ws.org.objectweb.asm.Type; try { return (MethodHandle) argL(0); } 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) { - throw new InternalError(e); + throw newInternalError(e); } for (SpeciesData d : CACHE.values()) { @@ -748,7 +748,7 @@ import com.sun.xml.internal.ws.org.objectweb.asm.Type; try { return LOOKUP.findGetter(cbmhClass, fieldName, fieldType); } 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"); return (SpeciesData) F_SPECIES_DATA.get(null); } 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 { return linkConstructor(LOOKUP.findConstructor(cbmh, MethodType.fromMethodDescriptorString(makeSignature(types, true), null))); } 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); assert(linkerMN.isStatic()); } catch (ReflectiveOperationException ex) { - throw new InternalError(ex); + throw newInternalError(ex); } // extend arguments array Object[] newArgs = Arrays.copyOf(initName.arguments, initName.arguments.length + 1); diff --git a/jdk/src/share/classes/java/lang/invoke/CallSite.java b/jdk/src/share/classes/java/lang/invoke/CallSite.java index 7beb101b755..5d637b96d4f 100644 --- a/jdk/src/share/classes/java/lang/invoke/CallSite.java +++ b/jdk/src/share/classes/java/lang/invoke/CallSite.java @@ -222,7 +222,7 @@ public class CallSite { GET_TARGET = IMPL_LOOKUP. findVirtual(CallSite.class, "getTarget", MethodType.methodType(MethodHandle.class)); } catch (ReflectiveOperationException e) { - throw new InternalError(e); + throw newInternalError(e); } } diff --git a/jdk/src/share/classes/java/lang/invoke/DirectMethodHandle.java b/jdk/src/share/classes/java/lang/invoke/DirectMethodHandle.java index b1c7f82da9a..2adc8e82bd8 100644 --- a/jdk/src/share/classes/java/lang/invoke/DirectMethodHandle.java +++ b/jdk/src/share/classes/java/lang/invoke/DirectMethodHandle.java @@ -218,7 +218,7 @@ class DirectMethodHandle extends MethodHandle { try { linker = IMPL_NAMES.resolveOrFail(REF_invokeStatic, linker, null, NoSuchMethodException.class); } catch (ReflectiveOperationException ex) { - throw new InternalError(ex); + throw newInternalError(ex); } final int DMH_THIS = 0; final int ARG_BASE = 1; @@ -554,7 +554,7 @@ class DirectMethodHandle extends MethodHandle { try { linker = IMPL_NAMES.resolveOrFail(REF_invokeVirtual, linker, null, NoSuchMethodException.class); } catch (ReflectiveOperationException ex) { - throw new InternalError(ex); + throw newInternalError(ex); } // What is the external type of the lambda form? @@ -653,7 +653,7 @@ class DirectMethodHandle extends MethodHandle { nf.resolve(); } } catch (ReflectiveOperationException ex) { - throw new InternalError(ex); + throw newInternalError(ex); } } } diff --git a/jdk/src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java b/jdk/src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java index 48f88adeecc..0def847d38c 100644 --- a/jdk/src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java +++ b/jdk/src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java @@ -138,7 +138,7 @@ class InvokerBytecodeGenerator { DUMP_CLASS_FILES_DIR = dumpDir; System.out.println("Dumping class files to "+DUMP_CLASS_FILES_DIR+"/..."); } catch (Exception e) { - throw new InternalError(e); + throw newInternalError(e); } } else { DUMP_CLASS_FILES_COUNTERS = null; @@ -162,7 +162,7 @@ class InvokerBytecodeGenerator { file.close(); return null; } catch (IOException ex) { - throw new InternalError(ex); + throw newInternalError(ex); } } }); @@ -279,7 +279,7 @@ class InvokerBytecodeGenerator { try { member = MEMBERNAME_FACTORY.resolveOrFail(REF_invokeStatic, member, HOST_CLASS, ReflectiveOperationException.class); } catch (ReflectiveOperationException e) { - throw new InternalError(e); + throw newInternalError(e); } //System.out.println("resolveInvokerMember => "+member); return member; diff --git a/jdk/src/share/classes/java/lang/invoke/Invokers.java b/jdk/src/share/classes/java/lang/invoke/Invokers.java index 0e3dcf64bc7..0e40396a96f 100644 --- a/jdk/src/share/classes/java/lang/invoke/Invokers.java +++ b/jdk/src/share/classes/java/lang/invoke/Invokers.java @@ -27,6 +27,7 @@ package java.lang.invoke; import java.util.Arrays; import sun.invoke.empty.Empty; +import static java.lang.invoke.MethodHandleStatics.*; import static java.lang.invoke.MethodHandleNatives.Constants.*; import static java.lang.invoke.MethodHandles.Lookup.IMPL_LOOKUP; import static java.lang.invoke.LambdaForm.*; @@ -128,9 +129,8 @@ class Invokers { try { //Lookup.findVirtual(MethodHandle.class, name, type); return IMPL_LOOKUP.resolveOrFail(REF_invokeVirtual, MethodHandle.class, name, type); - } 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", MethodType.methodType(MethodHandle.class, Class.class, int.class)); } catch (ReflectiveOperationException ex) { - throw new InternalError(ex); + throw newInternalError(ex); } makeSpreader = MethodHandles.insertArguments(makeSpreader, 1, Object[].class, spreadArgCount); vaInvoker = MethodHandles.filterArgument(arrayInvoker, 0, makeSpreader); @@ -215,7 +215,7 @@ class Invokers { .findStatic(CallSite.class, "uninitializedCallSite", MethodType.methodType(Empty.class)); } catch (ReflectiveOperationException ex) { - throw new InternalError(ex); + throw newInternalError(ex); } } invoker = MethodHandles.explicitCastArguments(invoker, MethodType.methodType(targetType.returnType())); @@ -389,7 +389,7 @@ class Invokers { form.genericInvoker = gamh; return gamh; } 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(); // bound } catch (ReflectiveOperationException ex) { - throw new InternalError(ex); + throw newInternalError(ex); } } diff --git a/jdk/src/share/classes/java/lang/invoke/LambdaForm.java b/jdk/src/share/classes/java/lang/invoke/LambdaForm.java index e39896afecb..f1da24379c0 100644 --- a/jdk/src/share/classes/java/lang/invoke/LambdaForm.java +++ b/jdk/src/share/classes/java/lang/invoke/LambdaForm.java @@ -457,7 +457,7 @@ class LambdaForm { isCompiled = true; return vmentry; } catch (Error | Exception ex) { - throw new InternalError(this.toString(), ex); + throw newInternalError(this.toString(), ex); } } @@ -1547,7 +1547,7 @@ class LambdaForm { try { zmem = IMPL_NAMES.resolveOrFail(REF_invokeStatic, zmem, null, NoSuchMethodException.class); } catch (IllegalAccessException|NoSuchMethodException ex) { - throw new InternalError(ex); + throw newInternalError(ex); } NamedFunction zcon = new NamedFunction(zmem); Name n = new Name(zcon).newIndex(0); diff --git a/jdk/src/share/classes/java/lang/invoke/MemberName.java b/jdk/src/share/classes/java/lang/invoke/MemberName.java index 595b1145fe1..e2bd9b068d4 100644 --- a/jdk/src/share/classes/java/lang/invoke/MemberName.java +++ b/jdk/src/share/classes/java/lang/invoke/MemberName.java @@ -558,7 +558,7 @@ import java.util.Objects; try { return (MemberName) super.clone(); } catch (CloneNotSupportedException ex) { - throw new InternalError(ex); + throw newInternalError(ex); } } diff --git a/jdk/src/share/classes/java/lang/invoke/MethodHandle.java b/jdk/src/share/classes/java/lang/invoke/MethodHandle.java index a5e4e584d18..2a6b8c1b789 100644 --- a/jdk/src/share/classes/java/lang/invoke/MethodHandle.java +++ b/jdk/src/share/classes/java/lang/invoke/MethodHandle.java @@ -1372,7 +1372,7 @@ assertEquals("[three, thee, tee]", asListFix.invoke((Object)argv).toString()); NF_reinvokerTarget = new LambdaForm.NamedFunction(MethodHandle.class .getDeclaredMethod("reinvokerTarget")); } catch (ReflectiveOperationException ex) { - throw new InternalError(ex); + throw newInternalError(ex); } } @@ -1397,7 +1397,7 @@ assertEquals("[three, thee, tee]", asListFix.invoke((Object)argv).toString()); try { FORM_OFFSET = UNSAFE.objectFieldOffset(MethodHandle.class.getDeclaredField("form")); } catch (ReflectiveOperationException ex) { - throw new InternalError(ex); + throw newInternalError(ex); } } } diff --git a/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java b/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java index d9822bd7189..636bfeb72ce 100644 --- a/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java +++ b/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java @@ -478,7 +478,7 @@ import static java.lang.invoke.MethodHandles.Lookup.IMPL_LOOKUP; .getDeclaredMethod("checkSpreadArgument", Object.class, int.class)); NF_checkSpreadArgument.resolve(); } catch (ReflectiveOperationException ex) { - throw new InternalError(ex); + throw newInternalError(ex); } } diff --git a/jdk/src/share/classes/java/lang/invoke/MethodHandleStatics.java b/jdk/src/share/classes/java/lang/invoke/MethodHandleStatics.java index 3db5712fdeb..1c069aa1047 100644 --- a/jdk/src/share/classes/java/lang/invoke/MethodHandleStatics.java +++ b/jdk/src/share/classes/java/lang/invoke/MethodHandleStatics.java @@ -93,6 +93,12 @@ import sun.misc.Unsafe; } // 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) { return new IllegalStateException(message); } @@ -109,7 +115,7 @@ import sun.misc.Unsafe; return new IllegalArgumentException(message(message, obj, obj2)); } /*non-public*/ static Error uncaughtException(Exception ex) { - throw new InternalError("uncaught exception", ex); + throw newInternalError("uncaught exception", ex); } static Error NYI() { throw new AssertionError("NYI"); diff --git a/jdk/src/share/classes/sun/invoke/util/ValueConversions.java b/jdk/src/share/classes/sun/invoke/util/ValueConversions.java index 1533f4b2ad2..bf8d0336afa 100644 --- a/jdk/src/share/classes/sun/invoke/util/ValueConversions.java +++ b/jdk/src/share/classes/sun/invoke/util/ValueConversions.java @@ -475,7 +475,7 @@ public class ValueConversions { .findStatic(THIS_CLASS, "fillNewTypedArray", MethodType.methodType(Object[].class, Object[].class, Integer.class, Object[].class)); } 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)); MAKE_LIST = IMPL_LOOKUP.findStatic(THIS_CLASS, "makeList", MethodType.methodType(List.class, Object[].class)); } 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); m.setAccessible(true); mh = IMPL_LOOKUP.unreflect(m); - } catch (ReflectiveOperationException | SecurityException ex) { - throw new InternalError(ex); + throw newInternalError(ex); } COLLECT_ARGUMENTS = mh; } @@ -1209,4 +1208,12 @@ public class ValueConversions { private static MethodHandle buildVarargsList(int nargs) { 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); + } } diff --git a/jdk/test/java/lang/invoke/BigArityTest.java b/jdk/test/java/lang/invoke/BigArityTest.java index 9aeaa79af0b..fa4d5975fc4 100644 --- a/jdk/test/java/lang/invoke/BigArityTest.java +++ b/jdk/test/java/lang/invoke/BigArityTest.java @@ -70,7 +70,7 @@ public class BigArityTest { MethodHandles.lookup().unreflect( BigArityTest.class.getDeclaredMethod("hashArguments", Object[].class)); } catch (ReflectiveOperationException ex) { - throw new InternalError(ex); + throw new Error(ex); } } static MethodHandle MH_hashArguments(int arity) { diff --git a/jdk/test/java/lang/invoke/PrivateInvokeTest.java b/jdk/test/java/lang/invoke/PrivateInvokeTest.java index 4741f4b675a..434b8e82ca2 100644 --- a/jdk/test/java/lang/invoke/PrivateInvokeTest.java +++ b/jdk/test/java/lang/invoke/PrivateInvokeTest.java @@ -145,21 +145,21 @@ public class PrivateInvokeTest { MH_DEBUG_STRING = DIRECT_INVOKER_LOOKUP .findVirtual(MethodHandle.class, "debugString", methodType(String.class)); } catch (ReflectiveOperationException ex) { - throw new InternalError(ex); + throw new Error(ex); } } private Object internalMemberName(MethodHandle mh) { try { return MH_INTERNAL_MEMBER_NAME.invokeExact(mh); } catch (Throwable ex) { - throw new InternalError(ex); + throw new Error(ex); } } private String debugString(MethodHandle mh) { try { return (String) MH_DEBUG_STRING.invokeExact(mh); } catch (Throwable ex) { - throw new InternalError(ex); + throw new Error(ex); } } private static MethodHandle directInvoker(int refKind, MethodType mtype) { From 9322a179db0bfe573129237238e69c97423767bf Mon Sep 17 00:00:00 2001 From: Keith McGuigan Date: Mon, 22 Oct 2012 20:12:19 -0400 Subject: [PATCH 3/3] 8001225: Disable jdk regression test java/lang/System/Versions.java until jdk's classfile version code is updated Exclude java/lang/System/Versions.java test Reviewed-by: sspitsyn, coleenp --- jdk/test/ProblemList.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/jdk/test/ProblemList.txt b/jdk/test/ProblemList.txt index 35aaa99f931..23c91cf3a92 100644 --- a/jdk/test/ProblemList.txt +++ b/jdk/test/ProblemList.txt @@ -143,6 +143,11 @@ java/lang/management/MemoryMXBean/CollectionUsageThresholdSerialGC.sh generic-al java/lang/management/MemoryMXBean/MemoryTest.java generic-all java/lang/management/MemoryMXBean/MemoryTestAllGC.sh generic-all +# Exclude until hotspot/jdk repos are sync'd w.r.t. JAVA_MAX_SUPPORTED_VERSION +# Needed when hotspot fix 7054345 is present. Remove when the JDK source is +# updated accordingly. +java/lang/System/Versions.java generic-all + ############################################################################ # jdk_management