637 ciKlass* klass1 = p1->klass(); |
637 ciKlass* klass1 = p1->klass(); |
638 bool xklass1 = p1->klass_is_exact(); |
638 bool xklass1 = p1->klass_is_exact(); |
639 int kps = (p0->isa_klassptr()?1:0) + (p1->isa_klassptr()?1:0); |
639 int kps = (p0->isa_klassptr()?1:0) + (p1->isa_klassptr()?1:0); |
640 if (klass0 && klass1 && |
640 if (klass0 && klass1 && |
641 kps != 1 && // both or neither are klass pointers |
641 kps != 1 && // both or neither are klass pointers |
642 !klass0->is_interface() && // do not trust interfaces |
642 klass0->is_loaded() && !klass0->is_interface() && // do not trust interfaces |
643 !klass1->is_interface()) { |
643 klass1->is_loaded() && !klass1->is_interface()) { |
644 bool unrelated_classes = false; |
644 bool unrelated_classes = false; |
645 // See if neither subclasses the other, or if the class on top |
645 // See if neither subclasses the other, or if the class on top |
646 // is precise. In either of these cases, the compare is known |
646 // is precise. In either of these cases, the compare is known |
647 // to fail if at least one of the pointers is provably not null. |
647 // to fail if at least one of the pointers is provably not null. |
648 if (klass0->equals(klass1) || // if types are unequal but klasses are |
648 if (klass0->equals(klass1) || // if types are unequal but klasses are |