[8] RFR (XS): 8031695: CHA ignores default methods during analysis leading to incorrect code generation (original) (raw)
John Rose john.r.rose at oracle.com
Wed Jan 22 10:09:29 PST 2014
- Previous message: [8] RFR (XS): 8031695: CHA ignores default methods during analysis leading to incorrect code generation
- Next message: [8] RFR (XS): 8031695: CHA ignores default methods during analysis leading to incorrect code generation
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Good fix; reviewed. — John
On Jan 22, 2014, at 9:29 AM, Vladimir Ivanov <vladimir.x.ivanov at oracle.com> wrote:
http://cr.openjdk.java.net/~vlivanov/8031695/webrev.00/ https://bugs.openjdk.java.net/browse/JDK-8031695
CHA erroneously ignores default methods when looking for different versions of a method in a class hierarchy. Consider the following hierarchy: interface I { default void m() { ... }} class A implements I {} class C extends A { } class D extends A { public void m() { ... } } Call site: invokevirtual A.m() A.m resolves to I.m. Searching from A, CHA finds only D.m and concludes that D.m is the only implementation of I.m, since Dependencies::isconcretemethod returns false for I.m. But there is C with default implementation from I. So, if VM inlines D.m and then C's instance is passed as objectref, the wrong method is invoked (D.m instead of I.m). The fix is to take default methods into account doing CHA analysis and treat the call site as non-monomorphic when a concrete method is found for a default method. Conservative approach is chosen, since the fix is targeted for 8. Testing: failing application, regression test, vm.defmeth.testlist, JDK regression tests (java/util/, java/lang) Thanks! Best regards, Vladimir Ivanov
- Previous message: [8] RFR (XS): 8031695: CHA ignores default methods during analysis leading to incorrect code generation
- Next message: [8] RFR (XS): 8031695: CHA ignores default methods during analysis leading to incorrect code generation
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]