[vmkit-commits] [vmkit] r180475 - java.lang.VMClass.getEnclosingClass() implementation updated.

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


Author: peter.senna
Date: Thu Apr 25 12:14:28 2013
New Revision: 180475

URL: http://llvm.org/viewvc/llvm-project?rev=180475&view=rev
Log:
java.lang.VMClass.getEnclosingClass() implementation updated.
(cherry picked from commit 5265ba1e364a904f2b6b2025f4f2bfc9a3314e4b)

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

Modified: vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathReflect.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathReflect.h?rev=180475&r1=180474&r2=180475&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathReflect.h (original)
+++ vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathReflect.h Thu Apr 25 12:14:28 2013
@@ -70,6 +70,7 @@ public:
   static ArrayObject* getInterfaces(JavaObjectClass* Cl);
   static JavaObject* getDeclaringClass(JavaObjectClass* Cl);
   static int getModifiers(JavaObjectClass* Cl);
+  static JavaObject* getEnclosingClass(JavaObjectClass* Cl);
 };
 
 class JavaObjectVMField : public JavaObject {

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=180475&r1=180474&r2=180475&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathVMClass.inc (original)
+++ vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathVMClass.inc Thu Apr 25 12:14:28 2013
@@ -543,14 +543,17 @@ JNIEnv *env,
 jclass clazz,
 #endif
 JavaObjectClass* Cl) {
-  llvm_gcroot(Cl, 0);
+	JavaObject* res = 0;
+	llvm_gcroot(Cl, 0);
+	llvm_gcroot(res, 0);
 
-  UserCommonClass* cl = JavaObjectClass::getClass(Cl);
-  if (!cl->isClass()) return NULL;
+	BEGIN_NATIVE_EXCEPTION(0)
 
-  UserClass *outerCl = cl->asClass()->getOuterClass();
-  Jnjvm* vm = JavaThread::get()->getJVM();
-  return outerCl->getClassDelegatee(vm, NULL);
+	res = JavaObjectClass::getEnclosingClass(Cl);
+
+	END_NATIVE_EXCEPTION
+
+	return res;
 }
 
 }

Modified: vmkit/trunk/lib/j3/ClassLib/Reflect.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/ClassLib/Reflect.inc?rev=180475&r1=180474&r2=180475&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/ClassLib/Reflect.inc (original)
+++ vmkit/trunk/lib/j3/ClassLib/Reflect.inc Thu Apr 25 12:14:28 2013
@@ -249,4 +249,20 @@ int32_t JavaObjectClass::getModifiers(Ja
   return res;
 }
 
+JavaObject* JavaObjectClass::getEnclosingClass(JavaObjectClass* Cl)
+{
+	JavaObject* res = 0;
+	llvm_gcroot(Cl, 0);
+	llvm_gcroot(res, 0);
+
+	Jnjvm* vm = JavaThread::get()->getJVM();
+	UserCommonClass* cl = UserCommonClass::resolvedImplClass(vm, Cl, false);
+	if (cl->isClass()) {
+		UserClass *outerCl = cl->asClass()->getOuterClass();
+		if (outerCl != NULL)
+			res = outerCl->getClassDelegatee(vm, NULL);
+	}
+	return res;
+}
+
 } // end namespace j3





More information about the vmkit-commits mailing list