[vmkit-commits] [vmkit] r67300 - /vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Thu Mar 19 03:26:46 PDT 2009
Author: geoffray
Date: Thu Mar 19 05:26:43 2009
New Revision: 67300
URL: http://llvm.org/viewvc/llvm-project?rev=67300&view=rev
Log:
Who knew that initialization of simple classes may in fact run complex code?
Modified:
vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp
Modified: vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp?rev=67300&r1=67299&r2=67300&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp Thu Mar 19 05:26:43 2009
@@ -817,6 +817,13 @@
LOAD_CLASS(upcalls->newVMThread);
ptr = ((uintptr_t*)upcalls->newVMThread->getVirtualVT());
ptr[VT_DESTRUCTOR_OFFSET] = (uintptr_t)JavaObjectVMThread::staticDestructor;
+
+#ifdef SERVICE
+ if (!IsolateID)
+#endif
+ // The initialization code of the classes initialized below may require
+ // to get the Java thread, so we create the Java thread object first.
+ mapInitialThread();
LOAD_CLASS(upcalls->newStackTraceElement);
LOAD_CLASS(upcalls->newVMThrowable);
@@ -860,13 +867,10 @@
LOAD_CLASS(upcalls->ClassNotFoundException);
#undef LOAD_CLASS
-#ifdef SERVICE
- if (!IsolateID)
-#endif
- mapInitialThread();
loadAppClassLoader();
JavaObject* obj = JavaThread::get()->currentThread();
JavaObject* javaLoader = appClassLoader->getJavaClassLoader();
+
#ifdef SERVICE
if (!IsolateID)
#endif
More information about the vmkit-commits
mailing list