RFR (S): 8000999: backport of JSR 292 to 7u
David Holmes
david.holmes at oracle.com
Wed Oct 17 03:59:10 UTC 2012
Hi Christian,
Is this just a preliminary review request, as actual backport requests
have to go to the jdk7u-dev mailing list for approval.
And are these all just bug fixes, or are there any API/spec changes
involved?
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.
>
More information about the core-libs-dev
mailing list