[vmkit-commits] [vmkit] r72763 - /vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Wed Jun 3 03:28:24 PDT 2009


Author: geoffray
Date: Wed Jun  3 05:28:16 2009
New Revision: 72763

URL: http://llvm.org/viewvc/llvm-project?rev=72763&view=rev
Log:
Bugfix for MonitorExit and MonitorEnter.


Modified:
    vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp

Modified: vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp?rev=72763&r1=72762&r2=72763&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp Wed Jun  3 05:28:16 2009
@@ -2493,11 +2493,16 @@
   
   BEGIN_JNI_EXCEPTION
   
-  ((JavaObject*)obj)->acquire();
-  return 1;
+  if (obj) {
+    ((JavaObject*)obj)->acquire();
+    return 0;
+  } else {
+    return -1;
+  }
+
 
   END_JNI_EXCEPTION
-  return 0;
+  return -1;
 }
 
 
@@ -2505,11 +2510,22 @@
 
   BEGIN_JNI_EXCEPTION
 
-  ((JavaObject*)obj)->release();
-  return 1;
+  JavaObject* Obj = (JavaObject*)obj;
+ 
+  if (Obj) {
+
+    if (!Obj->owner()) {
+      JavaThread::get()->getJVM()->illegalMonitorStateException(Obj);    
+    }
+  
+    Obj->release();
+    return 0;
+  } else {
+    return -1;
+  }
 
   END_JNI_EXCEPTION
-  return 0;
+  return -1;
 }
 
 





More information about the vmkit-commits mailing list