src/hotspot/share/code/dependencies.cpp
changeset 50735 2f2af62dfac7
parent 49902 3661f31c6df4
child 54721 3661ad97da8f
equal deleted inserted replaced
50734:0828a0f6676b 50735:2f2af62dfac7
    31 #include "code/dependencies.hpp"
    31 #include "code/dependencies.hpp"
    32 #include "compiler/compileLog.hpp"
    32 #include "compiler/compileLog.hpp"
    33 #include "compiler/compileBroker.hpp"
    33 #include "compiler/compileBroker.hpp"
    34 #include "compiler/compileTask.hpp"
    34 #include "compiler/compileTask.hpp"
    35 #include "memory/resourceArea.hpp"
    35 #include "memory/resourceArea.hpp"
       
    36 #include "oops/klass.hpp"
    36 #include "oops/oop.inline.hpp"
    37 #include "oops/oop.inline.hpp"
    37 #include "oops/objArrayKlass.hpp"
    38 #include "oops/objArrayKlass.hpp"
    38 #include "runtime/flags/flagSetting.hpp"
    39 #include "runtime/flags/flagSetting.hpp"
    39 #include "runtime/handles.hpp"
    40 #include "runtime/handles.hpp"
    40 #include "runtime/handles.inline.hpp"
    41 #include "runtime/handles.inline.hpp"
  1226     if (doing_subtype_search()) {
  1227     if (doing_subtype_search()) {
  1227       return Dependencies::is_concrete_klass(k);
  1228       return Dependencies::is_concrete_klass(k);
  1228     } else if (!k->is_instance_klass()) {
  1229     } else if (!k->is_instance_klass()) {
  1229       return false; // no methods to find in an array type
  1230       return false; // no methods to find in an array type
  1230     } else {
  1231     } else {
  1231       // Search class hierarchy first.
  1232       // Search class hierarchy first, skipping private implementations
  1232       Method* m = InstanceKlass::cast(k)->find_instance_method(_name, _signature);
  1233       // as they never override any inherited methods
       
  1234       Method* m = InstanceKlass::cast(k)->find_instance_method(_name, _signature, Klass::skip_private);
  1233       if (!Dependencies::is_concrete_method(m, k)) {
  1235       if (!Dependencies::is_concrete_method(m, k)) {
  1234         // Check for re-abstraction of method
  1236         // Check for re-abstraction of method
  1235         if (!k->is_interface() && m != NULL && m->is_abstract()) {
  1237         if (!k->is_interface() && m != NULL && m->is_abstract()) {
  1236           // Found a matching abstract method 'm' in the class hierarchy.
  1238           // Found a matching abstract method 'm' in the class hierarchy.
  1237           // This is fine iff 'k' is an abstract class and all concrete subtypes
  1239           // This is fine iff 'k' is an abstract class and all concrete subtypes