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

Will Dietz wdietz2 at illinois.edu
Tue Nov 1 13:06:20 PDT 2011


Author: wdietz2
Date: Tue Nov  1 15:06:19 2011
New Revision: 143486

URL: http://llvm.org/viewvc/llvm-project?rev=143486&view=rev
Log:
Impl JVM_DoPrivileged, no actual protection.

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=143486&r1=143485&r2=143486&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/ClassLib/OpenJDK/OpenJDK.inc (original)
+++ vmkit/trunk/lib/J3/ClassLib/OpenJDK/OpenJDK.inc Tue Nov  1 15:06:19 2011
@@ -1143,18 +1143,46 @@
 JNIEXPORT jobject JNICALL
 JVM_DoPrivileged(JNIEnv *env, jclass cls,
                  jobject action, jobject context, jboolean wrapException) {
-  NYI();
+  JavaObject * obj = 0;
+  JavaObject * res = 0;
+  llvm_gcroot(obj, 0);
+  llvm_gcroot(res, 0);
+  BEGIN_JNI_EXCEPTION
+
+  verifyNull(action);
+
+  obj = *(JavaObject**)action;
+
+  Jnjvm* vm = th->getJVM();
+
+  // For now, we don't do anything special,
+  // just call the requested 'run()' method...
+  UserClass * cl = JavaObject::getClass(obj)->asClass();
+  const UTF8 * runName = cl->classLoader->hashUTF8->lookupAsciiz("run");
+  const UTF8 * runType = cl->classLoader->hashUTF8->lookupAsciiz("()Ljava/lang/Object;");
+  assert(cl); assert(runName); assert(runType);
+
+  JavaMethod * meth = cl->lookupMethodDontThrow(runName, runType, false, true, 0);
+  assert(meth);
+
+  res = meth->invokeJavaObjectVirtual(vm, cl, obj, obj);
+
+  RETURN_FROM_JNI((jobject)th->pushJNIRef(res));
+
+  END_JNI_EXCEPTION
 }
 
 JNIEXPORT jobject JNICALL
 JVM_GetInheritedAccessControlContext(JNIEnv *env, jclass cls) {
-  NYI();
+  // No AccessControlContext supported yet
+  return NULL;
 }
 
 
 JNIEXPORT jobject JNICALL
 JVM_GetStackAccessControlContext(JNIEnv *env, jclass cls) {
-  NYI();
+  // No AccessControlContext supported yet
+  return NULL;
 }
 
 /*





More information about the vmkit-commits mailing list