Looks good! With one comment.<br><br><div class="gmail_quote">On Thu, Nov 3, 2011 at 3:26 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 84f0b389681480cafbb4cd096f160504e223f543 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 20:41:10 -0500<br>
Subject: [PATCH 05/17] Impl<br>
 JVM_{FindClassFromClassLoader,FindClassFromBootLoader,FindLoadedClass}<br>
<br>
---<br>
 lib/J3/ClassLib/OpenJDK/OpenJDK.inc |   66 +++++++++++++++++++++++++++++++++--<br>
 1 files changed, 63 insertions(+), 3 deletions(-)<br>
<br>
diff --git a/lib/J3/ClassLib/OpenJDK/OpenJDK.inc<br>
b/lib/J3/ClassLib/OpenJDK/OpenJDK.inc<br>
index 9305e66..60db37a 100644<br>
--- a/lib/J3/ClassLib/OpenJDK/OpenJDK.inc<br>
+++ b/lib/J3/ClassLib/OpenJDK/OpenJDK.inc<br>
@@ -962,12 +962,52 @@ JVM_ResolveClass(JNIEnv *env, jclass cls) {<br>
 JNIEXPORT jclass JNICALL<br>
 JVM_FindClassFromClassLoader(JNIEnv *env, const char *name, jboolean init,<br>
                              jobject _loader, jboolean throwError) {<br>
-  NYI();<br>
+  BEGIN_JNI_EXCEPTION<br>
+<br>
+  JavaObject * loader = _loader ? *(JavaObject**)_loader : 0;<br>
+  llvm_gcroot(loader, 0);<br>
+<br>
+  jclass res;<br>
+<br>
+  Jnjvm* vm = JavaThread::get()->getJVM();<br>
+  JnjvmClassLoader* JCL = NULL;<br>
+  JCL = JnjvmClassLoader::getJnjvmLoaderFromJavaObject(loader, vm);<br></blockquote><div><br></div><div>Merge the two lines above.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

+<br>
+  CommonClass * Cl = JCL->loadClassFromAsciiz(name, true, throwError);<br>
+  if (Cl) {<br>
+    if (init && Cl->asClass())<br>
+      Cl->asClass()->initialiseClass(vm);<br>
+    res = (jclass)Cl->getClassDelegateePtr(vm);<br>
+  }<br>
+  else {<br>
+    vm->classNotFoundException(vm->asciizToStr(name));<br>
+  }<br>
+<br>
+  RETURN_FROM_JNI(res);<br>
+<br>
+  END_JNI_EXCEPTION<br>
+<br>
+  return 0;<br>
 }<br>
<br>
 JNIEXPORT jclass JNICALL<br>
 JVM_FindClassFromBootLoader(JNIEnv *env, const char *name) {<br>
-  NYI();<br>
+  BEGIN_JNI_EXCEPTION<br>
+<br>
+  jclass res = 0;<br>
+<br>
+  Jnjvm* vm = JavaThread::get()->getJVM();<br>
+  JnjvmClassLoader* JCL = vm->bootstrapLoader;<br>
+<br>
+  CommonClass * Cl = JCL->loadClassFromAsciiz(name, true, false);<br>
+  if (Cl) {<br>
+    res = (jclass)Cl->getClassDelegateePtr(vm);<br>
+  }<br>
+  RETURN_FROM_JNI(res);<br>
+<br>
+  END_JNI_EXCEPTION<br>
+<br>
+  return 0;<br>
 }<br>
<br>
 /*<br>
@@ -982,7 +1022,27 @@ JVM_FindClassFromClass(JNIEnv *env, const char<br>
*name, jboolean init,<br>
 /* Find a loaded class cached by the VM */<br>
 JNIEXPORT jclass JNICALL<br>
 JVM_FindLoadedClass(JNIEnv *env, jobject _loader, jstring name) {<br>
-  NYI();<br>
+  JavaObject * loader = 0;<br>
+  llvm_gcroot(loader, 0);<br>
+  BEGIN_JNI_EXCEPTION<br>
+<br>
+  Jnjvm* vm = JavaThread::get()->getJVM();<br>
+  JnjvmClassLoader* JCL = NULL;<br>
+<br>
+  JavaString * str = *(JavaString**)name;<br>
+<br>
+  loader = *(JavaObject**)_loader;<br>
+<br>
+  CommonClass * Cl = 0;<br>
+<br>
+  JCL = JnjvmClassLoader::getJnjvmLoaderFromJavaObject(loader, vm);<br>
+  if (JCL)<br>
+   Cl = JCL->lookupClassFromJavaString(str);<br>
+  jclass res = Cl ? (jclass)Cl->getClassDelegateePtr(vm) : 0;<br>
+  RETURN_FROM_JNI(res);<br>
+<br>
+  END_JNI_EXCEPTION<br>
+<br>
 }<br>
<br>
 /* Define a class */<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>