[vmkit-commits] [PATCH] OpenJDK.inc: Implement JVM_FindPrimitiveClass
Nicolas Geoffray
nicolas.geoffray at gmail.com
Thu Oct 27 09:57:20 PDT 2011
Looks good!
On Thu, Oct 27, 2011 at 3:56 AM, Will Dietz <wdietz2 at illinois.edu> wrote:
> Inlined below.
>
> ~Will
>
>
> >From e25a607974c98c8c01107ac3a72b666160f0023c Mon Sep 17 00:00:00 2001
> From: Will Dietz <w at wdtz.org>
> Date: Wed, 26 Oct 2011 20:52:26 -0500
> Subject: [PATCH 1/3] OpenJDK.inc: Implement JVM_FindPrimitiveClass
>
> ---
> lib/J3/ClassLib/OpenJDK/OpenJDK.inc | 43
> ++++++++++++++++++++++++++++++++++-
> 1 files changed, 42 insertions(+), 1 deletions(-)
>
> diff --git a/lib/J3/ClassLib/OpenJDK/OpenJDK.inc
> b/lib/J3/ClassLib/OpenJDK/OpenJDK.inc
> index e5690a5..2380abd 100644
> --- a/lib/J3/ClassLib/OpenJDK/OpenJDK.inc
> +++ b/lib/J3/ClassLib/OpenJDK/OpenJDK.inc
> @@ -549,9 +549,50 @@ JVM_GetCallerClass(JNIEnv *env, int n) {
> * utf: class name
> */
>
> +
> +const struct {
> + const char * name;
> + char id;
> +} static PrimMap[] = {
> + { "boolean", 'Z' },
> + { "byte" , 'B' },
> + { "char" , 'C' },
> + { "short" , 'S' },
> + { "int" , 'I' },
> + { "long" , 'J' },
> + { "float" , 'F' },
> + { "double" , 'D' },
> + { "void" , 'V' }
> +};
> +const static unsigned PrimMapSize = sizeof(PrimMap)/sizeof(PrimMap[0]);
> +
> JNIEXPORT jclass JNICALL
> JVM_FindPrimitiveClass(JNIEnv *env, const char *utf) {
> - NYI();
> + JavaObject* res = 0;
> + llvm_gcroot(res, 0);
> +
> + BEGIN_JNI_EXCEPTION
> +
> + Jnjvm* vm = JavaThread::get()->getJVM();
> +
> + UserClassPrimitive * prim = 0;
> + for(unsigned i = 0; i < PrimMapSize; ++i) {
> + if(!strcmp(PrimMap[i].name, utf)) {
> + prim = UserClassPrimitive::byteIdToPrimitive(PrimMap[i].id,
> vm->upcalls);
> + break;
> + }
> + }
> + if (!prim) {
> + fprintf(stderr, "Unsupported primitive \"%s\"! Missing table
> entry?\n", utf);
> + }
> + assert(prim && "Invalid Primitive in JVM_FindPrimitiveClass");
> +
> + res = (JavaObject*)prim->getClassDelegateePtr(vm);
> + RETURN_FROM_JNI((jclass)res);
> +
> + END_JNI_EXCEPTION
> +
> + return 0;
> }
>
> /*
> --
> 1.7.5.1
> _______________________________________________
> vmkit-commits mailing list
> vmkit-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/vmkit-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/vmkit-commits/attachments/20111027/195ffa3b/attachment.html>
More information about the vmkit-commits
mailing list