--- a/hotspot/src/share/vm/opto/subnode.cpp Tue Mar 24 12:19:47 2009 -0700
+++ b/hotspot/src/share/vm/opto/subnode.cpp Tue Mar 24 15:09:52 2009 -0700
@@ -639,8 +639,8 @@
int kps = (p0->isa_klassptr()?1:0) + (p1->isa_klassptr()?1:0);
if (klass0 && klass1 &&
kps != 1 && // both or neither are klass pointers
- !klass0->is_interface() && // do not trust interfaces
- !klass1->is_interface()) {
+ klass0->is_loaded() && !klass0->is_interface() && // do not trust interfaces
+ klass1->is_loaded() && !klass1->is_interface()) {
bool unrelated_classes = false;
// See if neither subclasses the other, or if the class on top
// is precise. In either of these cases, the compare is known