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>