src/share/vm/classfile/verificationType.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/share/vm/classfile/verificationType.cpp	Thu Apr 16 13:30:45 2015
--- new/src/share/vm/classfile/verificationType.cpp	Thu Apr 16 13:30:45 2015

*** 48,72 **** --- 48,72 ---- if (from.is_null()) { // null is assignable to any reference return true; } else if (is_null()) { return false; ! } else if (name() == from.name()) { ! } else if (name()->equals(from.name())) { return true; } else if (is_object()) { // We need check the class hierarchy to check assignability ! if (name() == vmSymbols::java_lang_Object()) { ! if (name()->equals(vmSymbols::java_lang_Object())) { // any object or array is assignable to java.lang.Object return true; } Klass* obj = SystemDictionary::resolve_or_fail( name(), Handle(THREAD, klass->class_loader()), Handle(THREAD, klass->protection_domain()), true, CHECK_false); KlassHandle this_class(THREAD, obj); if (this_class->is_interface() && (!from_field_is_protected || ! from.name() != vmSymbols::java_lang_Object())) { ! from.name()->not_equals(vmSymbols::java_lang_Object()))) { // If we are not trying to access a protected field or method in // java.lang.Object then we treat interfaces as java.lang.Object, // including java.lang.Cloneable and java.io.Serializable. return true; } else if (from.is_object()) {

src/share/vm/classfile/verificationType.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File