On Oct 16, 2012, at 8:59 PM, David Holmes <[email protected]> wrote:
> Hi Christian, > > Is this just a preliminary review request, as actual backport requests have > to go to the jdk7u-dev mailing list for approval. Kind of. I will pass on the reviewed changes to John Coomes to be integrated in a 7u repository to do PIT. But I guess I have to send a backport request to jdk7u-dev as well. > > And are these all just bug fixes, or are there any API/spec changes involved? No API changes. Just bug fixes (which replaced the whole implementation behind the API). The HotSpot changes are already in HS24. -- Chris > > David > > On 17/10/2012 5:54 AM, Christian Thalinger wrote: >> http://cr.openjdk.java.net/~twisti/8000999 >> >> 8000999: backport of JSR 292 to 7u >> Reviewed-by: >> >> This is an umbrella bug for these changes (which are backported in one >> changeset): >> >> 6983728: JSR 292 remove argument count limitations >> 7128512: Javadoc typo in java.lang.invoke.MethodHandle >> 7117167: Misc warnings in java.lang.invoke and sun.invoke.* >> 7129034: VM crash with a field setter method with a filterArguments >> 7087658: MethodHandles.Lookup.findVirtual is confused by interface methods >> that are multiply inherited >> 7127687: MethodType leaks memory due to interning >> 7023639: JSR 292 method handle invocation needs a fast path for compiled code >> 7188911: nightly failures after JSR 292 lazy method handle update (round 2) >> 7190416: JSR 292: typo in InvokerBytecodeGenerator.getConstantPoolSize >> 7191102: nightly failures after JSR 292 lazy method handle update (round 3) >> 7194612: >> api/java_lang/invoke/MethodHandles/Lookup/index.html#ExceptionsTests[findVirtualNSME] >> fails w/ -esa >> 7194662: JSR 292: PermuteArgsTest times out in nightly test runs >> >> The backport is just copying over the files from JDK 8. That's why the >> webrev is so big and pretty useless. The real changes between 8 and 7 are >> these: >> >> diff -Nur jdk8/src/share/classes/java/lang/invoke/MethodHandleStatics.java >> jdk7u/src/share/classes/java/lang/invoke/MethodHandleStatics.java >> --- jdk8/src/share/classes/java/lang/invoke/MethodHandleStatics.java >> 2012-10-15 12:21:52.806052959 -0700 >> +++ jdk7u/src/share/classes/java/lang/invoke/MethodHandleStatics.java >> 2012-10-16 10:48:29.728257304 -0700 >> @@ -94,10 +94,14 @@ >> >> // handy shared exception makers (they simplify the common case code) >> /*non-public*/ static InternalError newInternalError(String message, >> Throwable cause) { >> - return new InternalError(message, cause); >> + InternalError e = new InternalError(message); >> + e.initCause(cause); >> + return e; >> } >> /*non-public*/ static InternalError newInternalError(Throwable cause) { >> - return new InternalError(cause); >> + InternalError e = new InternalError(); >> + e.initCause(cause); >> + return e; >> } >> /*non-public*/ static RuntimeException newIllegalStateException(String >> message) { >> return new IllegalStateException(message); >> diff -Nur jdk8/src/share/classes/sun/invoke/util/ValueConversions.java >> jdk7u/src/share/classes/sun/invoke/util/ValueConversions.java >> --- jdk8/src/share/classes/sun/invoke/util/ValueConversions.java >> 2012-10-16 10:49:36.081911283 -0700 >> +++ jdk7u/src/share/classes/sun/invoke/util/ValueConversions.java >> 2012-10-16 10:48:19.626424849 -0700 >> @@ -1211,9 +1211,13 @@ >> >> // handy shared exception makers (they simplify the common case code) >> private static InternalError newInternalError(String message, Throwable >> cause) { >> - return new InternalError(message, cause); >> + InternalError e = new InternalError(message); >> + e.initCause(cause); >> + return e; >> } >> private static InternalError newInternalError(Throwable cause) { >> - return new InternalError(cause); >> + InternalError e = new InternalError(); >> + e.initCause(cause); >> + return e; >> } >> } >> diff --git a/src/share/classes/sun/misc/Unsafe.java >> b/src/share/classes/sun/misc/Unsafe.java >> --- a/src/share/classes/sun/misc/Unsafe.java >> +++ b/src/share/classes/sun/misc/Unsafe.java >> @@ -678,6 +678,14 @@ >> public native Object staticFieldBase(Field f); >> >> /** >> + * Detect if the given class may need to be initialized. This is often >> + * needed in conjunction with obtaining the static field base of a >> + * class. >> + * @return false only if a call to {@code ensureClassInitialized} would >> have no effect >> + */ >> + public native boolean shouldBeInitialized(Class c); >> + >> + /** >> * Ensure the given class has been initialized. This is often >> * needed in conjunction with obtaining the static field base of a >> * class. >>
