S RFR: 8027304: Lambda: inheriting abstract and default should invoke default, not ICCE

Karen Kinnear karen.kinnear at oracle.com
Wed Oct 30 19:43:54 PDT 2013


David,

I had missed your review - sorry. And you were correct, and Zhengyu's suggestion of a count fixed this problem.
Thank you for catching it - sorry I missed your review.

thanks,
Karen

On Oct 29, 2013, at 11:30 PM, David Holmes wrote:

> Hi Karen,
> 
> On 30/10/2013 12:55 PM, Karen Kinnear wrote:
>> webrev: http://cr.openjdk.java.net/~acorn/8027304/webrev/
>> bug: http://bugs.openjdk.java.net/browse/JDK-8027304
>> 
>> Bug in default method handling due to specification misinterpretation if there is one maximally-specific default method,
>> but no one maximally specific method based on default method inheritance rules.
>> Inheritiing abstract and default should invoke default, rather than IncompatibleClassChangeError.
> 
> I'm not quite sure how to interpret that :) Can you point to the specific resolution rules that are intended to apply here please.
> 
> This code:
> 
> 397     for (int i = 0; i < _members.length(); ++i) {
> 398       Pair<Method*,QualifiedState> entry = _members.at(i);
> 399       if (entry.second == QUALIFIED) {
> 400         qualified_methods.append(entry.first);
> 401         default_index++;
> 402         if (entry.first->is_default_method()) {
> 403           unique_default = (unique_default == false) ? true : false;
> 404         }
> 405       }
> 406     }
> 
> will toggle unique_default depending on the number of default methods found:
> - 1,3,5 ... true
> - 2,4,6 ... false
> 
> is there something that limits the number of potential methods to only two? Otherwise this seems wrong.
> 
> Thanks,
> David
> 
>> Tested:
>> Fixed vm defmeth ConflictingDefaultsTest testAmbiguousReabstract (renamed to testMaximallySpecificDefault)
>> jdk DefaultMethodsTest, FDSeparateCompilationTest
>> jck lang, vm
>> jtreg java.util, java.lang
>> vm.quick.testlist
>> 
>> thanks,
>> Karen
>> 



More information about the hotspot-runtime-dev mailing list