< prev index next >

src/hotspot/share/prims/jni.cpp

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");
< prev index next >