changeset 2964:058d6563e93a

7160757: Problem with hotspot/runtime_classfile Summary: Allow only current and super invokespecials of <init> Reviewed-by: never, coleenp, dcubed
author kamg
date Thu, 03 May 2012 15:57:16 -0400
parents 8f86ad60699b
children 6a67d57915ba
files src/share/vm/classfile/verifier.cpp
diffstat 1 files changed, 3 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/vm/classfile/verifier.cpp	Wed Apr 11 17:38:20 2012 -0700
+++ b/src/share/vm/classfile/verifier.cpp	Thu May 03 15:57:16 2012 -0400
@@ -1880,10 +1880,10 @@
   VerificationType type = current_frame->pop_stack(
     VerificationType::reference_check(), CHECK_VERIFY(this));
   if (type == VerificationType::uninitialized_this_type()) {
-    // The method must be an <init> method of either this class, or one of its
-    // superclasses
+    // The method must be an <init> method of this class or its superclass
+    klassOop superk = current_class()->super();
     if (ref_class_type.name() != current_class()->name() &&
-        !name_in_supers(ref_class_type.name(), current_class())) {
+        ref_class_type.name() != superk->klass_part()->name()) {
       verify_error(bci, "Bad <init> method call");
       return;
     }