roman_version
565 Klass* super = k->java_super();
566 // super2 is the value computed by the compiler's getSuperClass intrinsic:
567 debug_only(Klass* super2 = ( k->is_array_klass()
568 ? SystemDictionary::Object_klass()
569 : k->super() ) );
570 assert(super == super2,
571 "java_super computation depends on interface, array, other super");
572 obj = (super == NULL) ? NULL : (jclass) JNIHandles::make_local(super->java_mirror());
573 return obj;
574 JNI_END
575
576 JNI_QUICK_ENTRY(jboolean, jni_IsAssignableFrom(JNIEnv *env, jclass sub, jclass super))
577 JNIWrapper("IsSubclassOf");
578
579 HOTSPOT_JNI_ISASSIGNABLEFROM_ENTRY(env, sub, super);
580
581 oop sub_mirror = JNIHandles::resolve_non_null(sub);
582 oop super_mirror = JNIHandles::resolve_non_null(super);
583 if (java_lang_Class::is_primitive(sub_mirror) ||
584 java_lang_Class::is_primitive(super_mirror)) {
585 jboolean ret = (sub_mirror == super_mirror);
586
587 HOTSPOT_JNI_ISASSIGNABLEFROM_RETURN(ret);
588 return ret;
589 }
590 Klass* sub_klass = java_lang_Class::as_Klass(sub_mirror);
591 Klass* super_klass = java_lang_Class::as_Klass(super_mirror);
592 assert(sub_klass != NULL && super_klass != NULL, "invalid arguments to jni_IsAssignableFrom");
593 jboolean ret = sub_klass->is_subtype_of(super_klass) ?
594 JNI_TRUE : JNI_FALSE;
595
596 HOTSPOT_JNI_ISASSIGNABLEFROM_RETURN(ret);
597 return ret;
598 JNI_END
599
600
601 DT_RETURN_MARK_DECL(Throw, jint
602 , HOTSPOT_JNI_THROW_RETURN(_ret_ref));
603
604 JNI_ENTRY(jint, jni_Throw(JNIEnv *env, jthrowable obj))
|
565 Klass* super = k->java_super();
566 // super2 is the value computed by the compiler's getSuperClass intrinsic:
567 debug_only(Klass* super2 = ( k->is_array_klass()
568 ? SystemDictionary::Object_klass()
569 : k->super() ) );
570 assert(super == super2,
571 "java_super computation depends on interface, array, other super");
572 obj = (super == NULL) ? NULL : (jclass) JNIHandles::make_local(super->java_mirror());
573 return obj;
574 JNI_END
575
576 JNI_QUICK_ENTRY(jboolean, jni_IsAssignableFrom(JNIEnv *env, jclass sub, jclass super))
577 JNIWrapper("IsSubclassOf");
578
579 HOTSPOT_JNI_ISASSIGNABLEFROM_ENTRY(env, sub, super);
580
581 oop sub_mirror = JNIHandles::resolve_non_null(sub);
582 oop super_mirror = JNIHandles::resolve_non_null(super);
583 if (java_lang_Class::is_primitive(sub_mirror) ||
584 java_lang_Class::is_primitive(super_mirror)) {
585 jboolean ret = oopDesc::equals(sub_mirror, super_mirror);
586
587 HOTSPOT_JNI_ISASSIGNABLEFROM_RETURN(ret);
588 return ret;
589 }
590 Klass* sub_klass = java_lang_Class::as_Klass(sub_mirror);
591 Klass* super_klass = java_lang_Class::as_Klass(super_mirror);
592 assert(sub_klass != NULL && super_klass != NULL, "invalid arguments to jni_IsAssignableFrom");
593 jboolean ret = sub_klass->is_subtype_of(super_klass) ?
594 JNI_TRUE : JNI_FALSE;
595
596 HOTSPOT_JNI_ISASSIGNABLEFROM_RETURN(ret);
597 return ret;
598 JNI_END
599
600
601 DT_RETURN_MARK_DECL(Throw, jint
602 , HOTSPOT_JNI_THROW_RETURN(_ret_ref));
603
604 JNI_ENTRY(jint, jni_Throw(JNIEnv *env, jthrowable obj))
|
805 HOTSPOT_JNI_DELETEGLOBALREF_RETURN();
806 JNI_END
807
808 JNI_QUICK_ENTRY(void, jni_DeleteLocalRef(JNIEnv *env, jobject obj))
809 JNIWrapper("DeleteLocalRef");
810
811 HOTSPOT_JNI_DELETELOCALREF_ENTRY(env, obj);
812
813 JNIHandles::destroy_local(obj);
814
815 HOTSPOT_JNI_DELETELOCALREF_RETURN();
816 JNI_END
817
818 JNI_QUICK_ENTRY(jboolean, jni_IsSameObject(JNIEnv *env, jobject r1, jobject r2))
819 JNIWrapper("IsSameObject");
820
821 HOTSPOT_JNI_ISSAMEOBJECT_ENTRY(env, r1, r2);
822
823 oop a = JNIHandles::resolve(r1);
824 oop b = JNIHandles::resolve(r2);
825 jboolean ret = (a == b) ? JNI_TRUE : JNI_FALSE;
826
827 HOTSPOT_JNI_ISSAMEOBJECT_RETURN(ret);
828 return ret;
829 JNI_END
830
831
832 JNI_ENTRY(jobject, jni_NewLocalRef(JNIEnv *env, jobject ref))
833 JNIWrapper("NewLocalRef");
834
835 HOTSPOT_JNI_NEWLOCALREF_ENTRY(env, ref);
836
837 jobject ret = JNIHandles::make_local(env, JNIHandles::resolve(ref));
838
839 HOTSPOT_JNI_NEWLOCALREF_RETURN(ret);
840 return ret;
841 JNI_END
842
843 JNI_LEAF(jint, jni_EnsureLocalCapacity(JNIEnv *env, jint capacity))
844 JNIWrapper("EnsureLocalCapacity");
|
805 HOTSPOT_JNI_DELETEGLOBALREF_RETURN();
806 JNI_END
807
808 JNI_QUICK_ENTRY(void, jni_DeleteLocalRef(JNIEnv *env, jobject obj))
809 JNIWrapper("DeleteLocalRef");
810
811 HOTSPOT_JNI_DELETELOCALREF_ENTRY(env, obj);
812
813 JNIHandles::destroy_local(obj);
814
815 HOTSPOT_JNI_DELETELOCALREF_RETURN();
816 JNI_END
817
818 JNI_QUICK_ENTRY(jboolean, jni_IsSameObject(JNIEnv *env, jobject r1, jobject r2))
819 JNIWrapper("IsSameObject");
820
821 HOTSPOT_JNI_ISSAMEOBJECT_ENTRY(env, r1, r2);
822
823 oop a = JNIHandles::resolve(r1);
824 oop b = JNIHandles::resolve(r2);
825 jboolean ret = oopDesc::equals(a, b) ? JNI_TRUE : JNI_FALSE;
826
827 HOTSPOT_JNI_ISSAMEOBJECT_RETURN(ret);
828 return ret;
829 JNI_END
830
831
832 JNI_ENTRY(jobject, jni_NewLocalRef(JNIEnv *env, jobject ref))
833 JNIWrapper("NewLocalRef");
834
835 HOTSPOT_JNI_NEWLOCALREF_ENTRY(env, ref);
836
837 jobject ret = JNIHandles::make_local(env, JNIHandles::resolve(ref));
838
839 HOTSPOT_JNI_NEWLOCALREF_RETURN(ret);
840 return ret;
841 JNI_END
842
843 JNI_LEAF(jint, jni_EnsureLocalCapacity(JNIEnv *env, jint capacity))
844 JNIWrapper("EnsureLocalCapacity");
|