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