[vmkit-commits] [PATCH] OpenJDK.inc: Implement raw monitors

Nicolas Geoffray nicolas.geoffray at gmail.com
Thu Oct 27 09:59:51 PDT 2011


On Thu, Oct 27, 2011 at 3:57 AM, Will Dietz <wdietz2 at illinois.edu> wrote:

> Inlined below.
>
> ~Will
>
>
> >From 832268e746c259269095f3354cb0835c02fe525c Mon Sep 17 00:00:00 2001
> From: Will Dietz <w at wdtz.org>
> Date: Wed, 26 Oct 2011 20:53:21 -0500
> Subject: [PATCH 2/3] OpenJDK.inc: Implement raw monitors
>
> ---
>  lib/J3/ClassLib/OpenJDK/OpenJDK.inc |   30 ++++++++++++++++++++++++++----
>  1 files changed, 26 insertions(+), 4 deletions(-)
>
> diff --git a/lib/J3/ClassLib/OpenJDK/OpenJDK.inc
> b/lib/J3/ClassLib/OpenJDK/OpenJDK.inc
> index 2380abd..eded2e1 100644
> --- a/lib/J3/ClassLib/OpenJDK/OpenJDK.inc
> +++ b/lib/J3/ClassLib/OpenJDK/OpenJDK.inc
> @@ -1532,22 +1532,44 @@ jio_vfprintf(FILE *, const char *fmt, va_list args)
> {
>  typedef pthread_mutex_t Lock;
>  JNIEXPORT void * JNICALL
>  JVM_RawMonitorCreate(void) {
> -  NYI();
> +  BEGIN_JNI_EXCEPTION
> +  mvm::ThreadAllocator allocator;
>

Remove the allocator.


> +  Lock* L = (Lock*)malloc(sizeof(Lock));
>

Why a Lock? Could that just be a pthread_mutex_t? Plus, the way you're using
it below is quite scary if you say it's a Lock :)

+  pthread_mutex_init(L, NULL);
> +
> +  RETURN_FROM_JNI(L);
> +  END_JNI_EXCEPTION
> +
> +  return 0;
>  }
>
>  JNIEXPORT void JNICALL
>  JVM_RawMonitorDestroy(void *mon) {
> -  NYI();
> +  BEGIN_JNI_EXCEPTION
> +  Lock* L = (Lock*)mon;
> +  pthread_mutex_destroy(L);
> +  free(L);
> +  RETURN_VOID_FROM_JNI;
> +  END_JNI_EXCEPTION
>  }
>
>  JNIEXPORT jint JNICALL
>  JVM_RawMonitorEnter(void *mon) {
> -  NYI();
> +  BEGIN_JNI_EXCEPTION
> +  Lock* L = (Lock*)mon;
> +  jint res = pthread_mutex_lock(L);
> +  RETURN_FROM_JNI(res);
> +  END_JNI_EXCEPTION
> +  return 0;
>  }
>
>  JNIEXPORT void JNICALL
>  JVM_RawMonitorExit(void *mon) {
> -  NYI();
> +  BEGIN_JNI_EXCEPTION
> +  Lock* L = (Lock*)mon;
> +  pthread_mutex_unlock(L);
> +  RETURN_VOID_FROM_JNI;
> +  END_JNI_EXCEPTION
>  }
>
>  /*
> --
> 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/4fe242b0/attachment.html>


More information about the vmkit-commits mailing list