Looks good!<br><br><div class="gmail_quote">On Thu, Nov 3, 2011 at 3:39 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>
~Will<br>
<br>
>From 1d583aa7435e95f243c2e27008c31f52d322938b Mon Sep 17 00:00:00 2001<br>
From: Will Dietz <<a href="mailto:w@wdtz.org">w@wdtz.org</a>><br>
Date: Thu, 3 Nov 2011 09:10:11 -0500<br>
Subject: [PATCH 17/17] Impl JVM_DefineClass and variants.  No support for<br>
 source or verification yet.<br>
<br>
---<br>
 lib/J3/ClassLib/OpenJDK/OpenJDK.inc |   31 ++++++++++++++++++++++++++++---<br>
 1 files changed, 28 insertions(+), 3 deletions(-)<br>
<br>
diff --git a/lib/J3/ClassLib/OpenJDK/OpenJDK.inc<br>
b/lib/J3/ClassLib/OpenJDK/OpenJDK.inc<br>
index 954234d..c08908b 100644<br>
--- a/lib/J3/ClassLib/OpenJDK/OpenJDK.inc<br>
+++ b/lib/J3/ClassLib/OpenJDK/OpenJDK.inc<br>
@@ -1114,7 +1114,30 @@ JVM_FindLoadedClass(JNIEnv *env, jobject<br>
_loader, jstring name) {<br>
 JNIEXPORT jclass JNICALL<br>
 JVM_DefineClass(JNIEnv *env, const char *name, jobject _loader, const<br>
jbyte *buf,<br>
                 jsize len, jobject pd) {<br>
-  NYI();<br>
+  JavaObject * loader = 0;<br>
+  llvm_gcroot(loader, 0);<br>
+  BEGIN_JNI_EXCEPTION<br>
+<br>
+  loader = _loader ? *(JavaObject**)_loader : 0;<br>
+<br>
+  jclass res;<br>
+<br>
+  Jnjvm* vm = JavaThread::get()->getJVM();<br>
+  JnjvmClassLoader* JCL = NULL;<br>
+  JCL = JnjvmClassLoader::getJnjvmLoaderFromJavaObject(loader, vm);<br>
+<br>
+  ClassBytes * bytes = new (JCL->allocator, len) ClassBytes(len);<br>
+  memcpy(bytes->elements,buf,len);<br>
+  const UTF8* utfName = JCL->asciizConstructUTF8(name);<br>
+  UserClass *cl = JCL->constructClass(utfName, bytes);<br>
+<br>
+  if (cl) res = (jclass)cl->getClassDelegateePtr(vm);<br>
+<br>
+  RETURN_FROM_JNI(res);<br>
+<br>
+  END_JNI_EXCEPTION<br>
+<br>
+  return 0;<br>
 }<br>
<br>
 /* Define a class with a source (added in JDK1.5) */<br>
@@ -1122,7 +1145,8 @@ JNIEXPORT jclass JNICALL<br>
 JVM_DefineClassWithSource(JNIEnv *env, const char *name, jobject loader,<br>
                           const jbyte *buf, jsize len, jobject pd,<br>
                           const char *source) {<br>
-  NYI();<br>
+  // Discard source for now<br>
+  return JVM_DefineClass(env, name, loader, buf, len, pd);<br>
 }<br>
<br>
 /* Define a class with a source with conditional verification (added HSX 14)<br>
@@ -1134,7 +1158,8 @@ JNIEXPORT jclass JNICALL<br>
 JVM_DefineClassWithSourceCond(JNIEnv *env, const char *name, jobject loader,<br>
                               const jbyte *buf, jsize len, jobject pd,<br>
                               const char *source, jboolean verify) {<br>
-  NYI();<br>
+  // Discard source and verification<br>
+  return JVM_DefineClass(env, name, loader, buf, len, pd);<br>
 }<br>
<br>
 /*<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>