Merge
diff --git a/.hgtags b/.hgtags
index 804a1e6..c0a4c32 100644
--- a/.hgtags
+++ b/.hgtags
@@ -182,3 +182,4 @@
d94613ac03d8de375ef60493e2bb76dbd30d875d jdk8-b58
abad1f417bd3df4296631fc943cd3b7f5062c88a jdk8-b59
cec8fa02f15634acd7d02d04b0b2d8c044cdbaaa jdk8-b60
+61ddb3fd000a09ab05bff1940b0ac211661e94cf jdk8-b61
diff --git a/src/share/classes/java/lang/invoke/BoundMethodHandle.java b/src/share/classes/java/lang/invoke/BoundMethodHandle.java
index 4071305..dfc6e9d 100644
--- a/src/share/classes/java/lang/invoke/BoundMethodHandle.java
+++ b/src/share/classes/java/lang/invoke/BoundMethodHandle.java
@@ -79,7 +79,7 @@
default : throw new InternalError("unexpected xtype: " + xtype);
}
} catch (Throwable t) {
- throw new InternalError(t);
+ throw newInternalError(t);
}
}
@@ -97,7 +97,7 @@
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 @@
try {
return clone(srcType, form);
} catch (Throwable t) {
- throw new InternalError(t);
+ throw newInternalError(t);
}
}
@@ -124,7 +124,7 @@
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 @@
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 @@
try {
return (MethodHandle) argL(0);
} catch (Throwable ex) {
- throw new InternalError(ex);
+ throw newInternalError(ex);
}
}
@@ -464,7 +464,7 @@
}
}
} catch (Throwable e) {
- throw new InternalError(e);
+ throw newInternalError(e);
}
for (SpeciesData d : CACHE.values()) {
@@ -748,7 +748,7 @@
try {
return LOOKUP.findGetter(cbmhClass, fieldName, fieldType);
} catch (NoSuchFieldException | IllegalAccessException e) {
- throw new InternalError(e);
+ throw newInternalError(e);
}
}
@@ -776,7 +776,7 @@
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 @@
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 @@
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/src/share/classes/java/lang/invoke/CallSite.java b/src/share/classes/java/lang/invoke/CallSite.java
index 7beb101..5d637b9 100644
--- a/src/share/classes/java/lang/invoke/CallSite.java
+++ b/src/share/classes/java/lang/invoke/CallSite.java
@@ -222,7 +222,7 @@
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/src/share/classes/java/lang/invoke/DirectMethodHandle.java b/src/share/classes/java/lang/invoke/DirectMethodHandle.java
index b1c7f82..2adc8e8 100644
--- a/src/share/classes/java/lang/invoke/DirectMethodHandle.java
+++ b/src/share/classes/java/lang/invoke/DirectMethodHandle.java
@@ -218,7 +218,7 @@
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 @@
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 @@
nf.resolve();
}
} catch (ReflectiveOperationException ex) {
- throw new InternalError(ex);
+ throw newInternalError(ex);
}
}
}
diff --git a/src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java b/src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java
index 48f88ad..0def847 100644
--- a/src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java
+++ b/src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java
@@ -138,7 +138,7 @@
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 @@
file.close();
return null;
} catch (IOException ex) {
- throw new InternalError(ex);
+ throw newInternalError(ex);
}
}
});
@@ -279,7 +279,7 @@
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/src/share/classes/java/lang/invoke/Invokers.java b/src/share/classes/java/lang/invoke/Invokers.java
index 0e3dcf6..0e40396 100644
--- a/src/share/classes/java/lang/invoke/Invokers.java
+++ b/src/share/classes/java/lang/invoke/Invokers.java
@@ -27,6 +27,7 @@
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 @@
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 @@
.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 @@
.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 @@
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 @@
NF_getCallSiteTarget.resolve();
// bound
} catch (ReflectiveOperationException ex) {
- throw new InternalError(ex);
+ throw newInternalError(ex);
}
}
diff --git a/src/share/classes/java/lang/invoke/LambdaForm.java b/src/share/classes/java/lang/invoke/LambdaForm.java
index e39896a..f1da243 100644
--- a/src/share/classes/java/lang/invoke/LambdaForm.java
+++ b/src/share/classes/java/lang/invoke/LambdaForm.java
@@ -457,7 +457,7 @@
isCompiled = true;
return vmentry;
} catch (Error | Exception ex) {
- throw new InternalError(this.toString(), ex);
+ throw newInternalError(this.toString(), ex);
}
}
@@ -1547,7 +1547,7 @@
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/src/share/classes/java/lang/invoke/MemberName.java b/src/share/classes/java/lang/invoke/MemberName.java
index 595b114..e2bd9b0 100644
--- a/src/share/classes/java/lang/invoke/MemberName.java
+++ b/src/share/classes/java/lang/invoke/MemberName.java
@@ -558,7 +558,7 @@
try {
return (MemberName) super.clone();
} catch (CloneNotSupportedException ex) {
- throw new InternalError(ex);
+ throw newInternalError(ex);
}
}
diff --git a/src/share/classes/java/lang/invoke/MethodHandle.java b/src/share/classes/java/lang/invoke/MethodHandle.java
index a5e4e58..2a6b8c1 100644
--- a/src/share/classes/java/lang/invoke/MethodHandle.java
+++ b/src/share/classes/java/lang/invoke/MethodHandle.java
@@ -1372,7 +1372,7 @@
NF_reinvokerTarget = new LambdaForm.NamedFunction(MethodHandle.class
.getDeclaredMethod("reinvokerTarget"));
} catch (ReflectiveOperationException ex) {
- throw new InternalError(ex);
+ throw newInternalError(ex);
}
}
@@ -1397,7 +1397,7 @@
try {
FORM_OFFSET = UNSAFE.objectFieldOffset(MethodHandle.class.getDeclaredField("form"));
} catch (ReflectiveOperationException ex) {
- throw new InternalError(ex);
+ throw newInternalError(ex);
}
}
}
diff --git a/src/share/classes/java/lang/invoke/MethodHandleImpl.java b/src/share/classes/java/lang/invoke/MethodHandleImpl.java
index d9822bd..636bfeb 100644
--- a/src/share/classes/java/lang/invoke/MethodHandleImpl.java
+++ b/src/share/classes/java/lang/invoke/MethodHandleImpl.java
@@ -478,7 +478,7 @@
.getDeclaredMethod("checkSpreadArgument", Object.class, int.class));
NF_checkSpreadArgument.resolve();
} catch (ReflectiveOperationException ex) {
- throw new InternalError(ex);
+ throw newInternalError(ex);
}
}
diff --git a/src/share/classes/java/lang/invoke/MethodHandleStatics.java b/src/share/classes/java/lang/invoke/MethodHandleStatics.java
index 3db5712..1c069aa 100644
--- a/src/share/classes/java/lang/invoke/MethodHandleStatics.java
+++ b/src/share/classes/java/lang/invoke/MethodHandleStatics.java
@@ -93,6 +93,12 @@
}
// 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 @@
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/src/share/classes/sun/invoke/util/ValueConversions.java b/src/share/classes/sun/invoke/util/ValueConversions.java
index 1533f4b..bf8d033 100644
--- a/src/share/classes/sun/invoke/util/ValueConversions.java
+++ b/src/share/classes/sun/invoke/util/ValueConversions.java
@@ -475,7 +475,7 @@
.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 @@
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 @@
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 @@
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/test/ProblemList.txt b/test/ProblemList.txt
index 35aaa99..23c91cf 100644
--- a/test/ProblemList.txt
+++ b/test/ProblemList.txt
@@ -143,6 +143,11 @@
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
diff --git a/test/java/lang/invoke/BigArityTest.java b/test/java/lang/invoke/BigArityTest.java
index 9aeaa79..fa4d597 100644
--- a/test/java/lang/invoke/BigArityTest.java
+++ b/test/java/lang/invoke/BigArityTest.java
@@ -70,7 +70,7 @@
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/test/java/lang/invoke/PrivateInvokeTest.java b/test/java/lang/invoke/PrivateInvokeTest.java
index 4741f4b..434b8e8 100644
--- a/test/java/lang/invoke/PrivateInvokeTest.java
+++ b/test/java/lang/invoke/PrivateInvokeTest.java
@@ -145,21 +145,21 @@
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) {