Merge

Mon, 16 Sep 2013 15:24:11 -0700

author
acorn
date
Mon, 16 Sep 2013 15:24:11 -0700
changeset 5682
921967020b3b
parent 5680
4472884d8b37
parent 5681
42863137168c
child 5684
535973ddf22c

Merge

     1.1 --- a/src/share/vm/classfile/defaultMethods.cpp	Mon Sep 16 12:43:34 2013 -0700
     1.2 +++ b/src/share/vm/classfile/defaultMethods.cpp	Mon Sep 16 15:24:11 2013 -0700
     1.3 @@ -450,6 +450,10 @@
     1.4      streamIndentor si(str, indent * 2);
     1.5      str->indent().print("Selected method: ");
     1.6      print_method(str, _selected_target);
     1.7 +    Klass* method_holder = _selected_target->method_holder();
     1.8 +    if (!method_holder->is_interface()) {
     1.9 +      tty->print(" : in superclass");
    1.10 +    }
    1.11      str->print_cr("");
    1.12    }
    1.13  
    1.14 @@ -1141,19 +1145,23 @@
    1.15  #endif // ndef PRODUCT
    1.16        if (method->has_target()) {
    1.17          Method* selected = method->get_selected_target();
    1.18 -        max_stack = assemble_redirect(
    1.19 +        if (selected->method_holder()->is_interface()) {
    1.20 +          max_stack = assemble_redirect(
    1.21              &bpool, &buffer, slot->signature(), selected, CHECK);
    1.22 +        }
    1.23        } else if (method->throws_exception()) {
    1.24          max_stack = assemble_abstract_method_error(
    1.25              &bpool, &buffer, method->get_exception_message(), CHECK);
    1.26        }
    1.27 -      AccessFlags flags = accessFlags_from(
    1.28 +      if (max_stack != 0) {
    1.29 +        AccessFlags flags = accessFlags_from(
    1.30            JVM_ACC_PUBLIC | JVM_ACC_SYNTHETIC | JVM_ACC_BRIDGE);
    1.31 -      Method* m = new_method(&bpool, &buffer, slot->name(), slot->signature(),
    1.32 +        Method* m = new_method(&bpool, &buffer, slot->name(), slot->signature(),
    1.33            flags, max_stack, slot->size_of_parameters(),
    1.34            ConstMethod::OVERPASS, CHECK);
    1.35 -      if (m != NULL) {
    1.36 -        overpasses.push(m);
    1.37 +        if (m != NULL) {
    1.38 +          overpasses.push(m);
    1.39 +        }
    1.40        }
    1.41      }
    1.42    }

mercurial