src/share/vm/opto/subnode.cpp

changeset 1218
a9e116455022
parent 1103
90a66aa50514
child 1279
bd02caa94611
     1.1 --- a/src/share/vm/opto/subnode.cpp	Fri May 08 23:00:08 2009 -0700
     1.2 +++ b/src/share/vm/opto/subnode.cpp	Mon May 11 17:59:54 2009 -0700
     1.3 @@ -640,7 +640,11 @@
     1.4      if (klass0 && klass1 &&
     1.5          kps != 1 &&             // both or neither are klass pointers
     1.6          klass0->is_loaded() && !klass0->is_interface() && // do not trust interfaces
     1.7 -        klass1->is_loaded() && !klass1->is_interface()) {
     1.8 +        klass1->is_loaded() && !klass1->is_interface() &&
     1.9 +        (!klass0->is_obj_array_klass() ||
    1.10 +         !klass0->as_obj_array_klass()->base_element_klass()->is_interface()) &&
    1.11 +        (!klass1->is_obj_array_klass() ||
    1.12 +         !klass1->as_obj_array_klass()->base_element_klass()->is_interface())) {
    1.13        bool unrelated_classes = false;
    1.14        // See if neither subclasses the other, or if the class on top
    1.15        // is precise.  In either of these cases, the compare is known

mercurial