[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