RFR (S): 8000999: backport of JSR 292 to 7u

Christian Thalinger christian.thalinger at oracle.com
Wed Oct 17 15:45:00 UTC 2012


On Oct 16, 2012, at 8:59 PM, David Holmes <david.holmes at oracle.com> 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.
>> 



More information about the core-libs-dev mailing list