[vmkit-commits] [PATCH] OpenJDK.inc: Implement raw monitors
Will Dietz
wdietz2 at illinois.edu
Wed Oct 26 18:57:36 PDT 2011
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;
+ Lock* L = (Lock*)malloc(sizeof(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
More information about the vmkit-commits
mailing list