[vmkit-commits] [vmkit] r180472 - java.lang.VMClass.getEnclosingClass() implemented for GNU ClassPath.

Peter Senna Tschudin peter.senna at gmail.com
Thu Apr 25 10:15:44 PDT 2013


Author: peter.senna
Date: Thu Apr 25 12:14:03 2013
New Revision: 180472

URL: http://llvm.org/viewvc/llvm-project?rev=180472&view=rev
Log:
java.lang.VMClass.getEnclosingClass() implemented for GNU ClassPath.
(cherry picked from commit 22e31da48018074033d0485984d66671b39a551b)

Modified:
    vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathVMClass.inc

Modified: vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathVMClass.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathVMClass.inc?rev=180472&r1=180471&r2=180472&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathVMClass.inc (original)
+++ vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathVMClass.inc Thu Apr 25 12:14:03 2013
@@ -579,4 +579,22 @@ JavaObjectClass* klass) {
   return res;
 }
 
+// Returns the class which immediately encloses the specified class.
+// If the class is a top-level class, this method returns null.
+JNIEXPORT JavaObject* JNICALL Java_java_lang_VMClass_getEnclosingClass(
+#ifdef NATIVE_JNI
+JNIEnv *env,
+jclass clazz,
+#endif
+JavaObjectClass* Cl) {
+  llvm_gcroot(Cl, 0);
+
+  UserCommonClass* cl = JavaObjectClass::getClass(Cl);
+  if (!cl->isClass()) return NULL;
+
+  UserClass *outerCl = cl->asClass()->getOuterClass();
+  Jnjvm* vm = JavaThread::get()->getJVM();
+  return outerCl->getClassDelegatee(vm, NULL);
+}
+
 }





More information about the vmkit-commits mailing list