[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