RFR: 8043275 8u40 backport: Interface initialization for default methods

Karen Kinnear karen.kinnear at oracle.com
Fri Oct 24 18:24:34 UTC 2014


Dan,

Thank you again. Copying Coleen since the 8035132 fix was hers

Yes, InvokespecialInterface.java fix was part of 8035132 which has a request on it to backport.
I assumed you meant that backport should be done separately from this push so that folks
tracking the backport would be clear.

If I can do an hg commit with two bugids I can push that change to 8u40 as well, but
I don't know if our tools will automatically update the 8035132 bug report  or if we are
better off leaving that change for a separate commit. 

I am also not backporting this change to any other version.

Do you know what works best here?

thanks,
Karen

On Oct 24, 2014, at 1:24 PM, Daniel D. Daugherty wrote:

> 
> On 10/24/14 11:17 AM, Daniel D. Daugherty wrote:
>> This URL should work:
>> 
>> http://cr.openjdk.java.net/~acorn/8043275.8u40.2/webrev/
> 
> src/share/vm/classfile/classFileParser.cpp
>    No comments.
> 
> src/share/vm/classfile/classFileParser.hpp
>    No comments.
> 
> src/share/vm/oops/instanceKlass.cpp
>    No comments.
> 
> src/share/vm/oops/instanceKlass.hpp
>    No comments.
> 
> test/runtime/lambda-features/InvokespecialInterface.java
>    Sorry, I didn't mean for you to back out this change:
> 
> - * @run main/othervm -XX:+StressRewriter InvokespecialInterface
> + * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:+StressRewriter InvokespecialInterface
> 
>    That change was not part of your JDK9 patch that bug had
>    been fixed in JDK9 before your changes. I think you do need
>    to make the above change for 8u40.
> 
> test/runtime/lambda-features/TestInterfaceInit.java
>    No comments.
> 
> test/runtime/lambda-features/TestInterfaceOrder.java
>    No comments.
> 
> Dan
> 
> 
> 
>> 
>> Dan
>> 
>> 
>> On 10/24/14 11:05 AM, Karen Kinnear wrote:
>>> Dan,
>>> 
>>> Many many thanks - good catches!
>>> 
>>> Updated webrev: http://cr.openjdk.java.net/~acorn/8043275.uu40.2/webrev
>>> 
>>> thanks,
>>> Karen
>>> 
>>> On Oct 24, 2014, at 12:40 PM, Daniel D. Daugherty wrote:
>>> 
>>>> On 10/24/14 10:06 AM, Karen Kinnear wrote:
>>>>> Please review 8u40 backport:
>>>>> 
>>>>> webrev: http://cr.openjdk.java.net/~acorn/8043275.8u40/webrev/
>>>> I compared the JDK9-hs-rt version with the JDK8u40-hs version.
>>>> 
>>>> src/share/vm/classfile/classFileParser.cpp
>>>>    No comments.
>>>> 
>>>> src/share/vm/classfile/classFileParser.hpp
>>>>    No comments.
>>>> 
>>>> src/share/vm/oops/instanceKlass.cpp
>>>> 
>>>> 799         if (HAS_PENDING_EXCEPTION) {
>>>> 800           Handle e(THREAD, PENDING_EXCEPTION);
>>>> 801           CLEAR_PENDING_EXCEPTION;
>>>> 802           {
>>>> 803             EXCEPTION_MARK;
>>>> 804             // Locks object, set state, and notify all waiting threads
>>>> 805 this_oop->set_initialization_state_and_notify(
>>>> 806                 initialization_error, THREAD);
>>>> 807
>>>> 808             // ignore any exception thrown, superclass initialization error is
>>>> 809             // thrown below
>>>> 810             CLEAR_PENDING_EXCEPTION;
>>>> 811           }
>>>> 812         }
>>>> 
>>>>    The JDK9 version has this between lines 811 and 812:
>>>> 
>>>>        THROW_OOP(e());
>>>> 
>>>>    Is there reason for the difference?
>>> Bad manual merge
>>>> src/share/vm/oops/instanceKlass.hpp
>>>>    No comments.
>>>> 
>>>> src/share/vm/utilities/dtrace_disabled.hpp
>>>>    The JDK9 patch modified this file, but the file doesn't
>>>>    exist in JDK8u40-hs.
>>> That was a comment spelling fix - I was in there for another reason which
>>> I ended up not needing. Change isn't needed in 8u40.
>>>> test/runtime/lambda-features/InvokespecialInterface.java
>>>>    The @run changes already existed in JDK9 before your patch.
>>> I undid those
>>>> test/runtime/lambda-features/TestInterfaceInit.java
>>>> 
>>>>    The second line has a blank at the end of it:
>>>> 
>>>>    +   public static void main(String[] args) {
>>>>    +       // Trigger initialization
>>> Fixed
>>>> test/runtime/lambda-features/TestInterfaceOrder.java
>>>>    No comments.
>>>> 
>>>> Dan
>>>> 
>>>> 
>>>>> bug: https://bugs.openjdk.java.net/browse/JDK-8043275
>>>>> 
>>>>> Summary:
>>>>>  Fix superinterface initialization to be based on declaring a non-static instance method rather than
>>>>> on declaring or inheriting one
>>>>> 
>>>>> Tested (linux-x64) 8u40:
>>>>> jtreg hotspot lambda-features which includes the two new tests: TestInterfaceInit and TestInterfaceOrder
>>>>> InvokespecialInterface was changed to use nested classes so there is no name conflict for C.class in that directory
>>>>> 
>>>>> thanks,
>>>>> Karen
>> 
> 



More information about the hotspot-dev mailing list