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

Karen Kinnear karen.kinnear at oracle.com
Fri Oct 24 17:05:37 UTC 2014


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