src/share/vm/classfile/classFileParser.cpp

changeset 6242
6795fcebbf42
parent 6241
6fa574bfd32a
parent 5882
1a93f2c5945a
child 6244
0611ce949aaa
     1.1 --- a/src/share/vm/classfile/classFileParser.cpp	Thu Oct 03 19:13:12 2013 +0100
     1.2 +++ b/src/share/vm/classfile/classFileParser.cpp	Mon Oct 21 14:08:09 2013 +0100
     1.3 @@ -1787,7 +1787,7 @@
     1.4      if (_location != _in_method)  break;  // only allow for methods
     1.5      if (!privileged)              break;  // only allow in privileged code
     1.6      return _method_LambdaForm_Hidden;
     1.7 -  case vmSymbols::VM_SYMBOL_ENUM_NAME(sun_invoke_Stable_signature):
     1.8 +  case vmSymbols::VM_SYMBOL_ENUM_NAME(java_lang_invoke_Stable_signature):
     1.9      if (_location != _in_field)   break;  // only allow for fields
    1.10      if (!privileged)              break;  // only allow in privileged code
    1.11      return _field_Stable;
    1.12 @@ -2545,7 +2545,9 @@
    1.13        if (method->is_final()) {
    1.14          *has_final_method = true;
    1.15        }
    1.16 -      if (is_interface && !method->is_abstract() && !method->is_static()) {
    1.17 +      if (is_interface && !(*has_default_methods)
    1.18 +        && !method->is_abstract() && !method->is_static()
    1.19 +        && !method->is_private()) {
    1.20          // default method
    1.21          *has_default_methods = true;
    1.22        }
    1.23 @@ -4078,8 +4080,7 @@
    1.24  
    1.25      // Generate any default methods - default methods are interface methods
    1.26      // that have a default implementation.  This is new with Lambda project.
    1.27 -    if (has_default_methods && !access_flags.is_interface() &&
    1.28 -        local_interfaces->length() > 0) {
    1.29 +    if (has_default_methods && !access_flags.is_interface() ) {
    1.30        DefaultMethods::generate_default_methods(
    1.31            this_klass(), &all_mirandas, CHECK_(nullHandle));
    1.32      }

mercurial