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