Looks good!<br><br><div class="gmail_quote">On Thu, Nov 3, 2011 at 3:27 PM, Will Dietz <span dir="ltr"><<a href="mailto:wdietz2@illinois.edu">wdietz2@illinois.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Inlined below.<br>
<br>
Thanks!<br>
<br>
~Will<br>
<br>
>From 162150b6387d3f750eca94a85dbcd9345cb3ccdc Mon Sep 17 00:00:00 2001<br>
From: Will Dietz <<a href="mailto:w@wdtz.org">w@wdtz.org</a>><br>
Date: Wed, 2 Nov 2011 22:14:42 -0500<br>
Subject: [PATCH 07/17] Impl JVM_GetClass{Modifiers,GetClassAccessFlags}<br>
<br>
---<br>
lib/J3/ClassLib/OpenJDK/OpenJDK.inc | 40 +++++++++++++++++++++++++++++++++-<br>
1 files changed, 38 insertions(+), 2 deletions(-)<br>
<br>
diff --git a/lib/J3/ClassLib/OpenJDK/OpenJDK.inc<br>
b/lib/J3/ClassLib/OpenJDK/OpenJDK.inc<br>
index 3d157ed..8e4e737 100644<br>
--- a/lib/J3/ClassLib/OpenJDK/OpenJDK.inc<br>
+++ b/lib/J3/ClassLib/OpenJDK/OpenJDK.inc<br>
@@ -1223,7 +1223,27 @@ JVM_GetComponentType(JNIEnv *env, jclass cls) {<br>
<br>
JNIEXPORT jint JNICALL<br>
JVM_GetClassModifiers(JNIEnv *env, jclass cls) {<br>
- NYI();<br>
+ JavaObject * Cl = 0;<br>
+ llvm_gcroot(Cl, 0);<br>
+ BEGIN_JNI_EXCEPTION<br>
+<br>
+ Cl = *(JavaObject**)cls;<br>
+<br>
+ Jnjvm* vm = JavaThread::get()->getJVM();<br>
+ UserClass* cl = UserCommonClass::resolvedImplClass(vm, Cl,<br>
false)->asClass();;<br>
+<br>
+ jint res = cl->getAccess();<br>
+<br>
+ if (isEnum(res) && cl->getSuper() != vm->upcalls->EnumClass) {<br>
+ // javac may put that flag to inner classes of enum classes.<br>
+ res &= ~ACC_ENUM;<br>
+ }<br>
+<br>
+ RETURN_FROM_JNI(res);<br>
+<br>
+ END_JNI_EXCEPTION<br>
+<br>
+ return 0;<br>
}<br>
<br>
JNIEXPORT jobjectArray JNICALL<br>
@@ -1495,7 +1515,23 @@ JVM_GetClassDeclaredConstructors(JNIEnv *env,<br>
jclass ofClass, jboolean publicOnl<br>
valid. */<br>
JNIEXPORT jint JNICALL<br>
JVM_GetClassAccessFlags(JNIEnv *env, jclass cls) {<br>
- NYI();<br>
+ JavaObject * Cl = 0;<br>
+ llvm_gcroot(Cl, 0);<br>
+ BEGIN_JNI_EXCEPTION<br>
+<br>
+ Cl = *(JavaObject**)cls;<br>
+<br>
+ Jnjvm* vm = JavaThread::get()->getJVM();<br>
+ UserCommonClass* cl = UserCommonClass::resolvedImplClass(vm, Cl, false);<br>
+ assert(cl->isClass());<br>
+<br>
+ // TODO: Verify this is doing what this function is supposed to do<br>
+ // (In particular regarding the comment block above)<br>
+ RETURN_FROM_JNI(cl->asClass()->access);<br>
+<br>
+ END_JNI_EXCEPTION<br>
+<br>
+ return 0;<br>
}<br>
<br>
/* The following two reflection routines are still needed due to<br>
startup time issues */<br>
<span class="HOEnZb"><font color="#888888">--<br>
1.7.5.1<br>
_______________________________________________<br>
vmkit-commits mailing list<br>
<a href="mailto:vmkit-commits@cs.uiuc.edu">vmkit-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/vmkit-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/vmkit-commits</a><br>
</font></span></blockquote></div><br>