[vmkit-commits] [PATCH] Impl JVM_NewInstanceFromConstructor
Will Dietz
wdietz2 at illinois.edu
Sun Nov 6 18:51:26 PST 2011
On Fri, Nov 4, 2011 at 4:23 PM, Nicolas Geoffray
<nicolas.geoffray at gmail.com> wrote:
> Looks good! This is again very similar to what is in classpath. I know I
> said that you should not worry about duplicating code, but after reviewing a
> few of your changes, if you could somehow try to share when you can, that'd
> be great :)
> But feel free to ignore for now, if that's on your way of making the
> progress you want.
> Nicolas
Good call.
Updated patch inlined below. Much simpler :).
~Will
>From b2e31a674c06cb9dc2a19c42d97053e91590f5b0 Mon Sep 17 00:00:00 2001
From: Will Dietz <w at wdtz.org>
Date: Sun, 6 Nov 2011 01:33:34 -0500
Subject: [PATCH 4/8] Impl JVM_NewInstanceFromConstructor, using existing
Classpath code.
---
lib/J3/ClassLib/OpenJDK/OpenJDK.inc | 22 +++++++++++++++++++++-
1 files changed, 21 insertions(+), 1 deletions(-)
diff --git a/lib/J3/ClassLib/OpenJDK/OpenJDK.inc
b/lib/J3/ClassLib/OpenJDK/OpenJDK.inc
index 4f25fb0..15029ea 100644
--- a/lib/J3/ClassLib/OpenJDK/OpenJDK.inc
+++ b/lib/J3/ClassLib/OpenJDK/OpenJDK.inc
@@ -1464,7 +1464,27 @@ JVM_InvokeMethod(JNIEnv *env, jobject method,
jobject _obj, jobjectArray args0)
*/
JNIEXPORT jobject JNICALL
JVM_NewInstanceFromConstructor(JNIEnv *env, jobject _c, jobjectArray args0) {
- NYI();
+ JavaObject * ret = 0;
+ JavaObjectConstructor * c = 0;
+ llvm_gcroot(ret, 0);
+ llvm_gcroot(c, 0);
+
+ BEGIN_JNI_EXCEPTION
+
+ Jnjvm* vm = JavaThread::get()->getJVM();
+
+ c = *(JavaObjectConstructor**)_c;
+
+ ret = proceedConstructor(
+ c,
+ args0? *(ArrayObject**)args0 : 0,
+ JavaObjectConstructor::getClass(c)->getDelegatee(),
+ 0 /* unused */ );
+
+ RETURN_FROM_JNI((jobject)th->pushJNIRef(ret));
+ END_JNI_EXCEPTION
+
+ return 0;
}
/*
--
1.7.5.1
More information about the vmkit-commits
mailing list