[vmkit-commits] [vmkit] r143132 - /vmkit/trunk/lib/J3/ClassLib/OpenJDK/OpenJDK.inc

Will Dietz wdietz2 at illinois.edu
Thu Oct 27 12:17:06 PDT 2011


Author: wdietz2
Date: Thu Oct 27 14:17:05 2011
New Revision: 143132

URL: http://llvm.org/viewvc/llvm-project?rev=143132&view=rev
Log:
OpenJDK.inc: Implement raw monitors

Modified:
    vmkit/trunk/lib/J3/ClassLib/OpenJDK/OpenJDK.inc

Modified: vmkit/trunk/lib/J3/ClassLib/OpenJDK/OpenJDK.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/ClassLib/OpenJDK/OpenJDK.inc?rev=143132&r1=143131&r2=143132&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/ClassLib/OpenJDK/OpenJDK.inc (original)
+++ vmkit/trunk/lib/J3/ClassLib/OpenJDK/OpenJDK.inc Thu Oct 27 14:17:05 2011
@@ -1534,25 +1534,45 @@
   NYI();
 }
 
-typedef pthread_mutex_t Lock;
 JNIEXPORT void * JNICALL
 JVM_RawMonitorCreate(void) {
-  NYI();
+  BEGIN_JNI_EXCEPTION
+  pthread_mutex_t* L = (pthread_mutex_t*)malloc(sizeof(pthread_mutex_t));
+  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
+  pthread_mutex_t* L = (pthread_mutex_t*)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
+  pthread_mutex_t* L = (pthread_mutex_t*)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
+  pthread_mutex_t* L = (pthread_mutex_t*)mon;
+  pthread_mutex_unlock(L);
+  RETURN_VOID_FROM_JNI;
+  END_JNI_EXCEPTION
 }
 
 /*





More information about the vmkit-commits mailing list