[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