[vmkit-commits] [vmkit] r82031 - /vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Wed Sep 16 02:02:30 PDT 2009


Author: geoffray
Date: Wed Sep 16 04:02:30 2009
New Revision: 82031

URL: http://llvm.org/viewvc/llvm-project?rev=82031&view=rev
Log:
Update comments and set jnjvmStringLookup as being a native
function.


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

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp Wed Sep 16 04:02:30 2009
@@ -377,7 +377,7 @@
   return res;
 }
 
-// Does not call Java code.
+// Does not call Java code. Can not yield a GC.
 extern "C" void jnjvmEndJNI(uint32** oldLRN, void** oldBuffer) {
   JavaThread* th = JavaThread::get();
   
@@ -391,15 +391,9 @@
   th->currentAddedReferences = *oldLRN;
 
 
-#ifdef DWARF_EXCEPTIONS
-  // If there's an exception, throw it now.
-  if (JavaThread::get()->pendingException) {
-    th->throwPendingException();
-  }
-#endif
 }
 
-// Never throws.
+// Never throws. Does not call Java code. Can not yied a GC.
 extern "C" void** jnjvmStartJNI(uint32* localReferencesNumber,
                                 uint32** oldLocalReferencesNumber,
                                 void* newBuffer, void** oldBuffer) {
@@ -419,17 +413,25 @@
 
 // Never throws.
 extern "C" void jnjvmJavaObjectAquire(JavaObject* obj) {
+  BEGIN_NATIVE_EXCEPTION(1)
+  
   llvm_gcroot(obj, 0);
   obj->acquire();
+
+  END_NATIVE_EXCEPTION
 }
 
 // Never throws.
 extern "C" void jnjvmJavaObjectRelease(JavaObject* obj) {
+  BEGIN_NATIVE_EXCEPTION(1)
+  
   llvm_gcroot(obj, 0);
   obj->release();
+  
+  END_NATIVE_EXCEPTION
 }
 
-// Does not call any Java code.
+// Does not call any Java code. Can not yield a GC.
 extern "C" void jnjvmThrowException(JavaObject* obj) {
   return JavaThread::get()->throwException(obj);
 }
@@ -629,12 +631,20 @@
 }
 
 extern "C" void* jnjvmStringLookup(UserClass* cl, uint32 index) {
+  
+  JavaString** str = 0;
+  
+  BEGIN_NATIVE_EXCEPTION(1)
+  
   UserConstantPool* ctpInfo = cl->getConstantPool();
   const UTF8* utf8 = ctpInfo->UTF8At(ctpInfo->ctpDef[index]);
-  JavaString** str = cl->classLoader->UTF8ToStr(utf8);
+  str = cl->classLoader->UTF8ToStr(utf8);
 #if defined(ISOLATE_SHARING) || !defined(ISOLATE)
   ctpInfo->ctpRes[index] = str;
 #endif
+  
+  END_NATIVE_EXCEPTION
+
   return (void*)str;
 }
 





More information about the vmkit-commits mailing list