< prev index next >

src/hotspot/share/prims/jni.cpp

Print this page
rev 55127 : 8223351: [lworld] Primary mirror and nullable mirror for inline type
Reviewed-by: tbd

*** 56,65 **** --- 56,66 ---- #include "oops/objArrayOop.inline.hpp" #include "oops/oop.inline.hpp" #include "oops/symbol.hpp" #include "oops/typeArrayKlass.hpp" #include "oops/typeArrayOop.inline.hpp" + #include "oops/valueKlass.hpp" #include "prims/jniCheck.hpp" #include "prims/jniExport.hpp" #include "prims/jniFastGetField.hpp" #include "prims/jvm_misc.hpp" #include "prims/jvmtiExport.hpp"
*** 580,590 **** Klass* sub_klass = java_lang_Class::as_Klass(sub_mirror); Klass* super_klass = java_lang_Class::as_Klass(super_mirror); assert(sub_klass != NULL && super_klass != NULL, "invalid arguments to jni_IsAssignableFrom"); jboolean ret = sub_klass->is_subtype_of(super_klass) ? JNI_TRUE : JNI_FALSE; ! HOTSPOT_JNI_ISASSIGNABLEFROM_RETURN(ret); return ret; JNI_END --- 581,599 ---- Klass* sub_klass = java_lang_Class::as_Klass(sub_mirror); Klass* super_klass = java_lang_Class::as_Klass(super_mirror); assert(sub_klass != NULL && super_klass != NULL, "invalid arguments to jni_IsAssignableFrom"); jboolean ret = sub_klass->is_subtype_of(super_klass) ? JNI_TRUE : JNI_FALSE; ! if (sub_klass == super_klass && sub_klass->is_value()) { ! // for inline class, V <: V? ! ValueKlass* vk = ValueKlass::cast(InstanceKlass::cast(sub_klass)); ! if (sub_mirror == super_mirror || (sub_mirror == vk->value_mirror() && super_mirror == vk->nullable_mirror())) { ! ret = JNI_TRUE; ! } else { ! ret = JNI_FALSE; ! } ! } HOTSPOT_JNI_ISASSIGNABLEFROM_RETURN(ret); return ret; JNI_END
< prev index next >