RFR 8154587: Resolution fails for default method named 'clone'

David Holmes david.holmes at oracle.com
Sun Dec 3 08:49:51 UTC 2017


Hi Harold,

Can't review the details here as not familiar enough with default method 
rules, but one comment ...

On 1/12/2017 2:15 AM, harold seigel wrote:
> Hi,
> 
> Please review this fix for JDK-8154587.  The fix adds additional special 
> casing to skip over non-public methods in class java.lang.Object during 
> default method and itable processing for interfaces.  These methods need 
> to be skipped over because of the interface method resolution rules in 
> JVM Spec 9, section 5.4.3.4 
> <https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-5.html#jvms-5.4.3.4>: 
> 
> 
>     3. Otherwise, if the class|Object|declares a method with the name
>     and descriptor specified by the interface method reference, which
>     has its|ACC_PUBLIC|flag set and does not have its|ACC_STATIC|flag
>     set, method lookup succeeds.
> 
> Open Webrev: http://cr.openjdk.java.net/~hseigel/bug_8154587/webrev/

... I think in

static bool is_nonpublic_jlo_method(Method* m)

we can spell "jlo" as "Object" (e.g as with Object_klass and 
Object_klass_loaded()).

Thanks,
David

> JBS Bug:  https://bugs.openjdk.java.net/browse/JDK-8154587
> 
> The fix was tested with JCK lang and VM tests, JTReg hotspot and many 
> JTReg JDK tests, M5 tier1 - tier5 tests, and JPRT.
> 
> Thanks, Harold
> 


More information about the hotspot-runtime-dev mailing list