private static boolean IsAssignableFrom(JNIEnvironment env,int firstClassJREF,int secondClassJREF){
  if (traceJNI)   VM.sysWrite("JNI called: IsAssignableFrom  \n");
  RuntimeEntrypoints.checkJNICountDownToGC();
  try {
    Class<?> cls1=(Class<?>)env.getJNIRef(firstClassJREF);
    Class<?> cls2=(Class<?>)env.getJNIRef(secondClassJREF);
    return !(cls1 == null || cls2 == null) && cls2.isAssignableFrom(cls1);
  }
 catch (  Throwable unexpected) {
    if (traceJNI)     unexpected.printStackTrace(System.err);
    env.recordException(unexpected);
    return false;
  }
}

private static boolean IsAssignableFrom ( JNIEnvironment env , int firstClassJREF , int secondClassJREF ) { if ( traceJNI ) VM . sysWrite ( "JNI called: IsAssignableFrom  \n" ) ; RuntimeEntrypoints . checkJNICountDownToGC ( ) ; try { Class < ? > cls1 = ( Class < ? > ) env . getJNIRef ( firstClassJREF ) ; Class < ? > cls2 = ( Class < ? > ) env . getJNIRef ( secondClassJREF ) ; return ! ( cls1 == null || cls2 == null ) && cls2 . isAssignableFrom ( cls1 ) ; } catch ( Throwable unexpected ) { if ( traceJNI ) unexpected . printStackTrace ( System . err ) ; env . recordException ( unexpected ) ; return false ; } }
isassignablefrom : determine if an an object of class or interface cls1 can be cast to the class or interface cls2
