[vmkit-commits] [vmkit] r143825 - /vmkit/trunk/lib/J3/ClassLib/OpenJDK/OpenJDK.inc

Will Dietz wdietz2 at illinois.edu
Sat Nov 5 14:06:03 PDT 2011


Author: wdietz2
Date: Sat Nov  5 16:06:02 2011
New Revision: 143825

URL: http://llvm.org/viewvc/llvm-project?rev=143825&view=rev
Log:
Impl more JVM_* methods--Is{Interface,Array,Primitive},GetPD,GetCompType

Modified:
    vmkit/trunk/lib/J3/ClassLib/OpenJDK/OpenJDK.inc

Modified: vmkit/trunk/lib/J3/ClassLib/OpenJDK/OpenJDK.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/ClassLib/OpenJDK/OpenJDK.inc?rev=143825&r1=143824&r2=143825&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/ClassLib/OpenJDK/OpenJDK.inc (original)
+++ vmkit/trunk/lib/J3/ClassLib/OpenJDK/OpenJDK.inc Sat Nov  5 16:06:02 2011
@@ -1005,7 +1005,24 @@
 
 JNIEXPORT jboolean JNICALL
 JVM_IsInterface(JNIEnv *env, jclass cls) {
-  NYI();
+  jboolean res = JNI_FALSE;
+
+  JavaObject * Cl = 0;
+  llvm_gcroot(Cl, 0);
+  BEGIN_JNI_EXCEPTION
+
+  Cl = *(JavaObject**)cls;
+
+  Jnjvm* vm = JavaThread::get()->getJVM();
+  UserCommonClass* cl = UserCommonClass::resolvedImplClass(vm, Cl, false);
+
+  res = cl->isInterface();
+
+  RETURN_FROM_JNI(res);
+
+  END_JNI_EXCEPTION
+
+  return JNI_FALSE;
 }
 
 JNIEXPORT jobjectArray JNICALL
@@ -1020,7 +1037,20 @@
 
 JNIEXPORT jobject JNICALL
 JVM_GetProtectionDomain(JNIEnv *env, jclass cls) {
-  NYI();
+  JavaObjectClass * JOC = 0;
+  JavaObject * pd = 0;
+  llvm_gcroot(JOC, 0);
+  llvm_gcroot(pd, 0);
+  BEGIN_JNI_EXCEPTION
+
+  JOC = *(JavaObjectClass**)cls;
+  pd = JavaObjectClass::getProtectionDomain(JOC);
+
+  RETURN_FROM_JNI((jobject)th->pushJNIRef(pd));
+
+  END_JNI_EXCEPTION
+
+  return 0;
 }
 
 JNIEXPORT void JNICALL
@@ -1030,17 +1060,64 @@
 
 JNIEXPORT jboolean JNICALL
 JVM_IsArrayClass(JNIEnv *env, jclass cls) {
-  NYI();
+  JavaObject * Cl = 0;
+  llvm_gcroot(Cl, 0);
+  BEGIN_JNI_EXCEPTION
+
+  Cl = *(JavaObject**)cls;
+
+  Jnjvm* vm = JavaThread::get()->getJVM();
+  UserCommonClass* cl = UserCommonClass::resolvedImplClass(vm, Cl, false);
+
+  RETURN_FROM_JNI(cl->isArray());
+
+  END_JNI_EXCEPTION
+
+  return JNI_FALSE;
 }
 
 JNIEXPORT jboolean JNICALL
 JVM_IsPrimitiveClass(JNIEnv *env, jclass cls) {
-  NYI();
+  JavaObject * Cl = 0;
+  llvm_gcroot(Cl, 0);
+  BEGIN_JNI_EXCEPTION
+
+  Cl = *(JavaObject**)cls;
+
+  Jnjvm* vm = JavaThread::get()->getJVM();
+  UserCommonClass* cl = UserCommonClass::resolvedImplClass(vm, Cl, false);
+
+  RETURN_FROM_JNI(cl->isPrimitive());
+
+  END_JNI_EXCEPTION
+
+  return JNI_FALSE;
 }
 
 JNIEXPORT jclass JNICALL
 JVM_GetComponentType(JNIEnv *env, jclass cls) {
-  NYI();
+  JavaObject * Cl = 0;
+  JavaObject* res = 0;
+  llvm_gcroot(Cl, 0);
+  llvm_gcroot(res, 0);
+  BEGIN_JNI_EXCEPTION
+
+  Cl = *(JavaObject**)cls;
+  Jnjvm* vm = JavaThread::get()->getJVM();
+  UserCommonClass* cl = UserCommonClass::resolvedImplClass(vm, Cl, false);
+
+  if (cl->isArray()) {
+    UserCommonClass* bc = cl->asArrayClass()->baseClass();
+    res = (JavaObject*)bc->getClassDelegateePtr(vm);
+  } else {
+    res = 0;
+  }
+
+  RETURN_FROM_JNI((jclass)res);
+
+  END_JNI_EXCEPTION
+
+  return 0;
 }
 
 JNIEXPORT jint JNICALL





More information about the vmkit-commits mailing list