< prev index next >

src/hotspot/share/prims/jni.cpp

Print this page
rev 49250 : [mq]: JDK-8199781.patch


 566   Klass* super = k->java_super();
 567   // super2 is the value computed by the compiler's getSuperClass intrinsic:
 568   debug_only(Klass* super2 = ( k->is_array_klass()
 569                                  ? SystemDictionary::Object_klass()
 570                                  : k->super() ) );
 571   assert(super == super2,
 572          "java_super computation depends on interface, array, other super");
 573   obj = (super == NULL) ? NULL : (jclass) JNIHandles::make_local(super->java_mirror());
 574   return obj;
 575 JNI_END
 576 
 577 JNI_QUICK_ENTRY(jboolean, jni_IsAssignableFrom(JNIEnv *env, jclass sub, jclass super))
 578   JNIWrapper("IsSubclassOf");
 579 
 580   HOTSPOT_JNI_ISASSIGNABLEFROM_ENTRY(env, sub, super);
 581 
 582   oop sub_mirror   = JNIHandles::resolve_non_null(sub);
 583   oop super_mirror = JNIHandles::resolve_non_null(super);
 584   if (java_lang_Class::is_primitive(sub_mirror) ||
 585       java_lang_Class::is_primitive(super_mirror)) {
 586     jboolean ret = (sub_mirror == super_mirror);
 587 
 588     HOTSPOT_JNI_ISASSIGNABLEFROM_RETURN(ret);
 589     return ret;
 590   }
 591   Klass* sub_klass   = java_lang_Class::as_Klass(sub_mirror);
 592   Klass* super_klass = java_lang_Class::as_Klass(super_mirror);
 593   assert(sub_klass != NULL && super_klass != NULL, "invalid arguments to jni_IsAssignableFrom");
 594   jboolean ret = sub_klass->is_subtype_of(super_klass) ?
 595                    JNI_TRUE : JNI_FALSE;
 596 
 597   HOTSPOT_JNI_ISASSIGNABLEFROM_RETURN(ret);
 598   return ret;
 599 JNI_END
 600 
 601 
 602 DT_RETURN_MARK_DECL(Throw, jint
 603                     , HOTSPOT_JNI_THROW_RETURN(_ret_ref));
 604 
 605 JNI_ENTRY(jint, jni_Throw(JNIEnv *env, jthrowable obj))
 606   JNIWrapper("Throw");


 806   HOTSPOT_JNI_DELETEGLOBALREF_RETURN();
 807 JNI_END
 808 
 809 JNI_QUICK_ENTRY(void, jni_DeleteLocalRef(JNIEnv *env, jobject obj))
 810   JNIWrapper("DeleteLocalRef");
 811 
 812   HOTSPOT_JNI_DELETELOCALREF_ENTRY(env, obj);
 813 
 814   JNIHandles::destroy_local(obj);
 815 
 816   HOTSPOT_JNI_DELETELOCALREF_RETURN();
 817 JNI_END
 818 
 819 JNI_QUICK_ENTRY(jboolean, jni_IsSameObject(JNIEnv *env, jobject r1, jobject r2))
 820   JNIWrapper("IsSameObject");
 821 
 822   HOTSPOT_JNI_ISSAMEOBJECT_ENTRY(env, r1, r2);
 823 
 824   oop a = JNIHandles::resolve(r1);
 825   oop b = JNIHandles::resolve(r2);
 826   jboolean ret = (a == b) ? JNI_TRUE : JNI_FALSE;
 827 
 828   HOTSPOT_JNI_ISSAMEOBJECT_RETURN(ret);
 829   return ret;
 830 JNI_END
 831 
 832 
 833 JNI_ENTRY(jobject, jni_NewLocalRef(JNIEnv *env, jobject ref))
 834   JNIWrapper("NewLocalRef");
 835 
 836   HOTSPOT_JNI_NEWLOCALREF_ENTRY(env, ref);
 837 
 838   jobject ret = JNIHandles::make_local(env, JNIHandles::resolve(ref));
 839 
 840   HOTSPOT_JNI_NEWLOCALREF_RETURN(ret);
 841   return ret;
 842 JNI_END
 843 
 844 JNI_LEAF(jint, jni_EnsureLocalCapacity(JNIEnv *env, jint capacity))
 845   JNIWrapper("EnsureLocalCapacity");
 846 




 566   Klass* super = k->java_super();
 567   // super2 is the value computed by the compiler's getSuperClass intrinsic:
 568   debug_only(Klass* super2 = ( k->is_array_klass()
 569                                  ? SystemDictionary::Object_klass()
 570                                  : k->super() ) );
 571   assert(super == super2,
 572          "java_super computation depends on interface, array, other super");
 573   obj = (super == NULL) ? NULL : (jclass) JNIHandles::make_local(super->java_mirror());
 574   return obj;
 575 JNI_END
 576 
 577 JNI_QUICK_ENTRY(jboolean, jni_IsAssignableFrom(JNIEnv *env, jclass sub, jclass super))
 578   JNIWrapper("IsSubclassOf");
 579 
 580   HOTSPOT_JNI_ISASSIGNABLEFROM_ENTRY(env, sub, super);
 581 
 582   oop sub_mirror   = JNIHandles::resolve_non_null(sub);
 583   oop super_mirror = JNIHandles::resolve_non_null(super);
 584   if (java_lang_Class::is_primitive(sub_mirror) ||
 585       java_lang_Class::is_primitive(super_mirror)) {
 586     jboolean ret = oopDesc::equals(sub_mirror, super_mirror);
 587 
 588     HOTSPOT_JNI_ISASSIGNABLEFROM_RETURN(ret);
 589     return ret;
 590   }
 591   Klass* sub_klass   = java_lang_Class::as_Klass(sub_mirror);
 592   Klass* super_klass = java_lang_Class::as_Klass(super_mirror);
 593   assert(sub_klass != NULL && super_klass != NULL, "invalid arguments to jni_IsAssignableFrom");
 594   jboolean ret = sub_klass->is_subtype_of(super_klass) ?
 595                    JNI_TRUE : JNI_FALSE;
 596 
 597   HOTSPOT_JNI_ISASSIGNABLEFROM_RETURN(ret);
 598   return ret;
 599 JNI_END
 600 
 601 
 602 DT_RETURN_MARK_DECL(Throw, jint
 603                     , HOTSPOT_JNI_THROW_RETURN(_ret_ref));
 604 
 605 JNI_ENTRY(jint, jni_Throw(JNIEnv *env, jthrowable obj))
 606   JNIWrapper("Throw");


 806   HOTSPOT_JNI_DELETEGLOBALREF_RETURN();
 807 JNI_END
 808 
 809 JNI_QUICK_ENTRY(void, jni_DeleteLocalRef(JNIEnv *env, jobject obj))
 810   JNIWrapper("DeleteLocalRef");
 811 
 812   HOTSPOT_JNI_DELETELOCALREF_ENTRY(env, obj);
 813 
 814   JNIHandles::destroy_local(obj);
 815 
 816   HOTSPOT_JNI_DELETELOCALREF_RETURN();
 817 JNI_END
 818 
 819 JNI_QUICK_ENTRY(jboolean, jni_IsSameObject(JNIEnv *env, jobject r1, jobject r2))
 820   JNIWrapper("IsSameObject");
 821 
 822   HOTSPOT_JNI_ISSAMEOBJECT_ENTRY(env, r1, r2);
 823 
 824   oop a = JNIHandles::resolve(r1);
 825   oop b = JNIHandles::resolve(r2);
 826   jboolean ret = oopDesc::equals(a, b) ? JNI_TRUE : JNI_FALSE;
 827 
 828   HOTSPOT_JNI_ISSAMEOBJECT_RETURN(ret);
 829   return ret;
 830 JNI_END
 831 
 832 
 833 JNI_ENTRY(jobject, jni_NewLocalRef(JNIEnv *env, jobject ref))
 834   JNIWrapper("NewLocalRef");
 835 
 836   HOTSPOT_JNI_NEWLOCALREF_ENTRY(env, ref);
 837 
 838   jobject ret = JNIHandles::make_local(env, JNIHandles::resolve(ref));
 839 
 840   HOTSPOT_JNI_NEWLOCALREF_RETURN(ret);
 841   return ret;
 842 JNI_END
 843 
 844 JNI_LEAF(jint, jni_EnsureLocalCapacity(JNIEnv *env, jint capacity))
 845   JNIWrapper("EnsureLocalCapacity");
 846 


< prev index next >