diff -r 920aa833fd16 -r a5c9d63a187d src/share/vm/classfile/verifier.cpp --- a/src/share/vm/classfile/verifier.cpp Sat Jul 17 21:49:23 2010 -0700 +++ b/src/share/vm/classfile/verifier.cpp Tue Jul 20 08:41:42 2010 -0700 @@ -1847,12 +1847,8 @@ if (type == VerificationType::uninitialized_this_type()) { // The method must be an method of either this class, or one of its // superclasses - klassOop oop = current_class()(); - Klass* klass = oop->klass_part(); - while (klass != NULL && ref_class_type.name() != klass->name()) { - klass = klass->super()->klass_part(); - } - if (klass == NULL) { + if (ref_class_type.name() != current_class()->name() && + !name_in_supers(ref_class_type.name(), current_class())) { verify_error(bci, "Bad method call"); return; }